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});