tests are now instantiated automatically

This commit is contained in:
Erhan Tezcan
2023-04-04 16:14:33 +03:00
parent 3f1537f20f
commit 14d3bc13ce
8 changed files with 52 additions and 37 deletions

View File

@@ -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>;

View File

@@ -1,6 +0,0 @@
// auto-generated by instantiate.js
pragma circom 2.0.0;
include "../float_add.circom";
component main = CheckBitLength(3);

View File

@@ -1,6 +0,0 @@
// auto-generated by instantiate.js
pragma circom 2.0.0;
include "../multiplier.circom";
component main = Multiplier(3);

View File

@@ -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),
}
);
});

View File

@@ -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);
});

View File

@@ -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, {

View File

@@ -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);
});

View File

@@ -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
}