Completed
Branch master (6959b7)
by Pieter Epeüs
22:59 queued 19:07
created

tests/unit/not.spec.js   A

Complexity

Total Complexity 6
Complexity/F 1

Size

Lines of Code 155
Function Count 6

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 6
eloc 109
dl 0
loc 155
rs 10
c 0
b 0
f 0
mnd 0
bc 0
fnc 6
bpm 0
cpm 1
noi 1
1
import { NotGate, not } from '../../src/LogicGates.mjs';
2
3
const TestCases = [
4
    {
5
        description: '1 proposition',
6
        expectedResult: [
7
            [[false], [true]],
8
            [[true], [false]],
9
        ],
10
    },
11
    {
12
        description: '2 propositions',
13
        expectedResult: [
14
            [
15
                [false, false],
16
                [true, true],
17
            ],
18
            [
19
                [false, true],
20
                [true, false],
21
            ],
22
            [
23
                [true, false],
24
                [false, true],
25
            ],
26
            [
27
                [true, true],
28
                [false, false],
29
            ],
30
        ],
31
    },
32
    {
33
        description: '3 propositions',
34
        expectedResult: [
35
            [
36
                [false, false, false],
37
                [true, true, true],
38
            ],
39
            [
40
                [false, false, true],
41
                [true, true, false],
42
            ],
43
            [
44
                [false, true, false],
45
                [true, false, true],
46
            ],
47
            [
48
                [false, true, true],
49
                [true, false, false],
50
            ],
51
            [
52
                [true, false, false],
53
                [false, true, true],
54
            ],
55
            [
56
                [true, false, true],
57
                [false, true, false],
58
            ],
59
            [
60
                [true, true, false],
61
                [false, false, true],
62
            ],
63
            [
64
                [true, true, true],
65
                [false, false, false],
66
            ],
67
        ],
68
    },
69
    {
70
        description: '4 propositions',
71
        expectedResult: [
72
            [
73
                [false, false, false, false],
74
                [true, true, true, true],
75
            ],
76
            [
77
                [false, false, false, true],
78
                [true, true, true, false],
79
            ],
80
            [
81
                [false, false, true, false],
82
                [true, true, false, true],
83
            ],
84
            [
85
                [false, false, true, true],
86
                [true, true, false, false],
87
            ],
88
            [
89
                [false, true, false, false],
90
                [true, false, true, true],
91
            ],
92
            [
93
                [false, true, false, true],
94
                [true, false, true, false],
95
            ],
96
            [
97
                [false, true, true, false],
98
                [true, false, false, true],
99
            ],
100
            [
101
                [false, true, true, true],
102
                [true, false, false, false],
103
            ],
104
            [
105
                [true, false, false, false],
106
                [false, true, true, true],
107
            ],
108
            [
109
                [true, false, false, true],
110
                [false, true, true, false],
111
            ],
112
            [
113
                [true, false, true, false],
114
                [false, true, false, true],
115
            ],
116
            [
117
                [true, false, true, true],
118
                [false, true, false, false],
119
            ],
120
            [
121
                [true, true, false, false],
122
                [false, false, true, true],
123
            ],
124
            [
125
                [true, true, false, true],
126
                [false, false, true, false],
127
            ],
128
            [
129
                [true, true, true, false],
130
                [false, false, false, true],
131
            ],
132
            [
133
                [true, true, true, true],
134
                [false, false, false, false],
135
            ],
136
        ],
137
    },
138
];
139
140
describe.each(TestCases)('Test NotGate', ({ description, expectedResult }) => {
141
    it(description, () => {
142
        expectedResult.forEach((inputTest) => {
143
            const table = NotGate.create(inputTest[0]);
144
            expect(table.output).toMatchObject(inputTest[1]);
145
        });
146
    });
147
});
148
149
describe.each(TestCases)('Test not', ({ description, expectedResult }) => {
150
    it(description, () => {
151
        expectedResult.forEach((inputTest) => {
152
            expect(not(inputTest[0])).toMatchObject(inputTest[1]);
153
        });
154
    });
155
});
156