From 0f739f539ebb4d130454284387e5d80c0b102df1 Mon Sep 17 00:00:00 2001 From: Mahdi Khosravi Date: Wed, 22 Nov 2023 23:00:25 +0300 Subject: [PATCH] add new test --- pkg/hintrunner/hint_test.go | 53 +++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/pkg/hintrunner/hint_test.go b/pkg/hintrunner/hint_test.go index b3f1ac09f..86617ca87 100644 --- a/pkg/hintrunner/hint_test.go +++ b/pkg/hintrunner/hint_test.go @@ -734,3 +734,56 @@ func TestAssertLeFindSmallArc(t *testing.T) { require.Equal(t, expectedPtr, actual1Ptr) require.Equal(t, expectedExcludedArc, ctx.ExcludedArc) } + +func TestAssertLeFindSmallArc2(t *testing.T) { + vm := defaultVirtualMachine() + vm.Context.Ap = 0 + vm.Context.Fp = 0 + // The addr that the range check pointer will point to + addr := vm.Memory.AllocateBuiltinSegment(&builtins.RangeCheck{}) + writeTo(vm, VM.ExecutionSegment, vm.Context.Ap, mem.MemoryValueFromMemoryAddress(&addr)) + + ctx := HintRunnerContext{ + ExcludedArc: 0, + } + + aFelt := f.Element{13984218141608664100, 13287333742236603547, 18446744073709551615, 229878458336812643} + bFelt := f.Element{6079377935050068685, 3868297591914914705, 18446744073709551587, 162950233538363292} + + valA := Immediate(aFelt) + valB := Immediate(bFelt) + + hint := AssertLeFindSmallArc{ + a: valA, + b: valB, + rangeCheckPtr: Deref{ApCellRef(0)}, + } + + err := hint.Execute(vm, &ctx) + + require.NoError(t, err) + + expectedRem1 := mem.MemoryValueFromFieldElement( + &f.Element{13984218141608664100, 13287333742236603547, 18446744073709551615, 229878458336812643}) + expectedQuotient1 := mem.MemoryValueFromFieldElement( + &f.Element{0, 0, 0, 0}) + expectedRem2 := mem.MemoryValueFromFieldElement( + &f.Element{10541903867150958026, 18251079960242638581, 18446744073709551615, 509532527505005161}) + expectedQuotient2 := mem.MemoryValueFromFieldElement( + &f.Element{18446744073709549793, 18446744073709551615, 18446744073709551615, 576460752303392496}) + expectedPtr := mem.MemoryValueFromMemoryAddress(&addr) + expectedExcludedArc := int(2) + + actualRem1 := readFrom(vm, 2, 0) + actualQuotient1 := readFrom(vm, 2, 1) + actualRem2 := readFrom(vm, 2, 2) + actualQuotient2 := readFrom(vm, 2, 3) + actual1Ptr := readFrom(vm, 1, 0) + + require.Equal(t, expectedRem1, actualRem1) + require.Equal(t, expectedQuotient1, actualQuotient1) + require.Equal(t, expectedRem2, actualRem2) + require.Equal(t, expectedQuotient2, actualQuotient2) + require.Equal(t, expectedPtr, actual1Ptr) + require.Equal(t, expectedExcludedArc, ctx.ExcludedArc) +}