def test_simple(self): self.assertEqual(partial._parse('a'), { 'a': {}, }) self.assertEqual(partial._parse('a,b'), { 'a': {}, 'b': {}, }) self.assertEqual(partial._parse('a,b,c'), { 'a': {}, 'b': {}, 'c': {}, })
def test_duplicates(self): self.assertEqual(partial._parse('a,a'), { 'a': {}, }) self.assertEqual(partial._parse('a,b,a'), { 'a': {}, 'b': {}, }) self.assertEqual(partial._parse('a,b,b,a'), { 'a': {}, 'b': {}, }) self.assertEqual(partial._parse('a/b,a/b'), { 'a': { 'b': {}, }, }) self.assertEqual(partial._parse('a/b,a/b,c,d,d'), { 'a': { 'b': {}, }, 'c': {}, 'd': {}, }) self.assertEqual(partial._parse('a/b,a(b)'), { 'a': { 'b': {}, }, }) self.assertEqual(partial._parse('a(b),a/b,c,d,d'), { 'a': { 'b': {}, }, 'c': {}, 'd': {}, }) self.assertEqual(partial._parse('a(b,c),a/b,a/c,a(b),a(c)'), { 'a': { 'b': {}, 'c': {}, }, }) self.assertEqual(partial._parse('a/b/c,a(b/d,b/e)'), { 'a': { 'b': { 'c': {}, 'd': {}, 'e': {}, }, }, })
def test_raises(self): fields = [ '', '/', 'a/', '/b', 'a//b', ',' 'a,', ',b', '/,', ',/', 'a/b,', ',a/b', '()', '(a)', '(,)', '(a,)', '(,b)', '(a,b)', '(a,b)c', 'a(())', 'a((b))', 'a((b,))', 'a((,c))', 'a((b,c))', '(', 'a(', 'a(b', ')', 'a)', 'a(b))', 'a(b),', 'a(b)c', 'a(/)', 'a(b/)', 'a(/b)', ] for f in fields: with self.assertRaises(partial.ParsingError): partial._parse(f)
def test_components(self): self.assertEqual(partial._parse('a/b'), { 'a': { 'b': {}, }, }) self.assertEqual(partial._parse('a/b,c'), { 'a': { 'b': {}, }, 'c': {}, }) self.assertEqual(partial._parse('a,b/c'), { 'a': {}, 'b': { 'c': {}, }, }) self.assertEqual(partial._parse('a/b,c/d'), { 'a': { 'b': {}, }, 'c': { 'd': {}, }, }) self.assertEqual(partial._parse('a/b/c,d/e/f'), { 'a': { 'b': { 'c': {}, }, }, 'd': { 'e': { 'f': {}, }, }, })
def test_subfields(self): self.assertEqual(partial._parse('a(b)'), { 'a': { 'b': {}, }, }) self.assertEqual(partial._parse('a/b(c)'), { 'a': { 'b': { 'c': {}, }, }, }) self.assertEqual(partial._parse('a(b/c)'), { 'a': { 'b': { 'c': {}, }, }, }) self.assertEqual(partial._parse('a(b,c)'), { 'a': { 'b': {}, 'c': {}, }, }) self.assertEqual(partial._parse('a(b, c)'), { 'a': { 'b': {}, 'c': {}, }, }) self.assertEqual(partial._parse('a (b,c)'), { 'a': { 'b': {}, 'c': {}, }, }) self.assertEqual(partial._parse('a/b(c,d)'), { 'a': { 'b': { 'c': {}, 'd': {}, }, }, }) self.assertEqual(partial._parse('a(b/c,d)'), { 'a': { 'b': { 'c': {}, }, 'd': {}, }, }) self.assertEqual(partial._parse('a(b,c/d)'), { 'a': { 'b': {}, 'c': { 'd': {}, }, }, }) self.assertEqual(partial._parse('a(b,c(d))'), { 'a': { 'b': {}, 'c': { 'd': {}, } }, }) self.assertEqual(partial._parse('a(b),c(d)'), { 'a': { 'b': {}, }, 'c': { 'd': {}, }, }) self.assertEqual(partial._parse('a(b(c,d),e),f'), { 'a': { 'b': { 'c': {}, 'd': {}, }, 'e': {}, }, 'f': {}, })