Пример #1
0
    def test_distinct(self):
        e = linqy.make([1,2,3,2,1]).distinct()
        self.assertEqual(list(e), [1,2,3])

        e = linqy.make([(1,2),(2,3),(2,2),(1,4)]).distinct(lambda x: x[0])
        self.assertEqual(list(e), [(1,2),(2,3)])

        e = linqy.make([(1,2),(2,3),(2,2),(1,4)]).distinct(lambda x: x[1])
        self.assertEqual(list(e), [(1,2),(2,3),(1,4)])
Пример #2
0
    def test_selectmany(self):
        e = linqy.make([1,2,3]).selectmany(lambda x: [x, x * 2])
        self.assertEqual(list(e), [1,2,2,4,3,6])

        e = linqy.make([1,2,3]).selectmany(lambda x, i: [(i, x), i * x])
        self.assertEqual(list(e), [(0,1),0,(1,2),2,(2,3),6])

        e = linqy.make([1,2,3]).selectmany(lambda x: range(x), result=lambda x, y: y)
        self.assertEqual(list(e), [0,0,1,0,1,2])
Пример #3
0
    def test_do(self):
        e = linqy.make([1,2,3]).do(self.add)
        self.assertEqual(self.num, 0)
        list(e)
        self.assertEqual(self.num, 6)

        e = linqy.make([1,2,3]).do(self.addi)
        self.assertEqual(self.num, 6)
        list(e)
        self.assertEqual(self.num, 12)
Пример #4
0
 def test_contains(self):
     self.assertTrue(linqy.make([(1,2),(2,3),(3,4)]).contains((2,3)))
     self.assertTrue(linqy.make([1,2,3,4,5]).contains(2))
     self.assertFalse(linqy.make([1,2,3,4,5]).contains(8))
     self.assertTrue(linqy.make([(1,2),(2,3),(3,4)]).contains((2,3)))
     self.assertFalse(linqy.make([(1,2),(2,3),(3,4)]).contains(6))
     self.assertFalse(linqy.make([(1,2),(2,3),(3,4)]).contains((5,6)))
     self.assertTrue(linqy.make([(1,2),(2,3),(3,4)]).contains(1, lambda x: x[0]))
     self.assertFalse(linqy.make([(1,2),(2,3),(3,4)]).contains(8, lambda x: x[0]))
     self.assertFalse(linqy.make([(1,2),(2,3),(3,4)]).contains(1, lambda x: x[1]))
     self.assertTrue(linqy.make([(1,2),(2,3),(3,4)]).contains(2, lambda x: x[1]))
Пример #5
0
 def test_orderby_random1(self):
     for i in range(10):
         r = self.make_random_range()
         r1 = sorted(r, key=lambda x: x[0])
         r2 = (linqy.make(r)
                 .orderby(lambda x: x[0])
                 .tolist())
         self.assertEqual(r1, r2)
Пример #6
0
 def test_reverse(self):
     seq = linqy.make([1,2,3,4,5])
     e1 = seq.reverse()
     e2 = e1.reverse()
     e3 = e2.reverse()
     self.assertEqual(list(e1), [5,4,3,2,1])
     self.assertEqual(list(e2), [1,2,3,4,5])
     self.assertEqual(list(e1), list(e3))
Пример #7
0
def fibonacci():
    yield 0
    yield 1
    fibs = linqy.make(fibonacci)
    query = (fibs.zip(fibs.skip(1))
            .select(lambda item: item[0] + item[1]))
    for item in query:
        yield item
Пример #8
0
 def test_orderby_thenby(self):
     seq = self.make_data()
     a,b,c,d,e = seq
     enum = (linqy.make(seq)
             .orderby(lambda x: x['num'])
             .thenby(lambda x: x['price'])
             .thenbydesc(lambda x: x['name']))
     self.assertEqual(list(enum), [a,d,c,e,b])
Пример #9
0
 def test_orderby_random2(self):
     for i in range(10):
         r = self.make_random_range()
         r1 = sorted(r, key=lambda x: (x[0], -x[2], x[1]))
         r2 = (linqy.make(r)
                 .orderby(lambda x: x[0])
                 .thenbydesc(lambda x: x[2])
                 .thenby(lambda x: x[1])
                 .tolist())
         self.assertEqual(r1, r2)
Пример #10
0
 def test_any(self):
     self.assertTrue(linqy.make([1,2,3,4,5]).any())
     self.assertTrue(linqy.make([0,1,2,3,4,5]).any())
     self.assertFalse(linqy.make([0,0,0,0]).any())
     self.assertTrue(linqy.make([1,2,3,4,5]).any(lambda x: x < 10))
     self.assertTrue(linqy.make([0,1,2,3,4,5]).any(lambda x: x < 10))
     self.assertFalse(linqy.make([0,1,2,3,4,5]).any(lambda x: x > 10))
Пример #11
0
 def test_all(self):
     self.assertTrue(linqy.make([1,2,3,4,5]).all())
     self.assertFalse(linqy.make([0,1,2,3,4,5]).all())
     self.assertTrue(linqy.make([1,2,3,4,5]).all(lambda x: x > 0))
     self.assertFalse(linqy.make([1,2,3,4,5]).all(lambda x: x > 3))
     self.assertTrue(linqy.make([0,1,2,3,4,5]).all(lambda x: x < 8))
     self.assertFalse(linqy.make([0,1,2,3,4,5]).all(lambda x: x < 3))
Пример #12
0
 def test_count(self):
     self.assertEqual(linqy.make([4,3,5,1,2]).count(), 5)
     self.assertEqual(linqy.make(range(1,101)).count(), 100)
     self.assertEqual(linqy.make(range(1,101)).count(lambda x: x % 2), 50)
Пример #13
0
 def test_average(self):
     self.assertEqual(linqy.make([1,1,1,1,1]).average(), 1)
     self.assertEqual(linqy.make([1,2,3,4,5]).average(), 3)
Пример #14
0
 def test_aggregate(self):
     self.assertEqual(linqy.make(range(1,11)).aggregate(lambda a, b: a + b), 55)
     self.assertEqual(linqy.make(range(1,11)).aggregate(lambda a, b: a + b, seed=100), 155)
Пример #15
0
 def test_concat(self):
     cats = [{'name': 'Barley', 'age': 8}, {'name': 'Boots', 'age': 4}, {'name': 'Whiskers', 'age': 1}]
     dogs = [{'name': 'Bounder', 'age': 3}, {'name': 'Snoopy', 'age': 14}, {'name': 'Fido', 'age': 9}]
     query = linqy.make(cats).select(lambda cat: cat['name']).concat(linqy.make(dogs).select(lambda dog: dog['name']))
     self.assertEqual(query.tolist(), ['Barley', 'Boots', 'Whiskers', 'Bounder', 'Snoopy', 'Fido'])
Пример #16
0
 def test_tolookup(self):
     e = linqy.make(range(0, 10))
     lookup = e.tolookup(lambda x: x % 2)
     self.assertEqual(lookup[0], [0, 2, 4, 6, 8])
     self.assertEqual(lookup[1], [1, 3, 5, 7, 9])
Пример #17
0
 def test_todict(self):
     d = (linqy.make([1,2,3])
             .select(lambda x, i: {'key': str(i), 'value': x})
             .todict(lambda x: x['key'], lambda x: x['value']))
     self.assertEqual(d, {'0': 1, '1': 2, '2': 3})
Пример #18
0
 def test_max(self):
     self.assertEqual(linqy.make([4,3,5,1,2]).max(), 5)
Пример #19
0
 def test_sum(self):
     self.assertEqual(linqy.make([1,2,3,4,5,6,7,8,9,10]).sum(), 55)
Пример #20
0
    def test_foreach(self):
        linqy.make([1,2,3]).foreach(self.add)
        self.assertEqual(self.num, 6)

        linqy.make([1,2,3]).foreach(self.addi)
        self.assertEqual(self.num, 12)
Пример #21
0
 def test_last_pred(self):
     e = linqy.make([1,2,3,4,5])
     self.assertEqual(e.last(pred=lambda x: x < 3), 2)
Пример #22
0
 def test_last(self):
     e = linqy.make([1,2,3,4,5])
     self.assertEqual(e.last(), 5)
Пример #23
0
 def test_first_pred(self):
     e = linqy.make([1,2,3,4,5])
     self.assertEqual(e.first(pred=lambda x: x > 3), 4)
Пример #24
0
 def test_first(self):
     e = linqy.make([1,2,3,4,5])
     self.assertEqual(e.first(), 1)
Пример #25
0
 def test_min(self):
     self.assertEqual(linqy.make([4,3,5,1,2]).min(), 1)
Пример #26
0
 def test_toarray(self):
     e = linqy.make([1,2,3,4,5])
     self.assertEqual(e.toarray('i'), array('i', [1,2,3,4,5]))
Пример #27
0
 def test_last_pred_default(self):
     e = linqy.make([1,2,3,4,5])
     self.assertRaises(IndexError, lambda: e.last(pred=lambda x: x < 0))
     self.assertEqual(e.last(lambda x: x < 0, 100), 100)
Пример #28
0
 def test_tolist(self):
     e = linqy.make([1,2,3,4,5])
     self.assertEqual(e.tolist(), [1,2,3,4,5])
Пример #29
0
def sample_stream():
    response = urllib.urlopen('http://stream.twitter.com/1/statuses/sample.json')
    return (linqy.make(enumerate_line(response))
            .where(lambda s: s)
            .select(lambda s: s.decode('utf-8'))
            .select(lambda s: json.loads(s)))
Пример #30
0
 def test_single_default(self):
     self.assertEqual(linqy.make([1]).single(), 1)
     self.assertEqual(linqy.empty().single(default=100), 100)
     self.assertRaises(LookupError, lambda: linqy.make([1,2]).single(default=100))