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

tests/unit/nor.spec.js   A

Complexity

Total Complexity 6
Complexity/F 1

Size

Lines of Code 71
Function Count 6

Duplication

Duplicated Lines 71
Ratio 100 %

Importance

Changes 0
Metric Value
wmc 6
eloc 53
dl 71
loc 71
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 { NorGate, nor } 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
            [[false, false], true],
15
            [[false, true], false],
16
            [[true, false], false],
17
            [[true, true], false],
18
        ],
19
    },
20
    {
21
        description: '3 propositions',
22
        expectedResult: [
23
            [[false, false, false], true],
24
            [[false, false, true], false],
25
            [[false, true, false], false],
26
            [[false, true, true], false],
27
            [[true, false, false], false],
28
            [[true, false, true], false],
29
            [[true, true, false], false],
30
            [[true, true, true], false],
31
        ],
32
    },
33
    {
34
        description: '4 propositions',
35
        expectedResult: [
36
            [[false, false, false, false], true],
37
            [[false, false, false, true], false],
38
            [[false, false, true, false], false],
39
            [[false, false, true, true], false],
40
            [[false, true, false, false], false],
41
            [[false, true, false, true], false],
42
            [[false, true, true, false], false],
43
            [[false, true, true, true], false],
44
            [[true, false, false, false], false],
45
            [[true, false, false, true], false],
46
            [[true, false, true, false], false],
47
            [[true, false, true, true], false],
48
            [[true, true, false, false], false],
49
            [[true, true, false, true], false],
50
            [[true, true, true, false], false],
51
            [[true, true, true, true], false],
52
        ],
53
    },
54
];
55
56
describe.each(TestCases)('Test NorGate', ({ description, expectedResult }) => {
57
    it(description, () => {
58
        expectedResult.forEach((inputTest) => {
59
            const table = NorGate.create(inputTest[0]);
60
            expect(table.output).toBe(inputTest[1]);
61
        });
62
    });
63
});
64
65
describe.each(TestCases)('Test nor', ({ description, expectedResult }) => {
66
    it(description, () => {
67
        expectedResult.forEach((inputTest) => {
68
            expect(nor(inputTest[0])).toBe(inputTest[1]);
69
        });
70
    });
71
});
72