arnaucube
arnaucube/circomPublic Self-hosted repository
circom/test/basiccases.js
test/basiccases.jsRaw
 1const path = require("path");
 2
 3const bigInt = require("big-integer");
 4const c_tester = require("../index.js").c_tester;
 5const wasm_tester = require("../index.js").wasm_tester;
 6
 7const __P__ = new bigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617");
 8
 9const basicCases = require("./basiccases.json");
10
11function normalize(o) {
12    if ((typeof(o) == "bigint") || o.isZero !== undefined)  {
13        const res = bigInt(o);
14        return norm(res);
15    } else if (Array.isArray(o)) {
16        return o.map(normalize);
17    } else if (typeof o == "object") {
18        const res = {};
19        for (let k in o) {
20            res[k] = normalize(o[k]);
21        }
22        return res;
23    } else {
24        const res = bigInt(o);
25        return norm(res);
26    }
27
28    function norm(n) {
29        let res = n.mod(__P__);
30        if (res.isNegative()) res = __P__.add(res);
31        return res;
32    }
33}
34
35
36async function doTest(tester, circuit, testVectors) {
37    const cir = await tester(path.join(__dirname, "circuits", circuit));
38
39    for (let i=0; i<testVectors.length; i++) {
40        const w = await cir.calculateWitness(normalize(testVectors[i][0]));
41//        console.log(testVectors[i][0]);
42//        console.log(w);
43//        console.log(testVectors[i][1]);
44        await cir.assertOut(w, normalize(testVectors[i][1]) );
45    }
46
47    await cir.release();
48}
49
50describe("basic cases", function () {
51    this.timeout(100000);
52/*
53    for (let i=0; i<basicCases.length; i++) {
54        it("c/c++ " + basicCases[i].name, async () => {
55            await doTest(c_tester, basicCases[i].circuit, basicCases[i].tv);
56        });
57    }
58*/
59
60    for (let i=16; i<17; i++) {
61        it("wasm " + basicCases[i].name, async () => {
62            await doTest(wasm_tester, basicCases[i].circuit, basicCases[i].tv);
63        });
64    }
65
66});