Skip to content

Commit 39e6a49

Browse files
Merge pull request #5266 from dotty-staging/tuple-tests
Add tuple >22 test cases from #2199
2 parents b2500e8 + 095fbfe commit 39e6a49

8 files changed

+1221
-0
lines changed

tests/pending/tuple-cons.scala

Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
import dotty._
2+
3+
object Test {
4+
def main(args: Array[String]) = {
5+
val t1: *:[Int, *:[Int, Unit]] = (1, 2)
6+
7+
val t2: *:[Int, *:[Int, *:[Int, Unit]]] = 0 *: t1
8+
9+
assert(t2.head == 0)
10+
assert(t2.tail.head == 1)
11+
assert(t2.tail.tail.head == 2)
12+
13+
t2 match {
14+
case e1 *: e2 *: e3 *: () =>
15+
assert(e1 == 0)
16+
assert(e2 == 1)
17+
assert(e3 == 2)
18+
}
19+
20+
val t3: *:[Int, *:[Int, *:[Int, *:[Int, Unit]]]] = -1 *: t2
21+
22+
assert(t3.head == -1)
23+
assert(t3.tail.head == 0)
24+
assert(t3.tail.tail.head == 1)
25+
assert(t3.tail.tail.tail.head == 2)
26+
27+
t3 match {
28+
case e1 *: e2 *: e3 *: e4 *: () =>
29+
assert(e1 == -1)
30+
assert(e2 == 0)
31+
assert(e3 == 1)
32+
assert(e4 == 2)
33+
}
34+
35+
type I = Int
36+
37+
// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
38+
val t20: *:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,Unit]]]]]]]]]]]]]]]]]]]] = 1 *: 2 *: 3 *: 4 *: 5 *: 6 *: 7 *: 8 *: 9 *: 10 *: 11 *: 12 *: 13 *: 14 *: 15 *: 16 *: 17 *: 18 *: 19 *: 20 *: ()
39+
40+
t20 match {
41+
case e1 *: e2 *: e3 *: e4 *: e5 *: e6 *: e7 *: e8 *: e9 *: e10 *: e11 *: e12 *: e13 *: e14 *: e15 *: e16 *: e17 *: e18 *: e19 *: e20 *: () =>
42+
assert(e1 == 1)
43+
assert(e2 == 2)
44+
assert(e3 == 3)
45+
assert(e4 == 4)
46+
assert(e5 == 5)
47+
assert(e6 == 6)
48+
assert(e7 == 7)
49+
assert(e8 == 8)
50+
assert(e9 == 9)
51+
assert(e10 == 10)
52+
assert(e11 == 11)
53+
assert(e12 == 12)
54+
assert(e13 == 13)
55+
assert(e14 == 14)
56+
assert(e15 == 15)
57+
assert(e16 == 16)
58+
assert(e17 == 17)
59+
assert(e18 == 18)
60+
assert(e19 == 19)
61+
assert(e20 == 20)
62+
}
63+
64+
// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
65+
val t21: *:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,Unit]]]]]]]]]]]]]]]]]]]]] = 21 *: t20
66+
67+
t21 match {
68+
case e21 *: e1 *: e2 *: e3 *: e4 *: e5 *: e6 *: e7 *: e8 *: e9 *: e10 *: e11 *: e12 *: e13 *: e14 *: e15 *: e16 *: e17 *: e18 *: e19 *: e20 *: () =>
69+
assert(e1 == 1)
70+
assert(e2 == 2)
71+
assert(e3 == 3)
72+
assert(e4 == 4)
73+
assert(e5 == 5)
74+
assert(e6 == 6)
75+
assert(e7 == 7)
76+
assert(e8 == 8)
77+
assert(e9 == 9)
78+
assert(e10 == 10)
79+
assert(e11 == 11)
80+
assert(e12 == 12)
81+
assert(e13 == 13)
82+
assert(e14 == 14)
83+
assert(e15 == 15)
84+
assert(e16 == 16)
85+
assert(e17 == 17)
86+
assert(e18 == 18)
87+
assert(e19 == 19)
88+
assert(e20 == 20)
89+
assert(e21 == 21)
90+
}
91+
92+
// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
93+
val t22: *:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,Unit]]]]]]]]]]]]]]]]]]]]]] = 22 *: t21
94+
95+
t22 match {
96+
case e22 *: e21 *: e1 *: e2 *: e3 *: e4 *: e5 *: e6 *: e7 *: e8 *: e9 *: e10 *: e11 *: e12 *: e13 *: e14 *: e15 *: e16 *: e17 *: e18 *: e19 *: e20 *: () =>
97+
assert(e1 == 1)
98+
assert(e2 == 2)
99+
assert(e3 == 3)
100+
assert(e4 == 4)
101+
assert(e5 == 5)
102+
assert(e6 == 6)
103+
assert(e7 == 7)
104+
assert(e8 == 8)
105+
assert(e9 == 9)
106+
assert(e10 == 10)
107+
assert(e11 == 11)
108+
assert(e12 == 12)
109+
assert(e13 == 13)
110+
assert(e14 == 14)
111+
assert(e15 == 15)
112+
assert(e16 == 16)
113+
assert(e17 == 17)
114+
assert(e18 == 18)
115+
assert(e19 == 19)
116+
assert(e20 == 20)
117+
assert(e21 == 21)
118+
assert(e22 == 22)
119+
}
120+
121+
// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
122+
val t23: *:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,Unit]]]]]]]]]]]]]]]]]]]]]]] = 23 *: t22
123+
124+
t23 match {
125+
case e23 *: e22 *: e21 *: e1 *: e2 *: e3 *: e4 *: e5 *: e6 *: e7 *: e8 *: e9 *: e10 *: e11 *: e12 *: e13 *: e14 *: e15 *: e16 *: e17 *: e18 *: e19 *: e20 *: () =>
126+
assert(e1 == 1)
127+
assert(e2 == 2)
128+
assert(e3 == 3)
129+
assert(e4 == 4)
130+
assert(e5 == 5)
131+
assert(e6 == 6)
132+
assert(e7 == 7)
133+
assert(e8 == 8)
134+
assert(e9 == 9)
135+
assert(e10 == 10)
136+
assert(e11 == 11)
137+
assert(e12 == 12)
138+
assert(e13 == 13)
139+
assert(e14 == 14)
140+
assert(e15 == 15)
141+
assert(e16 == 16)
142+
assert(e17 == 17)
143+
assert(e18 == 18)
144+
assert(e19 == 19)
145+
assert(e20 == 20)
146+
assert(e21 == 21)
147+
assert(e22 == 22)
148+
assert(e23 == 23)
149+
}
150+
151+
// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
152+
val t24: *:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,*:[I,Unit]]]]]]]]]]]]]]]]]]]]]]]] = 24 *: t23
153+
154+
t24 match {
155+
case e24 *: e23 *: e22 *: e21 *: e1 *: e2 *: e3 *: e4 *: e5 *: e6 *: e7 *: e8 *: e9 *: e10 *: e11 *: e12 *: e13 *: e14 *: e15 *: e16 *: e17 *: e18 *: e19 *: e20 *: () =>
156+
assert(e1 == 1)
157+
assert(e2 == 2)
158+
assert(e3 == 3)
159+
assert(e4 == 4)
160+
assert(e5 == 5)
161+
assert(e6 == 6)
162+
assert(e7 == 7)
163+
assert(e8 == 8)
164+
assert(e9 == 9)
165+
assert(e10 == 10)
166+
assert(e11 == 11)
167+
assert(e12 == 12)
168+
assert(e13 == 13)
169+
assert(e14 == 14)
170+
assert(e15 == 15)
171+
assert(e16 == 16)
172+
assert(e17 == 17)
173+
assert(e18 == 18)
174+
assert(e19 == 19)
175+
assert(e20 == 20)
176+
assert(e21 == 21)
177+
assert(e22 == 22)
178+
assert(e23 == 23)
179+
assert(e24 == 24)
180+
}
181+
}
182+
}

tests/pending/tuple-erased.scala

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
object Test {
2+
def main(args: Array[String]): Unit = {
3+
val t02: Any = (1, 2)
4+
val t05: Any = (1, 2, 4, 5, 6)
5+
val t21: Any = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
6+
val t22: Any = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
7+
val t23: Any = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23)
8+
val t24: Any = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
9+
10+
assert(t02.asInstanceOf[Tuple] == t02)
11+
assert(t05.asInstanceOf[Tuple] == t05)
12+
assert(t21.asInstanceOf[Tuple] == t21)
13+
assert(t22.asInstanceOf[Tuple] == t22)
14+
assert(t23.asInstanceOf[Tuple] == t23)
15+
assert(t24.asInstanceOf[Tuple] == t24)
16+
17+
assert(t02.isInstanceOf[Tuple])
18+
assert(t05.isInstanceOf[Tuple])
19+
assert(t21.isInstanceOf[Tuple])
20+
assert(t22.isInstanceOf[Tuple])
21+
assert(t23.isInstanceOf[Tuple])
22+
assert(t24.isInstanceOf[Tuple])
23+
24+
assert(t02.asInstanceOf[Product] == t02)
25+
assert(t05.asInstanceOf[Product] == t05)
26+
assert(t21.asInstanceOf[Product] == t21)
27+
assert(t22.asInstanceOf[Product] == t22)
28+
assert(t23.asInstanceOf[Product] == t23)
29+
assert(t24.asInstanceOf[Product] == t24)
30+
31+
assert(t02.isInstanceOf[Product])
32+
assert(t05.isInstanceOf[Product])
33+
assert(t21.isInstanceOf[Product])
34+
assert(t22.isInstanceOf[Product])
35+
assert(t23.isInstanceOf[Product])
36+
assert(t24.isInstanceOf[Product])
37+
38+
assert(t02.asInstanceOf[*:[_, _]] == t02)
39+
assert(t05.asInstanceOf[*:[_, _]] == t05)
40+
assert(t21.asInstanceOf[*:[_, _]] == t21)
41+
assert(t22.asInstanceOf[*:[_, _]] == t22)
42+
assert(t23.asInstanceOf[*:[_, _]] == t23)
43+
assert(t24.asInstanceOf[*:[_, _]] == t24)
44+
45+
assert(t02.isInstanceOf[*:[_, _]])
46+
assert(t05.isInstanceOf[*:[_, _]])
47+
assert(t21.isInstanceOf[*:[_, _]])
48+
assert(t22.isInstanceOf[*:[_, _]])
49+
assert(t23.isInstanceOf[*:[_, _]])
50+
assert(t24.isInstanceOf[*:[_, _]])
51+
52+
val x = ()
53+
assert(x.asInstanceOf[Tuple] == x)
54+
assert(x.asInstanceOf[Any] == x)
55+
56+
val y: *:[Int, *:[String, Unit]] = (1, "s")
57+
y: Tuple
58+
}
59+
}
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
object Test {
2+
def main(args: Array[String]) = {
3+
assert(Some(2) == (for {
4+
x1 <- Some(1)
5+
x2 = x1
6+
} yield x1 + x2))
7+
8+
assert(Some(3) == (for {
9+
x1 <- Some(1)
10+
x2 = x1
11+
x3 = x1
12+
} yield x1 + x2 + x3))
13+
14+
assert(Some(4) == (for {
15+
x1 <- Some(1)
16+
x2 = x1
17+
x3 = x1
18+
x4 = x1
19+
} yield x1 + x2 + x3 + x4))
20+
21+
assert(Some(5) == (for {
22+
x1 <- Some(1)
23+
x2 = x1
24+
x3 = x1
25+
x4 = x1
26+
x5 = x1
27+
} yield x1 + x2 + x3 + x4 + x5))
28+
29+
assert(Some(6) == (for {
30+
x1 <- Some(1)
31+
x2 = x1
32+
x3 = x1
33+
x4 = x1
34+
x5 = x1
35+
x6 = x1
36+
} yield x1 + x2 + x3 + x4 + x5 + x6))
37+
38+
assert(Some(21) == (for {
39+
x1 <- Some(1)
40+
x2 = x1
41+
x3 = x1
42+
x4 = x1
43+
x5 = x1
44+
x6 = x1
45+
x7 = x1
46+
x8 = x1
47+
x9 = x1
48+
x10 = x1
49+
x11 = x1
50+
x12 = x1
51+
x13 = x1
52+
x14 = x1
53+
x15 = x1
54+
x16 = x1
55+
x17 = x1
56+
x18 = x1
57+
x19 = x1
58+
x20 = x1
59+
x21 = x1
60+
} yield x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 + x13 + x14 + x15 + x16 + x17 + x18 + x19 + x20 + x21))
61+
62+
assert(Some(22) == (for {
63+
x1 <- Some(1)
64+
x2 = x1
65+
x3 = x1
66+
x4 = x1
67+
x5 = x1
68+
x6 = x1
69+
x7 = x1
70+
x8 = x1
71+
x9 = x1
72+
x10 = x1
73+
x11 = x1
74+
x12 = x1
75+
x13 = x1
76+
x14 = x1
77+
x15 = x1
78+
x16 = x1
79+
x17 = x1
80+
x18 = x1
81+
x19 = x1
82+
x20 = x1
83+
x21 = x1
84+
x22 = x1
85+
} yield x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 + x13 + x14 + x15 + x16 + x17 + x18 + x19 + x20 + x21 + x22))
86+
87+
assert(Some(23) == (for {
88+
x1 <- Some(1)
89+
x2 = x1
90+
x3 = x1
91+
x4 = x1
92+
x5 = x1
93+
x6 = x1
94+
x7 = x1
95+
x8 = x1
96+
x9 = x1
97+
x10 = x1
98+
x11 = x1
99+
x12 = x1
100+
x13 = x1
101+
x14 = x1
102+
x15 = x1
103+
x16 = x1
104+
x17 = x1
105+
x18 = x1
106+
x19 = x1
107+
x20 = x1
108+
x21 = x1
109+
x22 = x1
110+
x23 = x1
111+
} yield x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 + x13 + x14 + x15 + x16 + x17 + x18 + x19 + x20 + x21 + x22 + x23))
112+
113+
assert(Some(24) == (for {
114+
x1 <- Some(1)
115+
x2 = x1
116+
x3 = x1
117+
x4 = x1
118+
x5 = x1
119+
x6 = x1
120+
x7 = x1
121+
x8 = x1
122+
x9 = x1
123+
x10 = x1
124+
x11 = x1
125+
x12 = x1
126+
x13 = x1
127+
x14 = x1
128+
x15 = x1
129+
x16 = x1
130+
x17 = x1
131+
x18 = x1
132+
x19 = x1
133+
x20 = x1
134+
x21 = x1
135+
x22 = x1
136+
x23 = x1
137+
x24 = x1
138+
} yield x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 + x13 + x14 + x15 + x16 + x17 + x18 + x19 + x20 + x21 + x22 + x23 + x24))
139+
}
140+
}

0 commit comments

Comments
 (0)