Coverage Report

Created: 2024-04-19 06:04

/builds/xfbs/passgen/src/tests/literal.c
Line
Count
Source
1
#include "passgen/pattern/literal.h"
2
#include "tests.h"
3
4
1
test_result test_literal_init(void) {
5
1
    passgen_pattern_literal literal = {0};
6
1
    memset(&literal, 1, sizeof(literal));
7
1
8
1
    passgen_pattern_literal_init(&literal);
9
1
    assert_eq(literal.count, 0);
10
1
    assert_eq(literal.tainted, 0);
11
1
12
1
    return test_ok;
13
1
}
14
15
1
test_result test_literal_append(void) {
16
1
    passgen_pattern_literal literal;
17
1
    const int32_t codepoints[] =
18
1
        {0xabcd, 0x1234, 0x65ac, 0xdaa0, 0xdead, 0xbeef, 0xcafe, 0};
19
1
20
1
    passgen_pattern_literal_init(&literal);
21
1
    assert_eq(literal.count, 0);
22
1
    assert_eq(literal.tainted, 0);
23
1
24
8
    for(size_t i = 0; i < 7; 
i++7
) {
25
7
        assert_eq(passgen_pattern_literal_append(&literal, codepoints[i]), 0);
26
7
        assert_eq(literal.count, i + 1);
27
7
        assert_eq(literal.tainted, 0);
28
7
29
35
        for(size_t j = 0; j <= i; 
j++28
) {
30
28
            assert_eq(literal.codepoints[j], codepoints[j]);
31
28
        }
32
7
    }
33
1
34
1
    return test_ok;
35
1
}
36
37
1
test_result test_literal_append_full(void) {
38
1
    passgen_pattern_literal literal;
39
1
    const int32_t codepoint = 0xabcd;
40
1
41
1
    passgen_pattern_literal_init(&literal);
42
1
    assert_eq(literal.count, 0);
43
1
    assert_eq(literal.tainted, 0);
44
1
45
8
    for(size_t i = 0; i < 7; 
i++7
) {
46
7
        assert_eq(passgen_pattern_literal_append(&literal, codepoint), 0);
47
7
    }
48
1
49
1
    assert_eq(passgen_pattern_literal_append(&literal, codepoint), 1);
50
1
    assert_eq(literal.count, 7);
51
1
    assert_eq(literal.tainted, 0);
52
1
53
1
    return test_ok;
54
1
}
55
56
1
test_result test_literal_taint(void) {
57
1
    passgen_pattern_literal literal;
58
1
59
1
    passgen_pattern_literal_init(&literal);
60
1
    assert_eq(literal.count, 0);
61
1
    assert_eq(literal.tainted, 0);
62
1
63
1
    passgen_pattern_literal_taint(&literal);
64
1
    assert_eq(literal.count, 0);
65
1
    assert_eq(literal.tainted, 1);
66
1
67
1
    return test_ok;
68
1
}
69
70
1
test_result test_literal_append_taint(void) {
71
1
    passgen_pattern_literal literal;
72
1
    const int32_t codepoint = 0xabcd;
73
1
74
1
    passgen_pattern_literal_init(&literal);
75
1
    assert_eq(literal.count, 0);
76
1
    assert_eq(literal.tainted, 0);
77
1
78
6
    for(size_t i = 0; i < 5; 
i++5
) {
79
5
        assert_eq(passgen_pattern_literal_append(&literal, codepoint), 0);
80
5
    }
81
1
82
1
    passgen_pattern_literal_taint(&literal);
83
1
    assert_eq(literal.count, 5);
84
1
    assert_eq(literal.tainted, 1);
85
1
86
1
    assert_eq(passgen_pattern_literal_append(&literal, codepoint), 1);
87
1
    assert_eq(literal.count, 5);
88
1
    assert_eq(literal.tainted, 1);
89
1
90
1
    return test_ok;
91
1
}