Skip to content

Commit a7aa834

Browse files
committed
Parallel Stream Work
1 parent e3b441b commit a7aa834

4 files changed

Lines changed: 507 additions & 95 deletions

File tree

parallel_test.py

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
import unittest
2+
from stream import Stream
3+
4+
5+
class TestStream(unittest.TestCase):
6+
7+
def test_empty(self):
8+
s = Stream.empty().parallel()
9+
self.assertEqual(s.count(), 0)
10+
11+
def test_of(self):
12+
13+
s = Stream.of(1, 2, 3, 4, 5, 6, 7, 8).parallel()
14+
15+
self.assertEqual(s.count(), 8)
16+
self.assertTrue(s.findAny().isPresent())
17+
self.assertEqual(s.findAny().get(), 1)
18+
19+
self.assertEqual(Stream.ofNullable(None).parallel(),
20+
Stream.empty().parallel())
21+
22+
self.assertEqual(Stream.of().parallel(), Stream.empty().parallel())
23+
24+
def test_iterate(self):
25+
index = 0
26+
s = Stream.iterate(index, lambda i: i + 1)
27+
28+
for elem in s:
29+
self.assertEqual(elem, index)
30+
index += 1
31+
if index == 10:
32+
break
33+
34+
def test_generate(self):
35+
index = 0
36+
s = Stream.generate(lambda: 1)
37+
38+
for elem in s:
39+
self.assertEqual(elem, 1)
40+
index += 1
41+
if index == 10:
42+
break
43+
44+
def test_concat(self):
45+
s = Stream.concat(Stream.of(1, 2, 3), Stream.of(
46+
4, 5, 6)).toList()
47+
self.assertEqual(s, [1, 2, 3, 4, 5, 6])
48+
49+
def test_filter(self):
50+
s = Stream.of(1, 2, 3, 4).filter(lambda x: x % 2 == 0).toList()
51+
self.assertEqual(s, [2, 4])
52+
53+
def test_map(self):
54+
s = Stream.of(1, 2, 3).map(lambda x: x**2).toList()
55+
self.assertEqual(s, [1, 4, 9])
56+
57+
def test_flatMap(self):
58+
s = Stream.of(1, 2, 3).flatMap(lambda x: Stream.of(x, x)).toList()
59+
self.assertEqual(s, [1, 1, 2, 2, 3, 3])
60+
61+
def test_distinct(self):
62+
s = Stream.of(1, 1, 2, 2, 3, 4)
63+
self.assertEqual(s.distinct().toList(), [1, 2, 3, 4])
64+
65+
def test_limit(self):
66+
s = Stream.iterate(0, lambda i: i + 1).limit(5).toList()
67+
self.assertEqual(s, [0, 1, 2, 3, 4])
68+
69+
def test_skip(self):
70+
s = Stream.of(1, 2, 3, 4, 5, 6).skip(3).toList()
71+
self.assertEqual(s, [4, 5, 6])
72+
73+
def test_takeWhile(self):
74+
s = Stream.of(1, 2, 3, 4, 5, 6).takeWhile(lambda x: x != 4).toList()
75+
self.assertEqual(s, [1, 2, 3])
76+
77+
def test_dropWhile(self):
78+
s = Stream.of(1, 2, 3, 4, 5, 6).dropWhile(lambda x: x != 4).toList()
79+
self.assertEqual(s, [4, 5, 6])
80+
81+
def test_sorted(self):
82+
s = Stream.of(1, 2, 5, 4, 3).sorted().toList()
83+
s2 = Stream.of(1, 2, 3, 4, 5).sorted(lambda x, y: y-x).toList()
84+
85+
self.assertEqual(s, [1, 2, 3, 4, 5])
86+
self.assertEqual(
87+
s2, [5, 4, 3, 2, 1])
88+
89+
def test_peek(self):
90+
self.count = 0
91+
92+
def inc(*args):
93+
self.count += 1
94+
95+
s = Stream.of(1, 2, 3).peek(inc)
96+
self.assertEqual(self.count, 0)
97+
98+
s = s.toList()
99+
self.assertEqual(self.count, 3)
100+
101+
def test_forEach(self):
102+
self.count = 0
103+
104+
def inc(*args):
105+
self.count += 1
106+
107+
s = Stream.of(1, 2, 3).forEach(inc)
108+
self.assertEqual(self.count, 3)
109+
110+
def test_anyMatch(self):
111+
self.assertTrue(Stream.of(1, 2, 3).anyMatch(lambda x: x % 2 == 0))
112+
self.assertFalse(
113+
Stream.of(1, 3, 5, 7).anyMatch(lambda x: x % 2 == 0))
114+
115+
def test_allMatch(self):
116+
self.assertTrue(Stream.of(2, 4, 6, 8).allMatch(lambda x: x % 2 == 0))
117+
self.assertFalse(Stream.of(1, 2, 3, 4, 5).allMatch(lambda x: x < 5))
118+
119+
def test_noneMatch(self):
120+
self.assertTrue(Stream.of(1, 2, 3, 4).noneMatch(lambda x: x > 4))
121+
self.assertFalse(Stream.of(1, 2, 3, 4, 5).noneMatch(lambda x: x > 4))
122+
123+
def test_findFirst(self):
124+
elem = Stream.of(1, 2, 3, 4, 5).findFirst()
125+
self.assertTrue(elem.isPresent())
126+
self.assertEqual(elem.get(), 1)
127+
128+
def test_findAny(self):
129+
elem = Stream.of(1, 2, 3, 4, 5).findAny()
130+
self.assertTrue(elem.isPresent())
131+
self.assertIn(elem.get(), [1, 2, 3, 4, 5])
132+
133+
def test_reduce(self):
134+
elem = Stream.of(1, 2, 3).reduce(lambda x, y: x - y)
135+
self.assertTrue(elem.isPresent())
136+
self.assertEqual(elem.get(), -4)
137+
138+
elem = Stream.of(1, 2, 3).reduce(lambda x, y: x - y, 0)
139+
self.assertTrue(elem.isPresent())
140+
self.assertEqual(elem.get(), -6)
141+
142+
def test_min(self):
143+
s = Stream.of(1, 2, 5, 4, 3)
144+
self.assertTrue(s.min().isPresent())
145+
self.assertEqual(s.min().get(), 1)
146+
147+
def test_max(self):
148+
s = Stream.of(1, 2, 5, 4, 3)
149+
self.assertTrue(s.max().isPresent())
150+
self.assertEqual(s.max().get(), 5)
151+
152+
def test_sum(self):
153+
self.assertTrue(Stream.of(1, 2, 3, 4).sum().isPresent())
154+
self.assertEqual(Stream.of(1, 2, 3, 4).sum().get(), 10)
155+
156+
def test_count(self):
157+
self.assertEqual(Stream.of(1, 2, 3, 4).count(), 4)
158+
self.assertEqual(Stream.empty().count(), 0)
159+
self.assertEqual(Stream.generate(lambda: 1).limit(10).count(), 10)
160+
161+
def test_iter(self):
162+
index = 1
163+
s = Stream.of(1, 2, 3)
164+
for elem in s:
165+
self.assertEqual(elem, index)
166+
index += 1
167+
168+
169+
if __name__ == '__main__':
170+
unittest.main()

0 commit comments

Comments
 (0)