NethermindEth / cairo-vm-go

A virtual machine for Cairo written in Go
MIT License
79 stars 49 forks source link

Redundancy in zerohint_utils_test.go file #410

Closed TAdev0 closed 3 months ago

TAdev0 commented 3 months ago

_zerohint_utilstest.go file defines the following functions:

func varValueEquals(varName string, expected *fp.Element) func(t *testing.T, ctx *hintTestContext) {
    return func(t *testing.T, ctx *hintTestContext) {
        o := ctx.operanders[varName]
        addr, err := o.GetAddress(ctx.vm)
        if err != nil {
            t.Fatal(err)
        }
        actualFelt, err := ctx.vm.Memory.ReadFromAddressAsElement(&addr)
        if err != nil {
            t.Fatal(err)
        }
        if !actualFelt.Equal(expected) {
            t.Fatalf("%s value mismatch:\nhave: %v\nwant: %v", varName, &actualFelt, expected)
        }
    }
}

func varAddrResolvedValueEquals(varName string, expected *fp.Element) func(t *testing.T, ctx *hintTestContext) {
    return func(t *testing.T, ctx *hintTestContext) {
        o := ctx.operanders[varName]
        addr, err := o.GetAddress(ctx.vm)
        require.NoError(t, err)
        actualFelt, err := ctx.vm.Memory.ReadFromAddressAsElement(&addr)
        require.NoError(t, err)
        require.Equal(t, &actualFelt, expected, "%s value mismatch:\nhave: %v\nwant: %v", varName, &actualFelt, expected)
    }
}

Both of them do the exact same thing, but handle error slightly differently. We can remove one of them. varAddrResolvedValueEquals is used for only for usort hint , i supposed it has been created by some external contributor but it was not needed