circomlib/test/comparators.js
test/comparators.jsRaw
1const chai = require("chai");
2const path = require("path");
3
4const tester = require("circom").tester;
5
6const bigInt = require("big-integer");
7
8const assert = chai.assert;
9
10describe("Comparators test", function () {
11
12 this.timeout(100000);
13
14 it("Should create a iszero circuit", async() => {
15 const circuit = await tester(path.join(__dirname, "circuits", "iszero.circom"));
16
17 let witness;
18 witness = await circuit.calculateWitness({ "in": 111});
19 assert(witness[0].equals(bigInt(1)));
20 assert(witness[1].equals(bigInt(0)));
21
22 witness = await circuit.calculateWitness({ "in": 0 });
23 assert(witness[0].equals(bigInt(1)));
24 assert(witness[1].equals(bigInt(1)));
25 });
26 it("Should create a isequal circuit", async() => {
27 const circuit = await tester(path.join(__dirname, "circuits", "isequal.circom"));
28
29 let witness;
30 witness = await circuit.calculateWitness({ "in": [111,222] });
31 assert(witness[0].equals(bigInt(1)));
32 assert(witness[1].equals(bigInt(0)));
33
34 witness = await circuit.calculateWitness({ "in": [444,444] });
35 assert(witness[0].equals(bigInt(1)));
36 assert(witness[1].equals(bigInt(1)));
37 });
38 it("Should create a comparison lessthan", async() => {
39 const circuit = await tester(path.join(__dirname, "circuits", "lessthan.circom"));
40
41 let witness;
42 witness = await circuit.calculateWitness({ "in": [333,444] });
43 assert(witness[0].equals(bigInt(1)));
44 assert(witness[1].equals(bigInt(1)));
45
46 witness = await circuit.calculateWitness({ "in":[1,1] });
47 assert(witness[0].equals(bigInt(1)));
48 assert(witness[1].equals(bigInt(0)));
49
50 witness = await circuit.calculateWitness({ "in": [661, 660] });
51 assert(witness[0].equals(bigInt(1)));
52 assert(witness[1].equals(bigInt(0)));
53
54 witness = await circuit.calculateWitness({ "in": [0, 1] });
55 assert(witness[0].equals(bigInt(1)));
56 assert(witness[1].equals(bigInt(1)));
57
58 witness = await circuit.calculateWitness({ "in": [0, 444] });
59 assert(witness[0].equals(bigInt(1)));
60 assert(witness[1].equals(bigInt(1)));
61
62 witness = await circuit.calculateWitness({ "in": [1, 0] });
63 assert(witness[0].equals(bigInt(1)));
64 assert(witness[1].equals(bigInt(0)));
65
66 witness = await circuit.calculateWitness({ "in": [555, 0] });
67 assert(witness[0].equals(bigInt(1)));
68 assert(witness[1].equals(bigInt(0)));
69
70 witness = await circuit.calculateWitness({ "in": [0, 0] });
71 assert(witness[0].equals(bigInt(1)));
72 assert(witness[1].equals(bigInt(0)));
73 });
74 it("Should create a comparison lesseqthan", async() => {
75
76 const circuit = await tester(path.join(__dirname, "circuits", "lesseqthan.circom"));
77
78 let witness;
79 witness = await circuit.calculateWitness({ "in": [333,444] });
80 assert(witness[0].equals(bigInt(1)));
81 assert(witness[1].equals(bigInt(1)));
82
83 witness = await circuit.calculateWitness({ "in":[1,1] });
84 assert(witness[0].equals(bigInt(1)));
85 assert(witness[1].equals(bigInt(1)));
86
87 witness = await circuit.calculateWitness({ "in": [661, 660] });
88 assert(witness[0].equals(bigInt(1)));
89 assert(witness[1].equals(bigInt(0)));
90
91 witness = await circuit.calculateWitness({ "in": [0, 1] });
92 assert(witness[0].equals(bigInt(1)));
93 assert(witness[1].equals(bigInt(1)));
94
95 witness = await circuit.calculateWitness({ "in": [0, 444] });
96 assert(witness[0].equals(bigInt(1)));
97 assert(witness[1].equals(bigInt(1)));
98
99 witness = await circuit.calculateWitness({ "in": [1, 0] });
100 assert(witness[0].equals(bigInt(1)));
101 assert(witness[1].equals(bigInt(0)));
102
103 witness = await circuit.calculateWitness({ "in": [555, 0] });
104 assert(witness[0].equals(bigInt(1)));
105 assert(witness[1].equals(bigInt(0)));
106
107 witness = await circuit.calculateWitness({ "in": [0, 0] });
108 assert(witness[0].equals(bigInt(1)));
109 assert(witness[1].equals(bigInt(1)));
110 });
111 it("Should create a comparison greaterthan", async() => {
112
113 const circuit = await tester(path.join(__dirname, "circuits", "greaterthan.circom"));
114
115 let witness;
116 witness = await circuit.calculateWitness({ "in": [333,444] });
117 assert(witness[0].equals(bigInt(1)));
118 assert(witness[1].equals(bigInt(0)));
119
120 witness = await circuit.calculateWitness({ "in":[1,1] });
121 assert(witness[0].equals(bigInt(1)));
122 assert(witness[1].equals(bigInt(0)));
123
124 witness = await circuit.calculateWitness({ "in": [661, 660] });
125 assert(witness[0].equals(bigInt(1)));
126 assert(witness[1].equals(bigInt(1)));
127
128 witness = await circuit.calculateWitness({ "in": [0, 1] });
129 assert(witness[0].equals(bigInt(1)));
130 assert(witness[1].equals(bigInt(0)));
131
132 witness = await circuit.calculateWitness({ "in": [0, 444] });
133 assert(witness[0].equals(bigInt(1)));
134 assert(witness[1].equals(bigInt(0)));
135
136 witness = await circuit.calculateWitness({ "in": [1, 0] });
137 assert(witness[0].equals(bigInt(1)));
138 assert(witness[1].equals(bigInt(1)));
139
140 witness = await circuit.calculateWitness({ "in": [555, 0] });
141 assert(witness[0].equals(bigInt(1)));
142 assert(witness[1].equals(bigInt(1)));
143
144 witness = await circuit.calculateWitness({ "in": [0, 0] });
145 assert(witness[0].equals(bigInt(1)));
146 assert(witness[1].equals(bigInt(0)));
147 });
148 it("Should create a comparison greatereqthan", async() => {
149 const circuit = await tester(path.join(__dirname, "circuits", "greatereqthan.circom"));
150
151 let witness;
152 witness = await circuit.calculateWitness({ "in": [333,444] });
153 assert(witness[0].equals(bigInt(1)));
154 assert(witness[1].equals(bigInt(0)));
155
156 witness = await circuit.calculateWitness({ "in":[1,1] });
157 assert(witness[0].equals(bigInt(1)));
158 assert(witness[1].equals(bigInt(1)));
159
160 witness = await circuit.calculateWitness({ "in": [661, 660] });
161 assert(witness[0].equals(bigInt(1)));
162 assert(witness[1].equals(bigInt(1)));
163
164 witness = await circuit.calculateWitness({ "in": [0, 1] });
165 assert(witness[0].equals(bigInt(1)));
166 assert(witness[1].equals(bigInt(0)));
167
168 witness = await circuit.calculateWitness({ "in": [0, 444] });
169 assert(witness[0].equals(bigInt(1)));
170 assert(witness[1].equals(bigInt(0)));
171
172 witness = await circuit.calculateWitness({ "in": [1, 0] });
173 assert(witness[0].equals(bigInt(1)));
174 assert(witness[1].equals(bigInt(1)));
175
176 witness = await circuit.calculateWitness({ "in": [555, 0] });
177 assert(witness[0].equals(bigInt(1)));
178 assert(witness[1].equals(bigInt(1)));
179
180 witness = await circuit.calculateWitness({ "in": [0, 0] });
181 assert(witness[0].equals(bigInt(1)));
182 assert(witness[1].equals(bigInt(1)));
183 });
184});