Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 232162e

Browse files
committed
nestedArrayAlongsideBoolean
1 parent 3362a36 commit 232162e

7 files changed

Lines changed: 1077 additions & 0 deletions

tests/abi.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -962,4 +962,16 @@ describe('ABI', function () {
962962
3n,
963963
]);
964964
});
965+
966+
test('nestedArrayAlongsideBoolean', async () => {
967+
const { appClient } = await compileAndCreate('nestedArrayAlongsideBoolean');
968+
969+
expect(await runMethod(appClient, 'nestedArrayAlongsideBoolean')).toEqual([
970+
[[...Buffer.from('abcd')], [...Buffer.from('efgh')]],
971+
1n,
972+
2n,
973+
3n,
974+
false,
975+
]);
976+
});
965977
});

tests/contracts/abi.algo.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1695,3 +1695,19 @@ class ABITestNestedArrayInBoxWithoutBool extends Contract {
16951695
return this.bMap('bMap').value;
16961696
}
16971697
}
1698+
1699+
class ABITestNestedArrayAlongsideBoolean extends Contract {
1700+
gMap = GlobalStateMap<bytes, T10>({ maxKeys: 1 });
1701+
1702+
nestedArrayAlongsideBoolean(): T10 {
1703+
const o: T10 = {
1704+
bytes4Array: ['abcd' as bytes<4>, 'efgh' as bytes<4>],
1705+
u64a: 1,
1706+
u64b: 2,
1707+
u64c: 3,
1708+
boolValue: false,
1709+
};
1710+
1711+
return o;
1712+
}
1713+
}
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
#pragma version 10
2+
intcblock 0 1
3+
bytecblock 0x
4+
5+
// This TEAL was generated by TEALScript v0.106.0
6+
// https://github.com/algorandfoundation/TEALScript
7+
8+
// This contract is compliant with and/or implements the following ARCs: [ ARC4 ]
9+
10+
// The following ten lines of TEAL handle initial program flow
11+
// This pattern is used to make it easy for anyone to parse the start of the program and determine if a specific action is allowed
12+
// Here, action refers to the OnComplete in combination with whether the app is being created or called
13+
// Every possible action for this contract is represented in the switch statement
14+
// If the action is not implemented in the contract, its respective branch will be "*NOT_IMPLEMENTED" which just contains "err"
15+
txn ApplicationID
16+
!
17+
pushint 6
18+
*
19+
txn OnCompletion
20+
+
21+
switch *call_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *create_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED
22+
23+
*NOT_IMPLEMENTED:
24+
// The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?
25+
err
26+
27+
// nestedArrayAlongsideBoolean()(byte[4][],uint64,uint64,uint64,bool)
28+
*abi_route_nestedArrayAlongsideBoolean:
29+
// The ABI return prefix
30+
pushbytes 0x151f7c75
31+
32+
// execute nestedArrayAlongsideBoolean()(byte[4][],uint64,uint64,uint64,bool)
33+
callsub nestedArrayAlongsideBoolean
34+
concat
35+
log
36+
intc 1 // 1
37+
return
38+
39+
// nestedArrayAlongsideBoolean(): T10
40+
nestedArrayAlongsideBoolean:
41+
proto 0 1
42+
43+
// Push empty bytes after the frame pointer to reserve space for local variables
44+
bytec 0 // 0x
45+
46+
// tests/contracts/abi.algo.ts:1703
47+
// o: T10 = {
48+
// bytes4Array: ['abcd' as bytes<4>, 'efgh' as bytes<4>],
49+
// u64a: 1,
50+
// u64b: 2,
51+
// u64c: 3,
52+
// boolValue: false,
53+
// }
54+
bytec 0 // initial head
55+
bytec 0 // initial tail
56+
pushbytes 0x001a // initial head offset
57+
pushbytes 0x00026162636465666768
58+
callsub *process_dynamic_tuple_element
59+
pushbytes 0x0000000000000001
60+
callsub *process_static_tuple_element
61+
pushbytes 0x0000000000000002
62+
callsub *process_static_tuple_element
63+
pushbytes 0x0000000000000003
64+
callsub *process_static_tuple_element
65+
pushbytes 0x00
66+
intc 0 // 0
67+
dup
68+
setbit
69+
callsub *process_static_tuple_element
70+
concat
71+
pop // pop head offset
72+
concat // concat head and tail
73+
frame_bury 0 // o: T10
74+
75+
// tests/contracts/abi.algo.ts:1711
76+
// return o;
77+
frame_dig 0 // o: T10
78+
79+
// set the subroutine return value
80+
frame_bury 0
81+
retsub
82+
83+
*abi_route_createApplication:
84+
intc 1 // 1
85+
return
86+
87+
*create_NoOp:
88+
pushbytes 0xb8447b36 // method "createApplication()void"
89+
txna ApplicationArgs 0
90+
match *abi_route_createApplication
91+
92+
// this contract does not implement the given ABI method for create NoOp
93+
err
94+
95+
*call_NoOp:
96+
pushbytes 0xc49cb9a7 // method "nestedArrayAlongsideBoolean()(byte[4][],uint64,uint64,uint64,bool)"
97+
txna ApplicationArgs 0
98+
match *abi_route_nestedArrayAlongsideBoolean
99+
100+
// this contract does not implement the given ABI method for call NoOp
101+
err
102+
103+
*process_static_tuple_element:
104+
proto 4 3
105+
frame_dig -4 // tuple head
106+
frame_dig -1 // element
107+
concat
108+
frame_dig -3 // tuple tail
109+
frame_dig -2 // head offset
110+
retsub
111+
112+
*process_dynamic_tuple_element:
113+
proto 4 3
114+
frame_dig -4 // tuple head
115+
frame_dig -2 // head offset
116+
concat
117+
frame_bury -4 // tuple head
118+
frame_dig -1 // element
119+
dup
120+
len
121+
frame_dig -2 // head offset
122+
btoi
123+
+
124+
itob
125+
extract 6 2
126+
frame_bury -2 // head offset
127+
frame_dig -3 // tuple tail
128+
swap
129+
concat
130+
frame_bury -3 // tuple tail
131+
frame_dig -4 // tuple head
132+
frame_dig -3 // tuple tail
133+
frame_dig -2 // head offset
134+
retsub
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
{
2+
"hints": {
3+
"nestedArrayAlongsideBoolean()(byte[4][],uint64,uint64,uint64,bool)": {
4+
"call_config": {
5+
"no_op": "CALL"
6+
}
7+
},
8+
"createApplication()void": {
9+
"call_config": {
10+
"no_op": "CREATE"
11+
}
12+
}
13+
},
14+
"bare_call_config": {
15+
"no_op": "NEVER",
16+
"opt_in": "NEVER",
17+
"close_out": "NEVER",
18+
"update_application": "NEVER",
19+
"delete_application": "NEVER"
20+
},
21+
"schema": {
22+
"local": {
23+
"declared": {},
24+
"reserved": {}
25+
},
26+
"global": {
27+
"declared": {},
28+
"reserved": {}
29+
}
30+
},
31+
"state": {
32+
"global": {
33+
"num_byte_slices": 1,
34+
"num_uints": 0
35+
},
36+
"local": {
37+
"num_byte_slices": 0,
38+
"num_uints": 0
39+
}
40+
},
41+
"source": {
42+
"approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoJY2FsbHN1YiBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKTogVDEwCm5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MDMKCS8vIG86IFQxMCA9IHsKCS8vICAgICAgIGJ5dGVzNEFycmF5OiBbJ2FiY2QnIGFzIGJ5dGVzPDQ+LCAnZWZnaCcgYXMgYnl0ZXM8ND5dLAoJLy8gICAgICAgdTY0YTogMSwKCS8vICAgICAgIHU2NGI6IDIsCgkvLyAgICAgICB1NjRjOiAzLAoJLy8gICAgICAgYm9vbFZhbHVlOiBmYWxzZSwKCS8vICAgICB9CglieXRlYyAwIC8vICBpbml0aWFsIGhlYWQKCWJ5dGVjIDAgLy8gIGluaXRpYWwgdGFpbAoJcHVzaGJ5dGVzIDB4MDAxYSAvLyBpbml0aWFsIGhlYWQgb2Zmc2V0CglwdXNoYnl0ZXMgMHgwMDAyNjE2MjYzNjQ2NTY2Njc2OAoJY2FsbHN1YiAqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCWNvbmNhdAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglmcmFtZV9idXJ5IDAgLy8gbzogVDEwCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MTEKCS8vIHJldHVybiBvOwoJZnJhbWVfZGlnIDAgLy8gbzogVDEwCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4YzQ5Y2I5YTcgLy8gbWV0aG9kICJuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKShieXRlWzRdW10sdWludDY0LHVpbnQ2NCx1aW50NjQsYm9vbCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi",
43+
"clear": "I3ByYWdtYSB2ZXJzaW9uIDEw"
44+
},
45+
"contract": {
46+
"name": "ABITestNestedArrayAlongsideBoolean",
47+
"desc": "",
48+
"methods": [
49+
{
50+
"name": "nestedArrayAlongsideBoolean",
51+
"args": [],
52+
"returns": {
53+
"type": "(byte[4][],uint64,uint64,uint64,bool)"
54+
}
55+
},
56+
{
57+
"name": "createApplication",
58+
"args": [],
59+
"returns": {
60+
"type": "void"
61+
}
62+
}
63+
]
64+
}
65+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"name": "ABITestNestedArrayAlongsideBoolean",
3+
"desc": "",
4+
"methods": [
5+
{
6+
"name": "nestedArrayAlongsideBoolean",
7+
"args": [],
8+
"returns": {
9+
"type": "(byte[4][],uint64,uint64,uint64,bool)"
10+
}
11+
},
12+
{
13+
"name": "createApplication",
14+
"args": [],
15+
"returns": {
16+
"type": "void"
17+
}
18+
}
19+
]
20+
}

0 commit comments

Comments
 (0)