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