@@ -35,6 +35,26 @@ var testChildKey = []byte("childKey")
3535var testKey = []byte ("key" )
3636var testValue = []byte ("value" )
3737
38+ func Test_ext_offchain_index_clear_version_1 (t * testing.T ) {
39+ inst := NewTestInstance (t , runtime .HOST_API_TEST_RUNTIME )
40+
41+ testKey := []byte ("testkey" )
42+ testValue := []byte ("testvalue" )
43+ err := inst .ctx .NodeStorage .BaseDB .Put (testKey , testValue )
44+ require .NoError (t , err )
45+
46+ encKey , err := scale .Marshal (testKey )
47+ require .NoError (t , err )
48+
49+ _ , err = inst .Exec ("ext_offchain_index_clear_version_1" , encKey )
50+ require .NoError (t , err )
51+
52+ value , err := inst .ctx .NodeStorage .BaseDB .Get (testKey )
53+ require .NoError (t , err )
54+
55+ require .True (t , bytes .Equal (testValue , value ))
56+ }
57+
3858func Test_ext_offchain_timestamp_version_1 (t * testing.T ) {
3959 inst := NewTestInstance (t , runtime .HOST_API_TEST_RUNTIME )
4060 runtimeFunc , err := inst .vm .Exports .GetFunction ("rtm_ext_offchain_timestamp_version_1" )
@@ -1289,6 +1309,54 @@ func Test_ext_default_child_storage_clear_prefix_version_1(t *testing.T) {
12891309 require .Equal (t , 0 , len (keys ))
12901310}
12911311
1312+ func Test_ext_default_child_storage_clear_prefix_version_2 (t * testing.T ) {
1313+ inst := NewTestInstance (t , runtime .HOST_API_TEST_RUNTIME )
1314+
1315+ prefix := []byte ("key" )
1316+ limit := uint32 (0 )
1317+
1318+ testKeyValuePair := []struct {
1319+ key []byte
1320+ value []byte
1321+ }{
1322+ {[]byte ("keyOne" ), []byte ("value1" )},
1323+ {[]byte ("keyTwo" ), []byte ("value2" )},
1324+ {[]byte ("keyThree" ), []byte ("value3" )},
1325+ }
1326+
1327+ err := inst .ctx .Storage .SetChild (testChildKey , trie .NewEmptyTrie ())
1328+ require .NoError (t , err )
1329+
1330+ for _ , kv := range testKeyValuePair {
1331+ err = inst .ctx .Storage .SetChildStorage (testChildKey , kv .key , kv .value )
1332+ require .NoError (t , err )
1333+ }
1334+
1335+ // Confirm if value is set
1336+ keys , err := inst .ctx .Storage .(* storage.TrieState ).GetKeysWithPrefixFromChild (testChildKey , prefix )
1337+ require .NoError (t , err )
1338+ require .Equal (t , 3 , len (keys ))
1339+
1340+ encChildKey , err := scale .Marshal (testChildKey )
1341+ require .NoError (t , err )
1342+
1343+ encPrefix , err := scale .Marshal (prefix )
1344+ require .NoError (t , err )
1345+
1346+ encLimit , err := scale .Marshal (limit )
1347+ require .NoError (t , err )
1348+
1349+ data := append (encChildKey , encPrefix ... )
1350+ data = append (data , encLimit ... )
1351+
1352+ _ , err = inst .Exec ("rtm_ext_default_child_storage_clear_prefix_version_2" , data )
1353+ require .NoError (t , err )
1354+
1355+ keys , err = inst .ctx .Storage .(* storage.TrieState ).GetKeysWithPrefixFromChild (testChildKey , prefix )
1356+ require .NoError (t , err )
1357+ require .Equal (t , 0 , len (keys ))
1358+ }
1359+
12921360func Test_ext_default_child_storage_exists_version_1 (t * testing.T ) {
12931361 inst := NewTestInstance (t , runtime .HOST_API_TEST_RUNTIME )
12941362
0 commit comments