def test_nested_pseudos(self): sobjs = Selector.parse(':not(:not(1))') self.assertEqual(len(sobjs), 1) self.assertEqual(len(sobjs[0].pseudos), 1) self.assertEqual(sobjs[0].pseudos[0].name, 'not') self.assertEqual(sobjs[0].pseudos[0].value, ':not(1)')
def test_composed_selector(self): sobjs = Selector.parse('class.foo.bar') self.assertEqual(len(sobjs), 1) self.assertIsInstance(sobjs[0], Selector) self.assertEqual(sobjs[0].typ, 'class') self.assertEqual(sobjs[0].classes, ['foo', 'bar'])
def test_pseudo_empty(self): sobjs = Selector.parse(':not()') self.assertEqual(len(sobjs), 1) self.assertEqual(len(sobjs[0].pseudos), 1) self.assertEqual(sobjs[0].pseudos[0].name, 'not') self.assertEqual(sobjs[0].pseudos[0].value, '')
def test_nonchild_selector(self): sobjs = Selector.parse('class def') self.assertEqual(len(sobjs), 1) self.assertEqual(sobjs[0].name, 'class') self.assertIsNotNone(sobjs[0].next_selector) self.assertEqual(sobjs[0].next_selector.name, 'def')
def test_attr_in_pseudo(self): sobjs = Selector.parse(':not([name=1])') self.assertEqual(len(sobjs), 1) self.assertEqual(len(sobjs[0].attrs), 0) self.assertEqual(len(sobjs[0].pseudos), 1) self.assertEqual(sobjs[0].pseudos[0].name, 'not') self.assertEqual(sobjs[0].pseudos[0].value, '[name=1]')
def test_attrs_whitespace(self): sobjs = Selector.parse('[ name = 1 ]') self.assertEqual(len(sobjs), 1) self.assertEqual(len(sobjs[0].attrs), 1) self.assertEqual(sobjs[0].attrs[0].lft, 'name') self.assertEqual(sobjs[0].attrs[0].op, '=') self.assertEqual(sobjs[0].attrs[0].rgt, '1')
def test_attrs_empty(self): sobjs = Selector.parse('[name!=]') self.assertEqual(len(sobjs), 1) self.assertEqual(len(sobjs[0].attrs), 1) self.assertEqual(sobjs[0].attrs[0].lft, 'name') self.assertEqual(sobjs[0].attrs[0].op, '!=') self.assertEqual(sobjs[0].attrs[0].rgt, '')
def test_compound_pseudos(self): sobjs = Selector.parse(':not(1):not(2)') self.assertEqual(len(sobjs), 1) self.assertEqual(len(sobjs[0].pseudos), 2) self.assertEqual(sobjs[0].pseudos[0].name, 'not') self.assertEqual(sobjs[0].pseudos[0].value, '1') self.assertEqual(sobjs[0].pseudos[1].name, 'not') self.assertEqual(sobjs[0].pseudos[1].value, '2')
def test_child_selector(self): sobjs = Selector.parse('class > def') self.assertEqual(len(sobjs), 1) self.assertIsInstance(sobjs[0], Selector) self.assertEqual(sobjs[0].name, 'class') self.assertIsNotNone(sobjs[0].next_selector) self.assertEqual(sobjs[0].next_selector.name, 'def') self.assertEqual(sobjs[0].next_selector.combinator, Selector.CHILD)
def test_deep_attrs(self): sobjs = Selector.parse('[name=1] > [name=2]') self.assertEqual(len(sobjs), 1) self.assertEqual(len(sobjs[0].attrs), 1) self.assertEqual(sobjs[0].attrs[0].lft, 'name') self.assertEqual(sobjs[0].attrs[0].op, '=') self.assertEqual(sobjs[0].attrs[0].rgt, '1') self.assertEqual(sobjs[0].next_selector.attrs[0].lft, 'name') self.assertEqual(sobjs[0].next_selector.attrs[0].op, '=') self.assertEqual(sobjs[0].next_selector.attrs[0].rgt, '2')
def test_deep_selector(self): sobjs = Selector.parse('class > def foo > bar') self.assertEqual(len(sobjs), 1) self.assertEqual(sobjs[0].name, 'class') self.assertEqual(sobjs[0].next_selector.name, 'def') self.assertEqual(sobjs[0].next_selector.next_selector.name, 'foo') self.assertEqual( sobjs[0].next_selector.next_selector.next_selector.name, 'bar') self.assertEqual(sobjs[0].next_selector.name, 'def') self.assertEqual(sobjs[0].next_selector.combinator, Selector.CHILD)
def test_type_selector(self): sobjs = Selector.parse('class') self.assertEqual(len(sobjs), 1) self.assertEqual(sobjs[0].name, 'class')
def test_class_selector(self): sobjs = Selector.parse('.class > def') self.assertEqual(len(sobjs), 1) self.assertEqual(sobjs[0].name, '.class')
def test_multiple_selectors(self): sobjs = Selector.parse('class, def') self.assertEqual(len(sobjs), 2) self.assertEqual(sobjs[0].name, 'class') self.assertEqual(sobjs[1].name, 'def')