circom/test/comparators.js
test/comparators.jsRaw
1const chai = require("chai");
2const path = require("path");
3const snarkjs = require("snarkjs");
4const crypto = require("crypto");
5
6const compiler = require("../index.js");
7
8const assert = chai.assert;
9
10describe("Sum test", () => {
11 it("Should create a iszero circuit", async() => {
12 const cirDef = await compiler(path.join(__dirname, "circuits", "iszero.circom"));
13
14 const circuit = new snarkjs.Circuit(cirDef);
15
16 let witness;
17 witness = circuit.calculateWitness({ "in": 111});
18 assert(witness[0].equals(snarkjs.bigInt(1)));
19 assert(witness[1].equals(snarkjs.bigInt(0)));
20
21 witness = circuit.calculateWitness({ "in": 0 });
22 assert(witness[0].equals(snarkjs.bigInt(1)));
23 assert(witness[1].equals(snarkjs.bigInt(1)));
24 });
25 it("Should create a isequal circuit", async() => {
26 const cirDef = await compiler(path.join(__dirname, "circuits", "isequal.circom"));
27
28 const circuit = new snarkjs.Circuit(cirDef);
29
30 let witness;
31 witness = circuit.calculateWitness({ "in[0]": "111", "in[1]": "222" });
32 assert(witness[0].equals(snarkjs.bigInt(1)));
33 assert(witness[1].equals(snarkjs.bigInt(0)));
34
35 witness = circuit.calculateWitness({ "in[0]": "444", "in[1]": "444" });
36 assert(witness[0].equals(snarkjs.bigInt(1)));
37 assert(witness[1].equals(snarkjs.bigInt(1)));
38 });
39 it("Should create a comparison", async() => {
40 const cirDef = await compiler(path.join(__dirname, "circuits", "lessthan.circom"));
41
42 const circuit = new snarkjs.Circuit(cirDef);
43
44 let witness;
45 witness = circuit.calculateWitness({ "in[0]": "333", "in[1]": "444" });
46 assert(witness[0].equals(snarkjs.bigInt(1)));
47 assert(witness[1].equals(snarkjs.bigInt(1)));
48
49 witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "1" });
50 assert(witness[0].equals(snarkjs.bigInt(1)));
51 assert(witness[1].equals(snarkjs.bigInt(0)));
52
53 witness = circuit.calculateWitness({ "in[0]": "661", "in[1]": "660" });
54 assert(witness[0].equals(snarkjs.bigInt(1)));
55 assert(witness[1].equals(snarkjs.bigInt(0)));
56
57 witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "1" });
58 assert(witness[0].equals(snarkjs.bigInt(1)));
59 assert(witness[1].equals(snarkjs.bigInt(1)));
60
61 witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "444" });
62 assert(witness[0].equals(snarkjs.bigInt(1)));
63 assert(witness[1].equals(snarkjs.bigInt(1)));
64
65 witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "0" });
66 assert(witness[0].equals(snarkjs.bigInt(1)));
67 assert(witness[1].equals(snarkjs.bigInt(0)));
68
69 witness = circuit.calculateWitness({ "in[0]": "555", "in[1]": "0" });
70 assert(witness[0].equals(snarkjs.bigInt(1)));
71 assert(witness[1].equals(snarkjs.bigInt(0)));
72
73 witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "0" });
74 assert(witness[0].equals(snarkjs.bigInt(1)));
75 assert(witness[1].equals(snarkjs.bigInt(0)));
76 });
77});