nim-circom-compat/tests/testcircom.nim
2024-02-09 13:17:51 -06:00

41 lines
1023 B
Nim

import std/unittest
import ../circomcompat
suite "Test circom compat nim":
test "Should generate witness, prove and verify":
let
r1csPath = "vendor/circom-compat-ffi/fixtures/mycircuit.r1cs".cstring
wasmPath = "vendor/circom-compat-ffi/fixtures/mycircuit.wasm".cstring
var ctx: ptr CircomCompatCtx
let res = init_circom_compat(
r1csPath,
wasmPath,
nil,
ctx.addr)
check ctx.push_input_numeric_i8("a".cstring, 3) == ERR_OK
check ctx.push_input_numeric_i8("b".cstring, 11) == ERR_OK
var proofBytes: ptr Buffer
var publicBytes: ptr Buffer
check ctx.prove_circuit(proofBytes.addr, publicBytes.addr) == ERR_OK
check proofBytes.len > 0
check publicBytes.len > 0
check ctx.verify_circuit(proofBytes, publicBytes) == ERR_OK
ctx.addr.release_circom_compat()
check ctx == nil
proofBytes.addr.release_buffer()
check proofBytes == nil
publicBytes.addr.release_buffer()
check publicBytes == nil
check res == ERR_OK