tock-mirror/testcases/record-literals.occ

74 lines
1.4 KiB
Plaintext

-- Need to test that list literals inside record literals are not collapsed.
-- Need to test that arrays of records work.
DATA TYPE ONE
RECORD
INT i:
:
DATA TYPE DIFF
RECORD
INT i:
BYTE b:
REAL32 r:
:
DATA TYPE SAME
RECORD
INT x:
INT y:
INT z:
:
DATA TYPE WITH.ARRAY
RECORD
INT x:
[4]INT xs:
:
DATA TYPE WITH.RECORD
RECORD
INT q:
WITH.ARRAY wa:
BOOL w:
:
PROC P ()
VAL INT x IS 42:
VAL ONE one IS [42]:
VAL DIFF diff IS [42, '**', 3.141]:
VAL SAME same IS [42, 43, 44]:
VAL WITH.ARRAY val.wa IS [99, [44, 33, 22, 11]]:
WITH.ARRAY wa:
VAL WITH.RECORD val.wr IS [123, val.wa, TRUE]:
WITH.RECORD wr:
SEQ
ASSERT (one[i] = 42)
ASSERT (diff[i] = 42)
ASSERT (diff[b] = 42)
ASSERT (diff[r] > 3.1)
ASSERT (diff[r] < 3.2)
ASSERT (same[x] = 42)
ASSERT (same[y] = 43)
ASSERT (same[z] = 44)
PROC check.wa (VAL WITH.ARRAY wa)
SEQ
ASSERT (wa[x] = 99)
ASSERT ((SIZE wa[xs]) = 4)
ASSERT (wa[xs][0] = 44)
ASSERT (wa[xs][1] = 33)
ASSERT (wa[xs][2] = 22)
ASSERT (wa[xs][3] = 11)
:
PROC check.wr (VAL WITH.RECORD wr)
SEQ
ASSERT (wr[q] = 123)
check.wa (wr[wa])
ASSERT (wr[w])
:
SEQ
check.wa (val.wa)
wa := val.wa
check.wa (wa)
check.wr (val.wr)
wr := val.wr
check.wr (wr)
wr[wa] := wa
check.wr (wr)
: