コード例 #1
0
 def test_any(self):
     data = [0]*50
     self.assertEqual(st.send(data,st.Any()), any(data))
     data[33] = 1
     self.assertEqual(st.send(data,st.Any()), any(data))
     data = [1]*50
     self.assertEqual(st.send(data,st.Any()), any(data))
     data[33] = 0
     self.assertEqual(st.send(data,st.Any()), any(data))
コード例 #2
0
 def test_no_init_no_factory(self):
     data = [1,2,4,3,2,2,2,3,2,2,3,1,2,4,4,4]
     result = st.send(data, st.SwitchByKey(lambda x:"hello"[x]))
     vals = defaultdict(list)
     for item in data:
         vals["hello"[item]].append(item)
     self.assertEqual(result, vals)
コード例 #3
0
 def test_no_init_no_factory_no_test(self):
     data = [1,2,4,3,2,2,2,3,2,2,3,1,2,4,4,4]
     result = st.send(data, st.SwitchByKey())
     vals = defaultdict(list)
     for item in data:
         vals[item].append(item)
     self.assertEqual(result, vals)
コード例 #4
0
 def insufficient(self):
     data = [(1,2,3),
             (4,5,6),
             (7,8),
             (9,10,11)
             ]
     a,b,c = st.send(data, st.Unzip([],[],[]))
コード例 #5
0
 def test_stats(self):
     result = st.send(self.data, st.Stats())
     N = len(self.data)
     mean = sum(self.data)/N
     self.assertAlmostEqual(mean, result[1])
     std = sqrt(sum((x-mean)**2 for x in self.data)/(N-1))
     self.assertAlmostEqual(std, result[2])
     self.assertEqual(N, result[0])
コード例 #6
0
 def test_send(self):
     a = list(range(5))
     b = []
     c = st.send(iter(a), b)
     self.assertTrue(a==c)
     self.assertTrue(b==c)
     self.assertFalse(a is c)
     self.assertTrue(b is c)
コード例 #7
0
 def test_split(self):
     a = list(range(5))
     b,c = st.send(a, ([], []))
     
     self.assertTrue(a==b)
     self.assertTrue(a==c)
     self.assertFalse(b is a)
     self.assertFalse(c is a)
     self.assertFalse(b is c)
コード例 #8
0
 def test_excess(self):
     data = [(1,2,3),
             iter((4,5,6)),
             (7,8,9,10,11),
             (12,13,14)]
     a,b,c = st.send(data, st.Unzip([],[],[]))
     self.assertEqual(a, [1,4,7,12])
     self.assertEqual(b, [2,5,8,13])
     self.assertEqual(c, [3,6,9,14])
コード例 #9
0
 def test_no_init(self):
     data = [1,2,4,3,2,2,2,3,2,2,3,1,2,4,4,4]
     data = [(a,i) for i,a in enumerate(data)]
     result = st.send(data, st.SwitchByKey(lambda x:x[0],
                                 factory=lambda :st.Map(lambda x:x[1], set())))
     vals = defaultdict(set)
     for item in data:
         vals[item[0]].add(item[1])
     self.assertEqual(result, vals)
コード例 #10
0
 def test_gbk(self):
     data = [1,2,4,3,2,2,2,3,2,2,3,1,2,4,4,4]
     data = [(a,i) for i,a in enumerate(data)]
     result = st.send(data, st.SwitchByKey(lambda x:x[0], 
                                 init={1:st.Get(1,[]),
                                     2:st.Get(1, set()),
                                     3:st.Get(1, st.Sum())},
                                 factory=lambda : st.Get(1,[])
                                 ))
     vals = {}
     vals[1] = [i for a,i in data if a==1]
     vals[2] = set([i for a,i in data if a==2])
     vals[3] = sum(i for a,i in data if a==3)
     vals[4] = [i for a,i in data if a==4]
     self.assertEqual(result, vals)
コード例 #11
0
 def test_gmap_exc(self):
     a = list(range(10))
     a[5] = "moo"
     b = st.send(a, st.Map(lambda x:x/2., [], catch=TypeError))
     del a[5]
     self.assertEqual(b,[x/2. for x in a])
コード例 #12
0
 def test_group_by_n(self):
     a = range(100)
     b = st.send(a, st.GroupByN(10, []))
     self.assertTrue(all(len(x) for x in b))
コード例 #13
0
 def test_split_stop(self):
     a = itertools.count()
     b,c,d = st.send(a, (st.Limit(5,[]),
                         st.Limit(7,[]),
                         st.Limit(9,[])))
     self.assertEqual(next(a), 10)
コード例 #14
0
 def test_gmap(self):
     a = range(10)
     b = st.send(a, st.Map(lambda x:x*2, []))
     self.assertEqual(b, [x*2 for x in a])
コード例 #15
0
 def test_select_trans(self):
     data = range(10)
     for i in data:
         val = st.send(data, st.Select(i,transform=lambda x:2*x))
         self.assertEqual(val, i*2)
コード例 #16
0
 def test_limit(self):
     a = list(range(10))
     b = st.send(a, st.Limit(5,[]))
     self.assertEqual(len(b), 5)
     self.assertEqual(b, a[:5])
コード例 #17
0
 def test_filter(self):
     data = range(30)
     func = lambda x:not x%3
     ret = st.send(data, st.Filter(func, []))
     self.assertEqual(ret, list(filter(func, data)))
コード例 #18
0
 def test_min(self):
     result = st.send(self.data, st.Min())
     self.assertEqual(min(self.data), result)
コード例 #19
0
 def test_slice_4(self):
     data = list(range(30))
     ret = st.send(data, st.Slice(None,None,3, []))
     self.assertEqual(ret, data[slice(None,None,3)])
コード例 #20
0
 def test_simple_switch(self):
     data = list(range(10))
     func = lambda x:int(x<5)
     ret = st.send(data, st.Switch(func, [],[]))
     self.assertEqual(ret[1], data[:5])
     self.assertEqual(ret[0], data[5:])
コード例 #21
0
 def test_unpack_tuple(self):
     data = (("a", "b") for i in range(20))
     a,b = st.send(data, st.Unzip([],[]))
     self.assertEqual(a, ["a"]*20)
     self.assertEqual(b, ["b"]*20)
コード例 #22
0
 def test_count(self):
     result = st.send(self.data, st.Count())
     self.assertEqual(len(self.data), result)
コード例 #23
0
 def test_sum(self):
     result = st.send(self.data, st.Sum())
     self.assertEqual(sum(self.data), result)
コード例 #24
0
 def test_set(self):
     data = range(10)
     result = st.send(data, set())
     self.assertEqual(set(data), result)
コード例 #25
0
 def test_select(self):
     data = range(10)
     for i in data:
         val = st.send(data, st.Select(i))
         self.assertEqual(val, i)
コード例 #26
0
 def test_key_group(self):
     data = ([1]*5) + ([4]*9) + ([3]*7)
     result = st.send(data, st.GroupByKey(None, []) )
     self.assertTrue(result==[[1]*5,[4]*9,[3]*7])
コード例 #27
0
 def test_max(self):
     result = st.send(self.data, st.Max())
     self.assertEqual(max(self.data), result)
コード例 #28
0
 def test_ave(self):
     result = st.send(self.data, st.Ave())
     self.assertAlmostEqual(sum(self.data)/len(self.data), result)
コード例 #29
0
 def test_slice_2(self):
     data = list(range(20))
     ret = st.send(data, st.Slice(7,13, []))
     self.assertEqual(ret, data[slice(7,13)])