Skip to content

Commit

Permalink
Merge pull request #499 from onflow/fxamacker/avoid-using-unexported-…
Browse files Browse the repository at this point in the history
…mutableValueNotifier-in-tests

Avoid using unexported `mutableValueNotifier` in tests
  • Loading branch information
fxamacker authored Feb 4, 2025
2 parents e475ee0 + 259859e commit d2df8f8
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 59 deletions.
53 changes: 53 additions & 0 deletions export_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@

package atree

import "fmt"

// Exported functions of PersistentSlabStorage for testing.
var (
GetBaseStorage = (*PersistentSlabStorage).getBaseStorage
Expand Down Expand Up @@ -50,3 +52,54 @@ var (
IsMapDataSlabCollisionGroup = (*MapDataSlab).isCollisionGroup
GetMapDataSlabElementCount = (*MapDataSlab).elementCount
)

func NewArrayRootDataSlab(id SlabID, storables []Storable) ArraySlab {
size := uint32(arrayRootDataSlabPrefixSize)

for _, storable := range storables {
size += storable.ByteSize()
}

return &ArrayDataSlab{
header: ArraySlabHeader{
slabID: id,
size: size,
count: uint32(len(storables)),
},
elements: storables,
}
}

func GetArrayMetaDataSlabChildInfo(metaDataSlab *ArrayMetaDataSlab) (childSlabIDs []SlabID, childCounts []uint32) {
childSlabIDs = make([]SlabID, len(metaDataSlab.childrenHeaders))
childCounts = make([]uint32, len(metaDataSlab.childrenHeaders))

for i, childHeader := range metaDataSlab.childrenHeaders {
childSlabIDs[i] = childHeader.slabID
childCounts[i] = childHeader.count
}

return childSlabIDs, childCounts
}

func GetMapMetaDataSlabChildInfo(metaDataSlab *MapMetaDataSlab) (childSlabIDs []SlabID, childSizes []uint32, childFirstKeys []Digest) {
childSlabIDs = make([]SlabID, len(metaDataSlab.childrenHeaders))
childSizes = make([]uint32, len(metaDataSlab.childrenHeaders))
childFirstKeys = make([]Digest, len(metaDataSlab.childrenHeaders))

for i, childHeader := range metaDataSlab.childrenHeaders {
childSlabIDs[i] = childHeader.slabID
childSizes[i] = childHeader.size
childFirstKeys[i] = childHeader.firstKey
}

return childSlabIDs, childSizes, childFirstKeys
}

func GetMutableValueNotifierValueID(v Value) (ValueID, error) {
m, ok := v.(mutableValueNotifier)
if !ok {
return ValueID{}, fmt.Errorf("v (%T) isn't mutableValueNotifier", v)
}
return m.ValueID(), nil
}
56 changes: 40 additions & 16 deletions map_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1350,7 +1350,9 @@ func TestMutateElementFromReadOnlyMapIterator(t *testing.T) {
},
func(k Value) {
keyMutationCallbackCalled = true
require.Equal(t, childMapKey.ValueID(), k.(mutableValueNotifier).ValueID())
valueID, err := GetMutableValueNotifierValueID(k)
require.NoError(t, err)
require.Equal(t, childMapKey.ValueID(), valueID)
},
func(v Value) {
valueMutationCallbackCalled = true
Expand Down Expand Up @@ -1395,7 +1397,9 @@ func TestMutateElementFromReadOnlyMapIterator(t *testing.T) {
},
func(v Value) {
valueMutationCallbackCalled = true
require.Equal(t, childMap.ValueID(), v.(mutableValueNotifier).ValueID())
valueID, err := GetMutableValueNotifierValueID(v)
require.NoError(t, err)
require.Equal(t, childMap.ValueID(), valueID)
})

require.ErrorAs(t, err, &mutationError)
Expand Down Expand Up @@ -1434,7 +1438,9 @@ func TestMutateElementFromReadOnlyMapIterator(t *testing.T) {
},
func(v Value) {
keyMutationCallbackCalled = true
require.Equal(t, childMapKey.ValueID(), v.(mutableValueNotifier).ValueID())
valueID, err := GetMutableValueNotifierValueID(v)
require.NoError(t, err)
require.Equal(t, childMapKey.ValueID(), valueID)
})

require.ErrorAs(t, err, &mutationError)
Expand Down Expand Up @@ -1472,7 +1478,9 @@ func TestMutateElementFromReadOnlyMapIterator(t *testing.T) {
},
func(v Value) {
valueMutationCallbackCalled = true
require.Equal(t, childMap.ValueID(), v.(mutableValueNotifier).ValueID())
valueID, err := GetMutableValueNotifierValueID(v)
require.NoError(t, err)
require.Equal(t, childMap.ValueID(), valueID)
})

require.ErrorAs(t, err, &mutationError)
Expand Down Expand Up @@ -1521,7 +1529,9 @@ func TestMutateElementFromReadOnlyMapIterator(t *testing.T) {
},
func(k Value) {
keyMutationCallbackCalled = true
require.Equal(t, childMapKey.ValueID(), k.(mutableValueNotifier).ValueID())
valueID, err := GetMutableValueNotifierValueID(k)
require.NoError(t, err)
require.Equal(t, childMapKey.ValueID(), valueID)
},
func(v Value) {
valueMutationCallbackCalled = true
Expand Down Expand Up @@ -1576,7 +1586,9 @@ func TestMutateElementFromReadOnlyMapIterator(t *testing.T) {
},
func(v Value) {
valueMutationCallbackCalled = true
require.Equal(t, childMap.ValueID(), v.(mutableValueNotifier).ValueID())
valueID, err := GetMutableValueNotifierValueID(v)
require.NoError(t, err)
require.Equal(t, childMap.ValueID(), valueID)
})

require.ErrorAs(t, err, &mutationError)
Expand Down Expand Up @@ -1626,7 +1638,9 @@ func TestMutateElementFromReadOnlyMapIterator(t *testing.T) {
},
func(v Value) {
keyMutationCallbackCalled = true
require.Equal(t, childMapKey.ValueID(), v.(mutableValueNotifier).ValueID())
valueID, err := GetMutableValueNotifierValueID(v)
require.NoError(t, err)
require.Equal(t, childMapKey.ValueID(), valueID)
})

require.ErrorAs(t, err, &mutationError)
Expand Down Expand Up @@ -1674,7 +1688,9 @@ func TestMutateElementFromReadOnlyMapIterator(t *testing.T) {
},
func(v Value) {
valueMutationCallbackCalled = true
require.Equal(t, childMap.ValueID(), v.(mutableValueNotifier).ValueID())
valueID, err := GetMutableValueNotifierValueID(v)
require.NoError(t, err)
require.Equal(t, childMap.ValueID(), valueID)
})

require.ErrorAs(t, err, &mutationError)
Expand Down Expand Up @@ -1726,7 +1742,8 @@ func TestMutateElementFromReadOnlyMapIterator(t *testing.T) {
},
func(k Value) {
keyMutationCallbackCalled = true
vid := k.(mutableValueNotifier).ValueID()
vid, err := GetMutableValueNotifierValueID(k)
require.NoError(t, err)
require.True(t, childMapKey1.ValueID() == vid || childMapKey2.ValueID() == vid)
},
func(v Value) {
Expand Down Expand Up @@ -1783,7 +1800,8 @@ func TestMutateElementFromReadOnlyMapIterator(t *testing.T) {
},
func(v Value) {
valueMutationCallbackCalled = true
vid := v.(mutableValueNotifier).ValueID()
vid, err := GetMutableValueNotifierValueID(v)
require.NoError(t, err)
require.True(t, childMap1.ValueID() == vid || childMap2.ValueID() == vid)
})

Expand Down Expand Up @@ -1837,7 +1855,8 @@ func TestMutateElementFromReadOnlyMapIterator(t *testing.T) {
},
func(v Value) {
keyMutationCallbackCalled = true
vid := v.(mutableValueNotifier).ValueID()
vid, err := GetMutableValueNotifierValueID(v)
require.NoError(t, err)
require.True(t, childMapKey1.ValueID() == vid || childMapKey2.ValueID() == vid)
})

Expand Down Expand Up @@ -1887,7 +1906,8 @@ func TestMutateElementFromReadOnlyMapIterator(t *testing.T) {
},
func(v Value) {
valueMutationCallbackCalled = true
vid := v.(mutableValueNotifier).ValueID()
vid, err := GetMutableValueNotifierValueID(v)
require.NoError(t, err)
require.True(t, childMap1.ValueID() == vid || childMap2.ValueID() == vid)
})

Expand Down Expand Up @@ -1960,7 +1980,8 @@ func TestMutateElementFromReadOnlyMapIterator(t *testing.T) {
},
func(k Value) {
keyMutationCallbackCalled = true
vid := k.(mutableValueNotifier).ValueID()
vid, err := GetMutableValueNotifierValueID(k)
require.NoError(t, err)
require.True(t, childMapKey1.ValueID() == vid || childMapKey2.ValueID() == vid)
},
func(v Value) {
Expand Down Expand Up @@ -2036,7 +2057,8 @@ func TestMutateElementFromReadOnlyMapIterator(t *testing.T) {
},
func(v Value) {
valueMutationCallbackCalled = true
vid := v.(mutableValueNotifier).ValueID()
vid, err := GetMutableValueNotifierValueID(v)
require.NoError(t, err)
require.True(t, childMap1.ValueID() == vid || childMap2.ValueID() == vid)
})

Expand Down Expand Up @@ -2110,7 +2132,8 @@ func TestMutateElementFromReadOnlyMapIterator(t *testing.T) {
},
func(v Value) {
keyMutationCallbackCalled = true
vid := v.(mutableValueNotifier).ValueID()
vid, err := GetMutableValueNotifierValueID(v)
require.NoError(t, err)
require.True(t, childMapKey1.ValueID() == vid || childMapKey2.ValueID() == vid)
})

Expand Down Expand Up @@ -2179,7 +2202,8 @@ func TestMutateElementFromReadOnlyMapIterator(t *testing.T) {
},
func(v Value) {
valueMutationCallbackCalled = true
vid := v.(mutableValueNotifier).ValueID()
vid, err := GetMutableValueNotifierValueID(v)
require.NoError(t, err)
require.True(t, childMap1.ValueID() == vid || childMap2.ValueID() == vid)
})

Expand Down
43 changes: 0 additions & 43 deletions utils_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -497,46 +497,3 @@ func IsMapRootDataSlab(m *OrderedMap) bool {
func GetMapRootSlabByteSize(m *OrderedMap) uint32 {
return GetMapRootSlab(m).ByteSize()
}

func NewArrayRootDataSlab(id SlabID, storables []Storable) ArraySlab {
size := uint32(arrayRootDataSlabPrefixSize)

for _, storable := range storables {
size += storable.ByteSize()
}

return &ArrayDataSlab{
header: ArraySlabHeader{
slabID: id,
size: size,
count: uint32(len(storables)),
},
elements: storables,
}
}

func GetArrayMetaDataSlabChildInfo(metaDataSlab *ArrayMetaDataSlab) (childSlabIDs []SlabID, childCounts []uint32) {
childSlabIDs = make([]SlabID, len(metaDataSlab.childrenHeaders))
childCounts = make([]uint32, len(metaDataSlab.childrenHeaders))

for i, childHeader := range metaDataSlab.childrenHeaders {
childSlabIDs[i] = childHeader.slabID
childCounts[i] = childHeader.count
}

return childSlabIDs, childCounts
}

func GetMapMetaDataSlabChildInfo(metaDataSlab *MapMetaDataSlab) (childSlabIDs []SlabID, childSizes []uint32, childFirstKeys []Digest) {
childSlabIDs = make([]SlabID, len(metaDataSlab.childrenHeaders))
childSizes = make([]uint32, len(metaDataSlab.childrenHeaders))
childFirstKeys = make([]Digest, len(metaDataSlab.childrenHeaders))

for i, childHeader := range metaDataSlab.childrenHeaders {
childSlabIDs[i] = childHeader.slabID
childSizes[i] = childHeader.size
childFirstKeys[i] = childHeader.firstKey
}

return childSlabIDs, childSizes, childFirstKeys
}

0 comments on commit d2df8f8

Please sign in to comment.