Skip to content

Commit

Permalink
Add + expand integration test
Browse files Browse the repository at this point in the history
  • Loading branch information
fmoletta committed Oct 3, 2023
1 parent 101dc93 commit 909ac06
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 1 deletion.
12 changes: 11 additions & 1 deletion cairo_programs/blake2s_felts.cairo
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
%builtins range_check bitwise

from starkware.cairo.common.bool import TRUE
from starkware.cairo.common.bool import TRUE, FALSE
from starkware.cairo.common.alloc import alloc
from starkware.cairo.common.cairo_blake2s.blake2s import blake2s_felts
from starkware.cairo.common.cairo_builtins import BitwiseBuiltin
Expand All @@ -26,10 +26,20 @@ func main{range_check_ptr, bitwise_ptr: BitwiseBuiltin*}() {
assert inputs[15] = 74256930;
let (local blake2s_ptr_start) = alloc();
let blake2s_ptr = blake2s_ptr_start;

// Bigendian
let (result) = blake2s_felts{range_check_ptr=range_check_ptr, blake2s_ptr=blake2s_ptr}(
16, inputs, TRUE
);
assert result.low = 23022179997536219430502258022509199703;
assert result.high = 136831746058902715979837770794974289597;

// Little endian
let (result) = blake2s_felts{range_check_ptr=range_check_ptr, blake2s_ptr=blake2s_ptr}(
16, inputs, FALSE
);
assert result.low = 315510691254085211243916597439546947220;
assert result.high = 42237338665522721102428636006748876126;

return ();
}
75 changes: 75 additions & 0 deletions cairo_programs/blake2s_integration_tests.cairo
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
%builtins range_check bitwise

from starkware.cairo.common.alloc import alloc
from starkware.cairo.common.cairo_blake2s.blake2s import blake2s, finalize_blake2s, blake2s_felts
from starkware.cairo.common.cairo_builtins import BitwiseBuiltin
from starkware.cairo.common.uint256 import Uint256
from starkware.cairo.common.bool import TRUE

func fill_array(array: felt*, base: felt, step: felt, array_length: felt, iterator: felt) {
if (iterator == array_length) {
return ();
}
assert array[iterator] = base + step * iterator;
return fill_array(array, base, step, array_length, iterator + 1);
}

func test_integration{range_check_ptr, bitwise_ptr: BitwiseBuiltin*}(iter: felt, last: felt) {
alloc_locals;
if (iter == last) {
return ();
}

let (data: felt*) = alloc();
fill_array(data, iter, 2 * iter, 10, 0);

let (local blake2s_ptr_start) = alloc();
let blake2s_ptr = blake2s_ptr_start;
let (res_1: Uint256) = blake2s{range_check_ptr=range_check_ptr, blake2s_ptr=blake2s_ptr}(
data, 9
);

finalize_blake2s(blake2s_ptr_start, blake2s_ptr);

let (local blake2s_ptr_start) = alloc();
let blake2s_ptr = blake2s_ptr_start;

let (data_2: felt*) = alloc();
assert data_2[0] = res_1.low;
assert data_2[1] = res_1.high;

let (res_2) = blake2s_felts{range_check_ptr=range_check_ptr, blake2s_ptr=blake2s_ptr}(
2, data_2, TRUE
);

finalize_blake2s(blake2s_ptr_start, blake2s_ptr);

if (iter == last - 1 and last == 10) {
assert res_1.low = 327684140823325841083166505949840946643;
assert res_1.high = 28077572547397067729112288485703133566;
assert res_2.low = 323710308182296053867309835081443411626;
assert res_2.high = 159988406782415793602959692147600111481;
}

if (iter == last - 1 and last == 100) {
assert res_1.low = 26473789897582596397897414631405692327;
assert res_1.high = 35314462001555260569814614879256292984;
assert res_2.low = 256911263205530722270005922452382996929;
assert res_2.high = 248798531786594770765531047659644061441;
}

return test_integration(iter + 1, last);
}

func run_tests{range_check_ptr, bitwise_ptr: BitwiseBuiltin*}(last: felt) {
alloc_locals;
test_integration(0, last);

return ();
}

func main{range_check_ptr, bitwise_ptr: BitwiseBuiltin*}() {
run_tests(10);

return ();
}
4 changes: 4 additions & 0 deletions pkg/vm/cairo_run/cairo_run_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -360,3 +360,7 @@ func TestBlake2sFelts(t *testing.T) {
func TestFinalizeBlake2s(t *testing.T) {
testProgram("finalize_blake2s", t)
}

func TestBlake2sIntegrationTests(t *testing.T) {
testProgram("blake2s_integration_tests", t)
}

0 comments on commit 909ac06

Please sign in to comment.