mirror of
https://github.com/erhant/circomkit.git
synced 2026-05-05 03:00:37 -04:00
tests are now instantiated automatically
This commit is contained in:
@@ -45,13 +45,6 @@ const config: Config = {
|
||||
publicInputs: [],
|
||||
templateParams: [11],
|
||||
},
|
||||
// checks that a number fits to given bit count
|
||||
cbl_3: {
|
||||
file: 'float_add',
|
||||
template: 'CheckBitLength',
|
||||
publicInputs: [],
|
||||
templateParams: [3],
|
||||
},
|
||||
};
|
||||
|
||||
export default config as Readonly<typeof config>;
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
// auto-generated by instantiate.js
|
||||
pragma circom 2.0.0;
|
||||
|
||||
include "../float_add.circom";
|
||||
|
||||
component main = CheckBitLength(3);
|
||||
@@ -1,6 +0,0 @@
|
||||
// auto-generated by instantiate.js
|
||||
pragma circom 2.0.0;
|
||||
|
||||
include "../multiplier.circom";
|
||||
|
||||
component main = Multiplier(3);
|
||||
@@ -1,10 +1,19 @@
|
||||
import {instantiate} from '../utils/instantiate';
|
||||
import {createWasmTester} from '../utils/wasmTester';
|
||||
|
||||
describe('fibonacci_11', () => {
|
||||
const N = 19;
|
||||
const circuitName = 'fibonacci_' + N;
|
||||
describe(circuitName, () => {
|
||||
let circuit: Awaited<ReturnType<typeof createWasmTester>>;
|
||||
|
||||
before(async () => {
|
||||
circuit = await createWasmTester('fibonacci_11');
|
||||
instantiate(circuitName, 'test', {
|
||||
file: 'fibonacci',
|
||||
template: 'Fibonacci',
|
||||
publicInputs: [],
|
||||
templateParams: [N],
|
||||
});
|
||||
circuit = await createWasmTester(circuitName, 'test');
|
||||
await circuit.printConstraintCount();
|
||||
});
|
||||
|
||||
@@ -14,7 +23,7 @@ describe('fibonacci_11', () => {
|
||||
in: [1, 1],
|
||||
},
|
||||
{
|
||||
out: fibonacci([1, 1], 11),
|
||||
out: fibonacci([1, 1], N),
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import {instantiate} from '../utils/instantiate';
|
||||
import {createWasmTester} from '../utils/wasmTester';
|
||||
|
||||
// tests adapted from https://github.com/rdi-berkeley/zkp-mooc-lab
|
||||
@@ -5,7 +6,13 @@ describe('fp32', () => {
|
||||
let circuit: Awaited<ReturnType<typeof createWasmTester>>;
|
||||
|
||||
before(async () => {
|
||||
circuit = await createWasmTester('fp32');
|
||||
instantiate('fp32', 'test', {
|
||||
file: 'float_add',
|
||||
template: 'FloatAdd',
|
||||
publicInputs: [],
|
||||
templateParams: [8, 23],
|
||||
});
|
||||
circuit = await createWasmTester('fp32', 'test');
|
||||
await circuit.printConstraintCount(401);
|
||||
});
|
||||
|
||||
@@ -102,7 +109,13 @@ describe('fp64', () => {
|
||||
let circuit: Awaited<ReturnType<typeof createWasmTester>>;
|
||||
|
||||
before(async () => {
|
||||
circuit = await createWasmTester('fp64');
|
||||
instantiate('fp64', 'test', {
|
||||
file: 'float_add',
|
||||
template: 'FloatAdd',
|
||||
publicInputs: [],
|
||||
templateParams: [11, 52],
|
||||
});
|
||||
circuit = await createWasmTester('fp64', 'test');
|
||||
await circuit.printConstraintCount(819);
|
||||
});
|
||||
|
||||
|
||||
@@ -2,29 +2,33 @@ import {createWasmTester} from '../utils/wasmTester';
|
||||
import {ProofTester} from '../utils/proofTester';
|
||||
import type {CircuitSignals, FullProof} from '../types/circuit';
|
||||
import {assert, expect} from 'chai';
|
||||
import {instantiate, clearInstance} from '../utils/instantiate';
|
||||
import {instantiate} from '../utils/instantiate';
|
||||
// read inputs from file
|
||||
import input80 from '../inputs/multiplier_3/80.json';
|
||||
|
||||
describe('multiplier_3', () => {
|
||||
const INPUT: CircuitSignals = input80;
|
||||
const N = 3;
|
||||
const circuitName = 'multiplier_' + N;
|
||||
describe(circuitName, () => {
|
||||
const INPUT: CircuitSignals = {
|
||||
in: [1, 2, 3], // TODO: N random ints
|
||||
};
|
||||
|
||||
let circuit: Awaited<ReturnType<typeof createWasmTester>>;
|
||||
|
||||
before(async () => {
|
||||
instantiate('multiplier_3', 'test', {
|
||||
instantiate(circuitName, 'test', {
|
||||
file: 'multiplier',
|
||||
template: 'Multiplier',
|
||||
publicInputs: [],
|
||||
templateParams: [3],
|
||||
templateParams: [N],
|
||||
});
|
||||
circuit = await createWasmTester('multiplier_3', 'test');
|
||||
await circuit.printConstraintCount(2); // N - 1
|
||||
circuit = await createWasmTester(circuitName, 'test');
|
||||
await circuit.printConstraintCount(N); // N - 1
|
||||
});
|
||||
|
||||
after(() => {
|
||||
clearInstance('multiplier_3', 'test');
|
||||
});
|
||||
// after(() => {
|
||||
// clearInstance(circuitName, 'test');
|
||||
// });
|
||||
|
||||
it('should compute correctly', async () => {
|
||||
await circuit.expectCorrectAssert(INPUT, {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import {instantiate} from '../utils/instantiate';
|
||||
import {createWasmTester} from '../utils/wasmTester';
|
||||
|
||||
const INPUTS = {
|
||||
@@ -41,13 +42,20 @@ const INPUTS = {
|
||||
},
|
||||
};
|
||||
|
||||
['sudoku_9x9', 'sudoku_4x4'].map(circuitName =>
|
||||
describe(circuitName, () => {
|
||||
[9, 4].map(N =>
|
||||
describe(`sudoku_${N}x${N}`, () => {
|
||||
const circuitName = `sudoku_${N}x${N}`;
|
||||
// @ts-ignore
|
||||
const INPUT = INPUTS[circuitName];
|
||||
let circuit: Awaited<ReturnType<typeof createWasmTester>>;
|
||||
|
||||
before(async () => {
|
||||
instantiate(circuitName, 'test', {
|
||||
file: 'sudoku',
|
||||
template: 'Sudoku',
|
||||
publicInputs: ['puzzle'],
|
||||
templateParams: [Math.sqrt(N)],
|
||||
});
|
||||
circuit = await createWasmTester(circuitName);
|
||||
});
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ export function instantiate(name: string, directory: string, circuitConfig?: Cir
|
||||
console.log(`Main component created at: ${targetPath}\n`);
|
||||
}
|
||||
|
||||
export function clearInstance(name: string, directory: string) {
|
||||
export function clearTestInstance(name: string, directory: string) {
|
||||
// TODO: remove the file
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user