diff --git a/tests/codexvalidator/examples.nim b/tests/codexvalidator/examples.nim index c3ce821..062ef84 100644 --- a/tests/codexvalidator/examples.nim +++ b/tests/codexvalidator/examples.nim @@ -1,98 +1,11 @@ -import std/random -import codexvalidator/hashing -import codexvalidator/transaction -import codexvalidator/signatures -import codexvalidator/blocks -import ./basics +import ./examples/basics +import ./examples/blocks +import ./examples/hashing +import ./examples/signatures +import ./examples/transaction -proc example*[T: SomeInteger](_: type T): T = - rand(T) - -proc example*(_: type UInt256): UInt256 = - UInt256.fromBytesBE(array[32, byte].example) - -proc example*[T, length](_: type array[length, T]): array[length, T] = - for i in result.low..result.high: - result[i] = T.example - -proc example*[T](_: type seq[T], length = 0..10): seq[T] = - let len = rand(length) - newSeqWith(len, T.example) - -proc example*(_: type StorageRequestId): StorageRequestId = - StorageRequestId(array[32, byte].example) - -proc example*(_: type Period): Period = - Period(uint64.example) - -proc example*(_: type G1Point): G1Point = - G1Point.init(UInt256.example, UInt256.example) - -proc example*(_: type Fp2Element): Fp2Element = - Fp2Element.init(UInt256.example, UInt256.example) - -proc example*(_: type G2Point): G2Point = - G2Point.init( - Fp2Element.example, - Fp2Element.example - ) - -proc example*(_: type Groth16Proof): Groth16Proof = - Groth16Proof.init( - G1Point.example, - G2Point.example, - G1Point.example - ) - -proc example*(_: type StorageProofInput): StorageProofInput = - let requestId = StorageRequestId.example - let slotIndex = uint32.example - let period = Period.example - let merkleRoot = array[32, byte].example - let challenge = array[32, byte].example - StorageProofInput.init( - requestId, - slotIndex, - period, - merkleRoot, - challenge - ) - -proc example*(_: type Transaction): Transaction = - let kind = [TransactionKind.storageProof, TransactionKind.missingProof].sample - let proofInput = StorageProofInput.example - case kind - of TransactionKind.missingProof: - Transaction.missingProof(proofInput) - of TransactionKind.storageProof: - let proof = Groth16Proof.example - Transaction.storageProof(proofInput, proof) - -proc example*(_: type Identity): Identity = - Identity.random(result) - -proc example*(_: type Identifier): Identifier = - Identity.example.identifier - -proc example*(_: type Signature): Signature = - Identity.example.sign(seq[byte].example) - -proc example*[T](_: type Signed[T]): Signed[T] = - Signed.sign(Identity.example, T.example) - -proc example*(_: type CommitteeMember): CommitteeMember = - CommitteeMember(uint32.example.int) - -proc example*(_: type Hash): Hash = - Hash.hash(seq[byte].example) - -proc example*(_: type BlockId): BlockId = - BlockId.init(CommitteeMember.example, uint64.example, Hash.example) - -proc example*(_: type Block): Block = - Block( - author: CommitteeMember.example, - round: uint64.example, - parents: seq[BlockId].example, - transactions: seq[Signed[Transaction]].example - ) +export basics +export blocks +export hashing +export signatures +export transaction diff --git a/tests/codexvalidator/examples/basics.nim b/tests/codexvalidator/examples/basics.nim new file mode 100644 index 0000000..6d87268 --- /dev/null +++ b/tests/codexvalidator/examples/basics.nim @@ -0,0 +1,19 @@ +import std/random +import codexvalidator/basics + +export basics.UInt256 + +proc example*[T: SomeInteger](_: type T): T = + rand(T) + +proc example*(_: type UInt256): UInt256 = + UInt256.fromBytesBE(array[32, byte].example) + +proc example*[T, length](_: type array[length, T]): array[length, T] = + for i in result.low..result.high: + result[i] = T.example + +proc example*[T](_: type seq[T], length = 0..10): seq[T] = + let len = rand(length) + newSeqWith(len, T.example) + diff --git a/tests/codexvalidator/examples/blocks.nim b/tests/codexvalidator/examples/blocks.nim new file mode 100644 index 0000000..0d0bcc3 --- /dev/null +++ b/tests/codexvalidator/examples/blocks.nim @@ -0,0 +1,18 @@ +import codexvalidator/blocks +import ./hashing +import ./signatures +import ./transaction + +proc example*(_: type CommitteeMember): CommitteeMember = + CommitteeMember(uint32.example.int) + +proc example*(_: type BlockId): BlockId = + BlockId.init(CommitteeMember.example, uint64.example, Hash.example) + +proc example*(_: type Block): Block = + Block( + author: CommitteeMember.example, + round: uint64.example, + parents: seq[BlockId].example, + transactions: seq[Signed[Transaction]].example + ) diff --git a/tests/codexvalidator/examples/hashing.nim b/tests/codexvalidator/examples/hashing.nim new file mode 100644 index 0000000..c28b5f4 --- /dev/null +++ b/tests/codexvalidator/examples/hashing.nim @@ -0,0 +1,7 @@ +import codexvalidator/hashing +import ./basics + +export hashing.Hash + +proc example*(_: type Hash): Hash = + Hash.hash(seq[byte].example) diff --git a/tests/codexvalidator/examples/signatures.nim b/tests/codexvalidator/examples/signatures.nim new file mode 100644 index 0000000..3f61944 --- /dev/null +++ b/tests/codexvalidator/examples/signatures.nim @@ -0,0 +1,18 @@ +import codexvalidator/signatures + +export signatures.Identity +export signatures.Identifier +export signatures.Signature +export signatures.Signed + +proc example*(_: type Identity): Identity = + Identity.random(result) + +proc example*(_: type Identifier): Identifier = + Identity.example.identifier + +proc example*(_: type Signature): Signature = + Identity.example.sign(seq[byte].example) + +proc example*[T](_: type Signed[T]): Signed[T] = + Signed.sign(Identity.example, T.example) diff --git a/tests/codexvalidator/examples/transaction.nim b/tests/codexvalidator/examples/transaction.nim new file mode 100644 index 0000000..e645971 --- /dev/null +++ b/tests/codexvalidator/examples/transaction.nim @@ -0,0 +1,54 @@ +import std/random +import codexvalidator/transaction +import ./basics + +export transaction.Transaction + +proc example*(_: type StorageRequestId): StorageRequestId = + StorageRequestId(array[32, byte].example) + +proc example*(_: type Period): Period = + Period(uint64.example) + +proc example*(_: type G1Point): G1Point = + G1Point.init(UInt256.example, UInt256.example) + +proc example*(_: type Fp2Element): Fp2Element = + Fp2Element.init(UInt256.example, UInt256.example) + +proc example*(_: type G2Point): G2Point = + G2Point.init( + Fp2Element.example, + Fp2Element.example + ) + +proc example*(_: type Groth16Proof): Groth16Proof = + Groth16Proof.init( + G1Point.example, + G2Point.example, + G1Point.example + ) + +proc example*(_: type StorageProofInput): StorageProofInput = + let requestId = StorageRequestId.example + let slotIndex = uint32.example + let period = Period.example + let merkleRoot = array[32, byte].example + let challenge = array[32, byte].example + StorageProofInput.init( + requestId, + slotIndex, + period, + merkleRoot, + challenge + ) + +proc example*(_: type Transaction): Transaction = + let kind = [TransactionKind.storageProof, TransactionKind.missingProof].sample + let proofInput = StorageProofInput.example + case kind + of TransactionKind.missingProof: + Transaction.missingProof(proofInput) + of TransactionKind.storageProof: + let proof = Groth16Proof.example + Transaction.storageProof(proofInput, proof)