arnaucube
arnaucube/circomlibPublic Self-hosted repository
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});