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

tests/unit/xnand.spec.js   A

Complexity

Total Complexity 6
Complexity/F 1

Size

Lines of Code 74
Function Count 6

Duplication

Duplicated Lines 74
Ratio 100 %

Importance

Changes 0
Metric Value
wmc 6
eloc 55
dl 74
loc 74
rs 10
c 0
b 0
f 0
mnd 0
bc 0
fnc 6
bpm 0
cpm 1
noi 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
import { XnandGate, xnand } from '../../src/LogicGates.mjs';
2
3
const TestCases = [
4
    {
5
        description: '1 proposition',
6
        expectedResult: [
7
            [[false], false],
8
            [[true], false],
9
        ],
10
    },
11
    {
12
        description: '2 propositions',
13
        expectedResult: [
14
            [[false, false], false],
15
            [[false, true], true],
16
            [[true, false], true],
17
            [[true, true], false],
18
        ],
19
    },
20
    {
21
        description: '3 propositions',
22
        expectedResult: [
23
            [[false, false, false], false],
24
            [[false, false, true], true],
25
            [[false, true, false], true],
26
            [[false, true, true], true],
27
            [[true, false, false], true],
28
            [[true, false, true], true],
29
            [[true, true, false], true],
30
            [[true, true, true], false],
31
        ],
32
    },
33
    {
34
        description: '4 propositions',
35
        expectedResult: [
36
            [[false, false, false, false], false],
37
            [[false, false, false, true], true],
38
            [[false, false, true, false], true],
39
            [[false, false, true, true], true],
40
            [[false, true, false, false], true],
41
            [[false, true, false, true], true],
42
            [[false, true, true, false], true],
43
            [[false, true, true, true], true],
44
            [[true, false, false, false], true],
45
            [[true, false, false, true], true],
46
            [[true, false, true, false], true],
47
            [[true, false, true, true], true],
48
            [[true, true, false, false], true],
49
            [[true, true, false, true], true],
50
            [[true, true, true, false], true],
51
            [[true, true, true, true], false],
52
        ],
53
    },
54
];
55
56
describe.each(TestCases)(
57
    'Test XnandGate',
58
    ({ description, expectedResult }) => {
59
        it(description, () => {
60
            expectedResult.forEach((inputTest) => {
61
                const table = XnandGate.create(inputTest[0]);
62
                expect(table.output).toBe(inputTest[1]);
63
            });
64
        });
65
    }
66
);
67
68
describe.each(TestCases)('Test xnand', ({ description, expectedResult }) => {
69
    it(description, () => {
70
        expectedResult.forEach((inputTest) => {
71
            expect(xnand(inputTest[0])).toBe(inputTest[1]);
72
        });
73
    });
74
});
75