Skip to content

Commit f90ee30

Browse files
committed
TEST: Add test for array of structs
1 parent f5310c1 commit f90ee30

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

integration_tests/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,7 @@ RUN(NAME structs_19 LABELS cpython llvm c
477477
RUN(NAME structs_20 LABELS cpython llvm c
478478
EXTRAFILES structs_20b.c)
479479
RUN(NAME structs_21 LABELS cpython llvm c)
480+
RUN(NAME structs_22 LABELS cpython llvm c)
480481
RUN(NAME sizeof_01 LABELS llvm c
481482
EXTRAFILES sizeof_01b.c)
482483
RUN(NAME sizeof_02 LABELS cpython llvm c)

integration_tests/structs_22.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
from lpython import dataclass, i32, f64, u64
2+
from numpy import array
3+
4+
@dataclass
5+
class Foo:
6+
x: i32
7+
y: i32
8+
9+
@dataclass
10+
class Foo2:
11+
p: f64
12+
q: i32
13+
r: u64
14+
15+
def main0() -> None:
16+
foos: Foo[2] = array([Foo(1, 2), Foo(3, 4)])
17+
print(foos[0].x, foos[0].y, foos[1].x, foos[1].y)
18+
19+
assert foos[0].x == 1
20+
assert foos[0].y == 2
21+
assert foos[1].x == 3
22+
assert foos[1].y == 4
23+
24+
def main1() -> None:
25+
foos2: Foo2[3] = array([Foo2(-2.3, 42, u64(3)), Foo2(45.5, -3, u64(10001)), Foo2(1.0, -101, u64(100))])
26+
i: i32
27+
for i in range(3):
28+
print(foos2[i].p, foos2[i].q, foos2[i].r)
29+
30+
eps: f64
31+
eps = 1e-12
32+
assert abs(foos2[0].p - (-2.3)) <= eps
33+
assert foos2[0].q == 42
34+
assert foos2[0].r == u64(3)
35+
assert abs(foos2[1].p - (45.5)) <= eps
36+
assert foos2[1].q == -3
37+
assert foos2[1].r == u64(10001)
38+
assert abs(foos2[2].p - (1.0)) <= eps
39+
assert foos2[2].q == -101
40+
assert foos2[2].r == u64(100)
41+
42+
main0()
43+
main1()

0 commit comments

Comments
 (0)