Esempio n. 1
0
 def test__eq__(self):
     assert String() != ''
     assert String('') != ''
     assert String() == String()
     assert String('') == String()
     assert String('', '', '') == String()
     assert String('Wa', '', 'ke', ' ', 'up!') == String('Wake up!')
Esempio n. 2
0
 def iter_string_parts(self, level=0, in_math=False):
   while True:
     # there will be no Protected inside Math,
     # since we need to preserve all braces
     if in_math:
       token = self.skip_to([self.DOLLAR])
     else:
       token = self.skip_to([self.LBRACE, self.RBRACE, self.DOLLAR])
     if not token:
       remainder = self.get_remainder()
       if remainder:
         yield String(remainder)
       if level != 0:
         raise PybtexSyntaxError('unbalanced braces', self)
       break
     elif token.pattern is self.DOLLAR:
       if in_math:
         yield String(token.value[:-1])
         if level == 0:
           raise PybtexSyntaxError('unbalanced math', self)
         break
       else:
         yield String(token.value[:-1])
         yield Math(*self.iter_string_parts(level=level + 1, in_math=True))
     elif token.pattern is self.LBRACE:
       yield String(token.value[:-1])
       yield Protected(*self.iter_string_parts(level=level + 1))
     else:  # brace.pattern is self.RBRACE
       yield String(token.value[:-1])
       if level == 0:
         raise PybtexSyntaxError('unbalanced braces', self)
       break
Esempio n. 3
0
 def test_capfirst(self):
     assert unicode(String('').capitalize()) == ''
     assert unicode(
         String('november december').capitalize()) == 'November december'
     assert unicode(
         String('November December').capitalize()) == 'November december'
     assert unicode(
         String('NOVEMBER DECEMBER').capitalize()) == 'November december'
Esempio n. 4
0
 def test__getitem__(self):
     symbol = Symbol('nbsp')
     assert symbol[0] == Symbol('nbsp')
     assert symbol[0:] == Symbol('nbsp')
     assert symbol[0:5] == Symbol('nbsp')
     assert symbol[1:] == String()
     assert symbol[1:5] == String()
     assert_raises(IndexError, lambda: symbol[1])
Esempio n. 5
0
    def test__getitem__(self):
        symbol = Symbol('nbsp')
        assert symbol[0] == Symbol('nbsp')
        assert symbol[0:] == Symbol('nbsp')
        assert symbol[0:5] == Symbol('nbsp')
        assert symbol[1:] == String()
        assert symbol[1:5] == String()

        with pytest.raises(IndexError):
            symbol[1]
Esempio n. 6
0
 def test_capitalize(self):
     assert unicode(String('').capitalize()) == ''
     assert unicode(String('').add_period()) == ''
     assert unicode(String('').add_period('!')) == ''
     assert unicode(String('').add_period().add_period()) == ''
     assert unicode(String('').add_period().add_period('!')) == ''
     assert unicode(String('').add_period('!').add_period()) == ''
     assert unicode(String('november').capitalize()) == 'November'
     assert unicode(String('November').capitalize()) == 'November'
     assert unicode(String('November').add_period()) == 'November.'
Esempio n. 7
0
 def test_join(self):
     assert Protected(' ').join(['a', Protected('b c')]).render_as('latex') == 'a{ b c}'
     assert Protected(nbsp).join(['a', 'b', 'c']).render_as('latex') == 'a{~}b{~}c'
     assert nbsp.join(['a', Protected('b'), 'c']).render_as('latex') == 'a~{b}~c'
     assert String('-').join([Protected('a'), Protected('b'), Protected('c')]).render_as('latex') == '{a}-{b}-{c}'
     result = Protected(' and ').join(['a', 'b', 'c']).render_as('latex')
     assert result == 'a{ and }b{ and }c'
Esempio n. 8
0
 def iter_string_parts(self, level=0):
     while True:
         token = self.skip_to([self.LBRACE, self.RBRACE])
         if not token:
             remainder = self.get_remainder()
             if remainder:
                 yield String(remainder)
             if level != 0:
                 raise PybtexSyntaxError('unbalanced braces', self)
             break
         elif token.pattern is self.LBRACE:
             yield String(token.value[:-1])
             yield Protected(*self.iter_string_parts(level=level + 1))
         else:  # brace.pattern is self.RBRACE
             yield String(token.value[:-1])
             if level == 0:
                 raise PybtexSyntaxError('unbalanced braces', self)
             break
Esempio n. 9
0
 def test_join(self):
     text = Text('From ', Tag('em', 'the very beginning'), ' of things')
     dashified = String('-').join(text.split())
     assert dashified == Text('From-', Tag('em', 'the'), '-',
                              Tag('em', 'very'), '-',
                              Tag('em', 'beginning'), '-of-things')
     dashified = Tag('em', '-').join(text.split())
     assert dashified == Text('From', Tag('em', '-the-very-beginning-'),
                              'of', Tag('em', '-'), 'things')
Esempio n. 10
0
 def test_join(self):
     assert six.text_type(Text(' ').join(['a', Text('b c')])) == 'a b c'
     assert six.text_type(Text(nbsp).join(['a', 'b', 'c'])) == 'a<nbsp>b<nbsp>c'
     assert six.text_type(nbsp.join(['a', 'b', 'c'])) == 'a<nbsp>b<nbsp>c'
     assert six.text_type(String('-').join(['a', 'b', 'c'])) == 'a-b-c'
     result = Tag('em', ' and ').join(['a', 'b', 'c']).render_as('html')
     assert result == 'a<em> and </em>b<em> and </em>c'
     result = HRef('/', ' and ').join(['a', 'b', 'c']).render_as('html')
     assert result == 'a<a href="/"> and </a>b<a href="/"> and </a>c'
Esempio n. 11
0
 def test_add_period(self):
     assert unicode(String('').add_period()) == ''
     assert unicode(String('').add_period('!')) == ''
     assert unicode(String('').add_period().add_period()) == ''
     assert unicode(String('').add_period().add_period('!')) == ''
     assert unicode(String('').add_period('!').add_period()) == ''
     unicode(String('November').add_period()) == 'November.'
     result = unicode(String('November').add_period().add_period())
     assert result == 'November.'
Esempio n. 12
0
 def test_add_period(self):
     assert six.text_type(String('').add_period()) == ''
     assert six.text_type(String('').add_period('!')) == ''
     assert six.text_type(String('').add_period().add_period()) == ''
     assert six.text_type(String('').add_period().add_period('!')) == ''
     assert six.text_type(String('').add_period('!').add_period()) == ''
     six.text_type(String('November').add_period()) == 'November.'
     result = six.text_type(String('November').add_period().add_period())
     assert result == 'November.'
Esempio n. 13
0
 def test_startswith(self):
     assert not String().startswith('n')
     assert not String('').startswith('n')
     assert not String().endswith('n')
     assert not String('').endswith('n')
     assert not String('November.').startswith('n')
     assert String('November.').startswith('N')
Esempio n. 14
0
 def test_join(self):
     assert String().join([]) == Text()
     assert String('nothing to see here').join([]) == Text()
     assert String().join(['a', 'b', 'c']) == Text('abc')
     assert String(', ').join(['tomatoes']) == Text('tomatoes')
     assert String(', ').join(['tomatoes', 'cucumbers']) == Text('tomatoes, cucumbers')
     assert String(', ').join(['tomatoes', 'cucumbers', 'lemons']) == Text('tomatoes, cucumbers, lemons')
Esempio n. 15
0
 def test_capitalize(self):
     assert six.text_type(String('').capfirst()) == ''
     assert six.text_type(String('november').capfirst()) == 'November'
     assert six.text_type(String('November').capfirst()) == 'November'
     assert six.text_type(String('november december').capfirst()) == 'November december'
     assert six.text_type(String('November December').capfirst()) == 'November December'
     assert six.text_type(String('NOVEMBER DECEMBER').capfirst()) == 'NOVEMBER DECEMBER'
Esempio n. 16
0
 def test_endswith(self):
     assert not String().endswith('.')
     assert not String().endswith(('.', '!'))
     assert not String('November.').endswith('r')
     assert String('November.').endswith('.')
     assert String('November.').endswith(('.', '!'))
     assert not String('November.').endswith(('?', '!'))
Esempio n. 17
0
 def test_split(self):
     assert String().split() == []
     assert String().split('abc') == [String('')]
     assert String('a').split() == [String('a')]
     assert String('a ').split() == [String('a')]
     assert String('a + b').split() == [String('a'), String('+'), String('b')]
     assert String('a + b').split(' + ') == [String('a'), String('b')]
     assert String('a + b').split(re.compile(r'\s')) == [String('a'), String('+'), String('b')]
Esempio n. 18
0
 def test_upper(self):
     assert String('').upper() == String()
     assert String('a').upper() == String('A')
     assert String('November').upper() == String('NOVEMBER')
Esempio n. 19
0
 def test_lower(self):
     assert String('').lower() == String()
     assert String('A').lower() == String('a')
     assert String('November').lower() == String('november')
Esempio n. 20
0
 def test_append(self):
     assert String().append('') == Text()
     text = String('The').append(' Adventures of ').append('Tom Sawyer')
     assert text == Text('The Adventures of Tom Sawyer')
Esempio n. 21
0
 def test_isalpha(self):
     assert not String().isalpha()
     assert not String('a b c').isalpha()
     assert String('abc').isalpha()
     assert String(u'文字').isalpha()
Esempio n. 22
0
 def test__unicode__(self):
     val = u'Detektivbyrån'
     assert unicode(String(val)) == val
Esempio n. 23
0
 def test__add__(self):
     assert String('Python') + String(' 3') != 'Python 3'
     assert String('Python') + String(' 3') == Text('Python 3')
     assert String('A').lower() == String('a')
     assert six.text_type(String('Python') + String(' ') + String('3')) == 'Python 3'
     assert six.text_type(String('Python') + Text(' ') + String('3')) == 'Python 3'
     assert six.text_type(String('Python') + ' ' + '3') == 'Python 3'
     assert six.text_type(String('Python').append(' 3')) == 'Python 3'
Esempio n. 24
0
 def test__getitem__(self):
     digits = String('0123456789')
     assert digits[0] != '0'
     assert digits[0] == String('0')
Esempio n. 25
0
 def test__contains__(self):
     assert '' in String()
     assert 'abc' not in String()
     assert '' in String(' ')
     assert ' + ' in String('2 + 2')
Esempio n. 26
0
 def newline(self):
     """<br> added twice, need nonempty string else it gets eaten before it's written out"""
     return tag("br")[String(" ")]
Esempio n. 27
0
 def test_render_as(self):
     string = String(u'Detektivbyrån & friends')
     assert string.render_as('text') == u'Detektivbyrån & friends'
     assert string.render_as('html') == u'Detektivbyrån &amp; friends'
Esempio n. 28
0
    def test__len__(self):
        assert len(String()) == len(String('')) == 0

        val = 'test string'
        assert len(String(val)) == len(val)
Esempio n. 29
0
 def test__init__(self):
     assert String().value == ''
     assert String('').value == ''
     assert String('Wa', '', 'ke', ' ', 'up!').value == 'Wake up!'
 def test_render_as(self):
     string = String(u'Detektivbyrån & friends')
     assert string.render_as('text') == u'Detektivbyrån & friends'
     assert string.render_as('html') == u'Detektivbyrån &amp; friends'
Esempio n. 31
0
 def test__str__(self):
     val = u'Detektivbyrån'
     assert six.text_type(String(val)) == val