diff options
author | Leonard Richardson <leonardr@segfault.org> | 2014-12-10 19:01:46 -0500 |
---|---|---|
committer | Leonard Richardson <leonardr@segfault.org> | 2014-12-10 19:01:46 -0500 |
commit | 5048db4ab06f6065d8d364500b38631456b58690 (patch) | |
tree | b2d13695ebfa4806389170f36b47749b32a04933 /bs4/tests | |
parent | 8b1dd38e165d211d904d7143ea5042f26353bdb5 (diff) |
The select() method now supports selector grouping. Patch by
Francisco Canas [bug=1191917]
Diffstat (limited to 'bs4/tests')
-rw-r--r-- | bs4/tests/test_tree.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/bs4/tests/test_tree.py b/bs4/tests/test_tree.py index de9543d..8f629d9 100644 --- a/bs4/tests/test_tree.py +++ b/bs4/tests/test_tree.py @@ -1554,6 +1554,14 @@ class TestSoupSelector(TreeTest): <span class="span3"></span> </span> </div> +<x id="xid"> +<z id="zida"/> +<z id="zidab"/> +<z id="zidac"/> +</x> +<y id="yid"> +<z id="zidb"/> +</y> <p lang="en" id="lang-en">English</p> <p lang="en-gb" id="lang-en-gb">English UK</p> <p lang="en-us" id="lang-en-us">English US</p> @@ -1827,3 +1835,41 @@ class TestSoupSelector(TreeTest): def test_sibling_combinator_wont_select_same_tag_twice(self): self.assertSelects('p[lang] ~ p', ['lang-en-gb', 'lang-en-us', 'lang-fr']) + + # Test the selector grouping operator (the comma) + def test_multiple_select(self): + self.assertSelects('x, y',['xid','yid']) + + def test_multiple_select_with_no_space(self): + self.assertSelects('x,y',['xid','yid']) + + def test_multiple_select_with_more_space(self): + self.assertSelects('x, y',['xid', 'yid']) + + def test_multiple_select_sibling(self): + self.assertSelects('x, y ~ p[lang=fr]',['lang-fr']) + + def test_multiple_select(self): + self.assertSelects('x, y > z', ['zida', 'zidb', 'zidab', 'zidac']) + + def test_multiple_select_direct_descendant(self): + self.assertSelects('div > x, y, z', ['xid', 'yid']) + + def test_multiple_select_indirect_descendant(self): + self.assertSelects('div x,y, z', ['xid', 'yid', 'zida', 'zidb', 'zidab', 'zidac']) + + def test_invalid_multiple_select(self): + self.assertRaises(ValueError, self.soup.select, ',x, y') + self.assertRaises(ValueError, self.soup.select, 'x,,y') + + def test_multiple_select(self): + self.assertSelects('p[lang=en], p[lang=en-gb]',['lang-en','lang-en-gb']) + + def test_multiple_select_ids(self): + self.assertSelects('x, y > z[id=zida], z[id=zidab], z[id=zidb]', ['zida', 'zidb','zidab']) + + def test_multiple_select_nested(self): + self.assertSelects('body > div > x, y > z', ['zida', 'zidb', 'zidab', 'zidac']) + + + |