MCPcopy Index your code
hub / github.com/python/cpython / test_listcomps

Method test_listcomps

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

Source from the content-addressed store, hash-verified

1745 self.assertEqual({i:i+1 for i in nums}, {1: 2, 2: 3, 3: 4})
1746
1747 def test_listcomps(self):
1748 # list comprehension tests
1749 nums = [1, 2, 3, 4, 5]
1750 strs = ["Apple", "Banana", "Coconut"]
1751 spcs = [" Apple", " Banana ", "Coco nut "]
1752
1753 self.assertEqual([s.strip() for s in spcs], ['Apple', 'Banana', 'Coco nut'])
1754 self.assertEqual([3 * x for x in nums], [3, 6, 9, 12, 15])
1755 self.assertEqual([x for x in nums if x > 2], [3, 4, 5])
1756 self.assertEqual([(i, s) for i in nums for s in strs],
1757 [(1, 'Apple'), (1, 'Banana'), (1, 'Coconut'),
1758 (2, 'Apple'), (2, 'Banana'), (2, 'Coconut'),
1759 (3, 'Apple'), (3, 'Banana'), (3, 'Coconut'),
1760 (4, 'Apple'), (4, 'Banana'), (4, 'Coconut'),
1761 (5, 'Apple'), (5, 'Banana'), (5, 'Coconut')])
1762 self.assertEqual([(i, s) for i in nums for s in [f for f in strs if "n" in f]],
1763 [(1, 'Banana'), (1, 'Coconut'), (2, 'Banana'), (2, 'Coconut'),
1764 (3, 'Banana'), (3, 'Coconut'), (4, 'Banana'), (4, 'Coconut'),
1765 (5, 'Banana'), (5, 'Coconut')])
1766 self.assertEqual([(lambda a:[a**i for i in range(a+1)])(j) for j in range(5)],
1767 [[1], [1, 1], [1, 2, 4], [1, 3, 9, 27], [1, 4, 16, 64, 256]])
1768
1769 def test_in_func(l):
1770 return [0 < x < 3 for x in l if x > 2]
1771
1772 self.assertEqual(test_in_func(nums), [False, False, False])
1773
1774 def test_nested_front():
1775 self.assertEqual([[y for y in [x, x + 1]] for x in [1,3,5]],
1776 [[1, 2], [3, 4], [5, 6]])
1777
1778 test_nested_front()
1779
1780 check_syntax_error(self, "[i, s for i in nums for s in strs]")
1781 check_syntax_error(self, "[x if y]")
1782
1783 suppliers = [
1784 (1, "Boeing"),
1785 (2, "Ford"),
1786 (3, "Macdonalds")
1787 ]
1788
1789 parts = [
1790 (10, "Airliner"),
1791 (20, "Engine"),
1792 (30, "Cheeseburger")
1793 ]
1794
1795 suppart = [
1796 (1, 10), (1, 20), (2, 20), (3, 30)
1797 ]
1798
1799 x = [
1800 (sname, pname)
1801 for (sno, sname) in suppliers
1802 for (pno, pname) in parts
1803 for (sp_sno, sp_pno) in suppart
1804 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