arnaucube
arnaucube/circomlibPublic Self-hosted repository
circomlib/test/multiplexer.js
test/multiplexer.jsRaw
 1const path = require("path");
 2const tester = require("circom").tester;
 3const Fr = require("ffjavascript").bn128.Fr;
 4
 5describe("Mux4 test", function() {
 6    this.timeout(100000);
 7    it("Should create a constant multiplexer 4", async () => {
 8
 9        const circuit = await tester(path.join(__dirname, "circuits", "mux4_1.circom"));
10
11        const ct16 = [
12            Fr.e("123"),
13            Fr.e("456"),
14            Fr.e("789"),
15            Fr.e("012"),
16            Fr.e("111"),
17            Fr.e("222"),
18            Fr.e("333"),
19            Fr.e("4546"),
20            Fr.e("134523"),
21            Fr.e("44356"),
22            Fr.e("15623"),
23            Fr.e("4566"),
24            Fr.e("1223"),
25            Fr.e("4546"),
26            Fr.e("4256"),
27            Fr.e("4456")
28        ];
29
30        for (let i=0; i<16; i++) {
31            const w = await circuit.calculateWitness({ "selector": i }, true);
32
33            await circuit.checkConstraints(w);
34
35            await circuit.assertOut(w, {out: ct16[i]});
36        }
37    });
38
39    it("Should create a constant multiplexer 3", async () => {
40
41        const circuit = await tester(path.join(__dirname, "circuits", "mux3_1.circom"));
42
43        const ct8 = [
44            Fr.e("37"),
45            Fr.e("47"),
46            Fr.e("53"),
47            Fr.e("71"),
48            Fr.e("89"),
49            Fr.e("107"),
50            Fr.e("163"),
51            Fr.e("191")
52        ];
53
54        for (let i=0; i<8; i++) {
55            const w = await circuit.calculateWitness({ "selector": i }, true);
56
57            await circuit.checkConstraints(w);
58
59            await circuit.assertOut(w, {out: ct8[i]});
60        }
61    });
62    it("Should create a constant multiplexer 2", async () => {
63
64        const circuit = await tester(path.join(__dirname, "circuits", "mux2_1.circom"));
65
66        const ct4 = [
67            Fr.e("37"),
68            Fr.e("47"),
69            Fr.e("53"),
70            Fr.e("71"),
71        ];
72
73        for (let i=0; i<4; i++) {
74            const w = await circuit.calculateWitness({ "selector": i }, true);
75
76            await circuit.checkConstraints(w);
77
78            await circuit.assertOut(w, {out: ct4[i]});
79        }
80    });
81    it("Should create a constant multiplexer 1", async () => {
82
83        const circuit = await tester(path.join(__dirname, "circuits", "mux1_1.circom"));
84
85        const ct2 = [
86            Fr.e("37"),
87            Fr.e("47"),
88        ];
89
90        for (let i=0; i<2; i++) {
91            const w = await circuit.calculateWitness({ "selector": i }, true);
92
93            await circuit.checkConstraints(w);
94
95            await circuit.assertOut(w, {out: ct2[i]});
96        }
97    });
98});