Skip to content
This repository has been archived by the owner on Jun 4, 2024. It is now read-only.

Commit

Permalink
fix test
Browse files Browse the repository at this point in the history
  • Loading branch information
martyall committed Jan 25, 2024
1 parent 201bbee commit da963a0
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 9 deletions.
2 changes: 1 addition & 1 deletion app/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ import qualified Test.Snarkl.Unit.Programs as Programs
import Prelude hiding (return, (+), (>>=))

main :: IO ()
main = defaultMain "prog" (return $ Programs.pow 4 (fromField 3) :: Comp 'TField F_BN128)
main = defaultMain "prog" Programs.prog1
1 change: 1 addition & 0 deletions src/Snarkl/Common.hs
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ data InputAssignment k
= PublicInputAssignment Var k
| PrivateInputAssignment String Var k
| OutputAssignment Var k
deriving (Show)

instance Functor InputAssignment where
fmap f (PublicInputAssignment v k) = PublicInputAssignment v (f k)
Expand Down
26 changes: 22 additions & 4 deletions tests/Test/ArkworksBridge.hs
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,17 @@ import qualified Data.ByteString.Lazy as LBS
import Data.Field.Galois (GaloisField, PrimeField)
import Data.JSONLines (ToJSONLines (toJSONLines))
import qualified Data.Map as Map
import Data.Maybe (fromJust)
import Data.Typeable (Typeable)
import Debug.Trace (trace)
import Snarkl.AST (Comp)
import Snarkl.Backend.R1CS
import Snarkl.Backend.R1CS.R1CS (witnessInputs)
import Snarkl.CLI.Common (mkInputsFilePath, mkR1CSFilePath, mkWitnessFilePath)
import Snarkl.Common (Assgn (Assgn), FieldElem (FieldElem))
import Snarkl.Common (Assgn (Assgn), FieldElem (FieldElem), InputAssignment (OutputAssignment, PublicInputAssignment), Var (Var))
import Snarkl.Compile (SimplParam, compileCompToR1CS)
import Snarkl.Constraint (ConstraintSystem (cs_public_in_vars), SimplifiedConstraintSystem (unSimplifiedConstraintSystem))
import Snarkl.Constraint (ConstraintSystem (cs_out_vars, cs_public_in_vars), SimplifiedConstraintSystem (unSimplifiedConstraintSystem))
import Snarkl.Errors (ErrMsg (ErrMsg), failWith)
import Snarkl.Toplevel (wit_of_cs)
import qualified System.Exit as GHC
import System.Process (createProcess, shell, waitForProcess)
Expand Down Expand Up @@ -56,13 +59,28 @@ runCMD (CreateProof rootDir name simpl c inputs) = do
waitForProcess hdl
runCMD (RunR1CS rootDir name simpl c inputs) = do
let (r1cs, simplifiedCS, _) = compileCompToR1CS simpl c
[out] = cs_out_vars (unSimplifiedConstraintSystem simplifiedCS)
wit@(Witness {witness_assgn = Assgn m}) = wit_of_cs inputs Map.empty simplifiedCS
r1csFilePath = mkR1CSFilePath rootDir name
outVal = case Map.lookup out m of
Nothing ->
failWith $
ErrMsg
( "output variable "
++ show out
++ "not mapped, in\n "
++ show wit
)
Just v -> v
let r1csFilePath = mkR1CSFilePath rootDir name
witsFilePath = mkWitnessFilePath rootDir name
inputsFilePath = mkInputsFilePath rootDir name
LBS.writeFile r1csFilePath $ toJSONLines r1cs
LBS.writeFile witsFilePath $ toJSONLines wit
LBS.writeFile inputsFilePath $ toJSONLines $ witnessInputs wit
let is =
let ls = trace (show outVal) $ Map.toList $ Map.delete out m
in -- TODO (fix this hack)
zipWith PublicInputAssignment (Var <$> [1 ..]) inputs <> [OutputAssignment out outVal]
LBS.writeFile inputsFilePath $ toJSONLines is
let cmd =
mkCommand
"run-r1cs"
Expand Down
8 changes: 4 additions & 4 deletions tests/Test/Snarkl/UnitSpec.hs
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@ spec = do
it "36-1" $ test_comp @F_BN128 [Simplify] prog36 [0] `shouldReturn` Right 10
it "36-2" $ test_comp @F_BN128 [Simplify] prog36 [1] `shouldReturn` Right 7

describe "Keccak Tests" $ do
describe "keccak" $ do
it "keccak-2" $ test_comp @F_BN128 [Simplify] (keccak1 2) (fromIntegral <$> input_vals) `shouldReturn` Right 1
it "keccak-2" $ test_comp @F_BN128 [Simplify] (keccak1 5) (fromIntegral <$> input_vals) `shouldReturn` Right 1
describe "Keccak Tests" $ do
describe "keccak" $ do
it "keccak-2" $ test_comp @F_BN128 [Simplify] (keccak1 2) (fromIntegral <$> input_vals) `shouldReturn` Right 1
it "keccak-2" $ test_comp @F_BN128 [Simplify] (keccak1 5) (fromIntegral <$> input_vals) `shouldReturn` Right 1

0 comments on commit da963a0

Please sign in to comment.