MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_listcomps

Method test_listcomps

Lib/test/test_grammar.py:1670–1731  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1668 self.assertEqual({i:i+1 for i in nums}, {1: 2, 2: 3, 3: 4})
1669
1670 def test_listcomps(self):
1671 # list comprehension tests
1672 nums = [1, 2, 3, 4, 5]
1673 strs = ["Apple", "Banana", "Coconut"]
1674 spcs = [" Apple", " Banana ", "Coco nut "]
1675
1676 self.assertEqual([s.strip() for s in spcs], ['Apple', 'Banana', 'Coco nut'])
1677 self.assertEqual([3 * x for x in nums], [3, 6, 9, 12, 15])
1678 self.assertEqual([x for x in nums if x > 2], [3, 4, 5])
1679 self.assertEqual([(i, s) for i in nums for s in strs],
1680 [(1, 'Apple'), (1, 'Banana'), (1, 'Coconut'),
1681 (2, 'Apple'), (2, 'Banana'), (2, 'Coconut'),
1682 (3, 'Apple'), (3, 'Banana'), (3, 'Coconut'),
1683 (4, 'Apple'), (4, 'Banana'), (4, 'Coconut'),
1684 (5, 'Apple'), (5, 'Banana'), (5, 'Coconut')])
1685 self.assertEqual([(i, s) for i in nums for s in [f for f in strs if "n" in f]],
1686 [(1, 'Banana'), (1, 'Coconut'), (2, 'Banana'), (2, 'Coconut'),
1687 (3, 'Banana'), (3, 'Coconut'), (4, 'Banana'), (4, 'Coconut'),
1688 (5, 'Banana'), (5, 'Coconut')])
1689 self.assertEqual([(lambda a:[a**i for i in range(a+1)])(j) for j in range(5)],
1690 [[1], [1, 1], [1, 2, 4], [1, 3, 9, 27], [1, 4, 16, 64, 256]])
1691
1692 def test_in_func(l):
1693 return [0 < x < 3 for x in l if x > 2]
1694
1695 self.assertEqual(test_in_func(nums), [False, False, False])
1696
1697 def test_nested_front():
1698 self.assertEqual([[y for y in [x, x + 1]] for x in [1,3,5]],
1699 [[1, 2], [3, 4], [5, 6]])
1700
1701 test_nested_front()
1702
1703 check_syntax_error(self, "[i, s for i in nums for s in strs]")
1704 check_syntax_error(self, "[x if y]")
1705
1706 suppliers = [
1707 (1, "Boeing"),
1708 (2, "Ford"),
1709 (3, "Macdonalds")
1710 ]
1711
1712 parts = [
1713 (10, "Airliner"),
1714 (20, "Engine"),
1715 (30, "Cheeseburger")
1716 ]
1717
1718 suppart = [
1719 (1, 10), (1, 20), (2, 20), (3, 30)
1720 ]
1721
1722 x = [
1723 (sname, pname)
1724 for (sno, sname) in suppliers
1725 for (pno, pname) in parts
1726 for (sp_sno, sp_pno) in suppart
1727 if sno == sp_sno and pno == sp_pno

Callers

nothing calls this directly

Calls 3

check_syntax_errorFunction · 0.90
assertEqualMethod · 0.45
stripMethod · 0.45

Tested by

no test coverage detected