Skip to content

Commit

Permalink
fix(array): 🐛 support schemas when copying from array
Browse files Browse the repository at this point in the history
  • Loading branch information
matteo-cristino authored and jaromil committed Aug 28, 2023
1 parent 7804ea5 commit 2654cad
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/lua/zencode_array.lua
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,13 @@ When("create the copy of element '' in array ''", function(pos, arr)
ZEN.assert(num, "Argument is not a position number: "..pos)
ZEN.assert(src[num], "No element found in: "..arr.."["..pos.."]")
ACK.copy = src[num]
new_codec('copy', {encoding = src_codec.encoding})
local n_codec = { encoding = src_codec.encoding }
-- table of schemas can only contain elements
if src_codec.schema then
n_codec.schema = src_codec.schema
n_codec.zentype = "e"
end
new_codec('copy', n_codec)
end)

local function _insert_in(what, dest)
Expand Down
26 changes: 26 additions & 0 deletions test/zencode/array.bats
Original file line number Diff line number Diff line change
Expand Up @@ -970,3 +970,29 @@ EOF
save_output "copy_element.json"
assert_output '{"dictionary_from_dictionary":{"paperino":"duck"},"string_from_array_1":"pluto","string_from_array_2":"paperino","string_from_array_3":"topolino","string_from_dictionary_1":"dog","string_from_dictionary_2":"mouse"}'
}

@test "copy element from schemas" {
cat << EOF | save_asset copy_from_schema_array.data
{
"addresses_signatures": [
{
"address": "0x2B8070975AF995Ef7eb949AE28ee7706B9039504",
"signature": "0xed8f36c71989f8660e8f5d4adbfd8f1c0288cca90d3a5330b7bf735d71ab52fe7ba0a7827dc4ba707431f1c10babd389f658f8e208b89390a9be3c097579a2ff1b",
},
{
"address": "0x3028806AC293B5aC9b863B685c73813626311DaD",
"signature": "0x40d305373c648bb6b2bbadebe02ada256a9d0b3d3c37367c0a2795e367b22f7372e40dfc3497927764d1585783d058e4367bb4d24d2107777d7aa4ddcb6593c71b"
}
]
}
EOF

cat << EOF | zexe copy_from_schema_array.zen copy_from_schema_array.data
Scenario 'ethereum': copy element
Given I have a 'ethereum address signature pair array' named 'addresses_signatures'
When I create the copy of element '1' in array 'addresses_signatures'
Then print the 'copy'
EOF
save_output 'copy_from_schema_array.json'
assert_output '{"copy":{"address":"0x2B8070975AF995Ef7eb949AE28ee7706B9039504","signature":"0xed8f36c71989f8660e8f5d4adbfd8f1c0288cca90d3a5330b7bf735d71ab52fe7ba0a7827dc4ba707431f1c10babd389f658f8e208b89390a9be3c097579a2ff1b"}}'
}

0 comments on commit 2654cad

Please sign in to comment.