示例#1
0
 def test_groups(self):
     fl = {'ws': ' ', 'nl': '\n'}
     sc = Scope()
     sc.push()
     sc.current = Identifier(['.a', ',', '.b'], 0).parse(sc)
     for i in [
         (['&', '.scope', ' ', 'a'], '.a.scope a,\n.b.scope a'),
         (['.scope', '&', ' ', 'a'], '.scope.a a,\n.scope.b a'),
         (['.scope', ' ', 'a', '&'], '.scope a.a,\n.scope a.b'),
         (['>', '&', '.scope', ' ', 'a'], ' > .a.scope a,\n > .b.scope a'),
     ]:
         t, r = i
         id = Identifier(t, 0)
         self.assertEqual(id.parse(sc).fmt(fl), r, i)
     sc.current = Identifier(['.next'], 0).parse(sc)
     sc.push()
     sc.current = Identifier(['.c', ',', '.d'], 0).parse(sc)
     id = Identifier(['.deep'], 0)
     self.assertEqual(
         id.parse(sc).fmt(fl), '.a .next .c .deep,\n'
         '.b .next .c .deep,\n'
         '.a .next .d .deep,\n'
         '.b .next .d .deep')
     self.assertEqual(
         id.raw(), '.a% %.next% %.c% %.deep%'
         '.b% %.next% %.c% %.deep%'
         '.a% %.next% %.d% %.deep%'
         '.b% %.next% %.d% %.deep')
示例#2
0
 def test_groups(self):
     fl = {'ws': ' '}
     sc = Scope()
     sc.push()
     sc.current = Identifier(['.a', ',', '.b'], 0).parse(sc)
     for i in [
         (['&', '.scope', ' ', 'a'], '.a.scope a, .b.scope a'),
         (['.scope', '&', ' ', 'a'], '.scope.a a, .scope.b a'),
         (['.scope', ' ', 'a', '&'], '.scope a.a, .scope a.b'),
         (['>', '&', '.scope', ' ', 'a'], ' > .a.scope a, > .b.scope a'),
     ]:
         t, r = i
         id = Identifier(t, 0)
         self.assertEqual(id.parse(sc).fmt(fl), r, i)
     sc.current = Identifier(['.next'], 0).parse(sc)
     sc.push()
     sc.current = Identifier(['.c', ',', '.d'], 0).parse(sc)
     id = Identifier(['.deep'], 0)
     self.assertEqual(id.parse(sc).fmt(fl), '.a .next .c .deep, '
                      '.a .next .d .deep, '
                      '.b .next .c .deep, '
                      '.b .next .d .deep')
     self.assertEqual(id.raw(), '.a% %.next% %.c% %.deep%.a%'
                                ' %.next% %.d% %.deep%.b% %.next%'
                                ' %.c% %.deep%.b% %.next% %.d% %.deep')
示例#3
0
 def test_media(self):
     fl = {'ws': ' '}
     sc = Scope()
     sc.push()
     sc.current = Identifier(
         ['@media', ' ', 'screen', ',', 'projection'], 0).parse(sc)
     self.assertEqual(sc.current.fmt(fl), '@media screen,projection')
     for i in [
         (['html'], 'html'),
     ]:
         t, r = i
         id = Identifier(t, 0)
         self.assertEqual(id.parse(sc).fmt(fl), r, i)
示例#4
0
 def test_media(self):
     fl = {'ws': ' ', 'nl': '\n'}
     sc = Scope()
     sc.push()
     sc.current = Identifier(['@media', ' ', 'screen', ',', 'projection'],
                             0).parse(sc)
     self.assertEqual(sc.current.fmt(fl), '@media screen,projection')
     for i in [
         (['html'], 'html'),
     ]:
         t, r = i
         id = Identifier(t, 0)
         self.assertEqual(id.parse(sc).fmt(fl), r, i)
示例#5
0
 def test_scope(self):
     fl = {'ws': ' '}
     sc = Scope()
     sc.push()
     sc.current = Identifier(['.current'], 0).parse(sc)
     for i in [
         (['.scope', ' ', 'a'], '.current .scope a'),
         (['a', ' ', '.scope'], '.current a .scope'),
         (['a', '.scope'], '.current a.scope'),
         (['a', '>', 'p', '>', 'h2'], '.current a > p > h2'),
         (['a', '~', 'p', '+', 'h2'], '.current a ~ p + h2'),
         (['>', 'p', '+', 'h2'], '.current > p + h2'),
     ]:
         t, r = i
         id = Identifier(t, 0)
         self.assertEqual(id.parse(sc).fmt(fl), r, i)
示例#6
0
 def test_scope(self):
     fl = {'ws': ' ', 'nl': '\n'}
     sc = Scope()
     sc.push()
     sc.current = Identifier(['.current'], 0).parse(sc)
     for i in [
         (['.scope', ' ', 'a'], '.current .scope a'),
         (['a', ' ', '.scope'], '.current a .scope'),
         (['a', '.scope'], '.current a.scope'),
         (['a', '>', 'p', '>', 'h2'], '.current a > p > h2'),
         (['a', '~', 'p', '+', 'h2'], '.current a ~ p + h2'),
         (['>', 'p', '+', 'h2'], '.current > p + h2'),
     ]:
         t, r = i
         id = Identifier(t, 0)
         self.assertEqual(id.parse(sc).fmt(fl), r, i)
示例#7
0
 def test_combinators(self):
     fl = {'ws': ' '}
     sc = Scope()
     sc.push()
     sc.current = Identifier(['.current'], 0).parse(sc)
     for i in [
         (['&', '.scope', ' ', 'a'], '.current.scope a'),
         (['.scope', '&', ' ', 'a'], '.scope.current a'),
         (['.scope', ' ', 'a', '&'], '.scope a.current'),
         (['&', '>', '.scope', ' ', 'a'], '.current > .scope a'),
         (['.span', '&', '.scope', ' ', 'a', '&'],
          '.span.current.scope a.current'),
     ]:
         t, r = i
         id = Identifier(t, 0)
         self.assertEqual(id.parse(sc).fmt(fl), r, i)
     sc.push()
     sc.current = Identifier(['&', '.next'], 0).parse(sc)
     id = Identifier(['&', '.top'], 0)
     self.assertEqual(id.parse(sc).fmt(fl), '.current.next.top')
示例#8
0
 def test_combinators(self):
     fl = {'ws': ' ', 'nl': '\n'}
     sc = Scope()
     sc.push()
     sc.current = Identifier(['.current'], 0).parse(sc)
     for i in [
         (['&', '.scope', ' ', 'a'], '.current.scope a'),
         (['.scope', '&', ' ', 'a'], '.scope.current a'),
         (['.scope', ' ', 'a', '&'], '.scope a.current'),
         (['&', '>', '.scope', ' ', 'a'], '.current > .scope a'),
         (['.span', '&', '.scope', ' ', 'a',
           '&'], '.span.current.scope a.current'),
     ]:
         t, r = i
         id = Identifier(t, 0)
         self.assertEqual(id.parse(sc).fmt(fl), r, i)
     sc.push()
     sc.current = Identifier(['&', '.next'], 0).parse(sc)
     id = Identifier(['&', '.top'], 0)
     self.assertEqual(id.parse(sc).fmt(fl), '.current.next.top')