@@ -90,6 +90,28 @@ def test_Account_set():
9090 assert actual == expected
9191
9292
93+ def test_Account_deref ():
94+ val_to_set = 2
95+ value = abi .Account ()
96+ value .set (val_to_set )
97+ expr = value .deref ()
98+ assert expr .type_of () == pt .TealType .bytes
99+ assert expr .has_return () is False
100+
101+ expected = pt .TealSimpleBlock (
102+ [
103+ pt .TealOp (None , pt .Op .load , value .stored_value .slot ),
104+ pt .TealOp (None , pt .Op .txnas , 'Accounts' ),
105+ ]
106+ )
107+ actual , _ = expr .__teal__ (options )
108+ actual .addIncoming ()
109+ actual = pt .TealBlock .NormalizeBlocks (actual )
110+
111+ with pt .TealComponent .Context .ignoreExprEquality ():
112+ assert actual == expected
113+
114+
93115def test_Asset_str ():
94116 assert str (abi .AssetTypeSpec ()) == "asset"
95117
@@ -175,6 +197,27 @@ def test_Asset_set():
175197 with pt .TealComponent .Context .ignoreExprEquality ():
176198 assert actual == expected
177199
200+ def test_Asset_deref ():
201+ val_to_set = 2
202+ value = abi .Asset ()
203+ value .set (val_to_set )
204+ expr = value .deref ()
205+ assert expr .type_of () == pt .TealType .uint64
206+ assert expr .has_return () is False
207+
208+ expected = pt .TealSimpleBlock (
209+ [
210+ pt .TealOp (None , pt .Op .load , value .stored_value .slot ),
211+ pt .TealOp (None , pt .Op .txnas , 'Assets' ),
212+ ]
213+ )
214+ actual , _ = expr .__teal__ (options )
215+ actual .addIncoming ()
216+ actual = pt .TealBlock .NormalizeBlocks (actual )
217+
218+ with pt .TealComponent .Context .ignoreExprEquality ():
219+ assert actual == expected
220+
178221
179222def test_Application_str ():
180223 assert str (abi .ApplicationTypeSpec ()) == "application"
@@ -260,3 +303,24 @@ def test_Application_set():
260303
261304 with pt .TealComponent .Context .ignoreExprEquality ():
262305 assert actual == expected
306+
307+ def test_Application_deref ():
308+ val_to_set = 2
309+ value = abi .Application ()
310+ value .set (val_to_set )
311+ expr = value .deref ()
312+ assert expr .type_of () == pt .TealType .uint64
313+ assert expr .has_return () is False
314+
315+ expected = pt .TealSimpleBlock (
316+ [
317+ pt .TealOp (None , pt .Op .load , value .stored_value .slot ),
318+ pt .TealOp (None , pt .Op .txnas , 'Applications' ),
319+ ]
320+ )
321+ actual , _ = expr .__teal__ (options )
322+ actual .addIncoming ()
323+ actual = pt .TealBlock .NormalizeBlocks (actual )
324+
325+ with pt .TealComponent .Context .ignoreExprEquality ():
326+ assert actual == expected
0 commit comments