Exemple #1
0
    def test_simple_string(self):
        stream = string_is('"Some Text is here"')

        self.assertTrue(self.handler.can_handle(stream))
        r = self.handler.handle(stream)
        self.assertTrue(isinstance(r, String))
        self.assertEqual(r.value, 'Some Text is here')
Exemple #2
0
    def test_not_enclosed_string(self):
        stream = string_is('"Some Text is here')

        self.assertTrue(self.handler.can_handle(stream))

        with self.assertRaises(Exception) as cm:
            self.handler.handle(stream)
Exemple #3
0
    def test_comment(self):
        stream = string_is('# This is some comment')

        self.assertTrue(self.handler.can_handle(stream))
        r = self.handler.handle(stream)

        self.assertEqual(r, ' This is some comment')
    def test_negative_float(self):
        stream = string_is('-9567.9876')
        self.assertTrue(self.number_handler.can_handle(stream),
                        'NumberHandler should handle positive floats')
        number = self.number_handler.handle(stream)

        self.assertTrue(isinstance(number, Number))
        self.assertTrue(number.value, '-9567.9876')
    def test_negative_integer(self):
        stream = string_is('-43298')
        self.assertTrue(self.number_handler.can_handle(stream),
                        'NumberHandler should handle negative integers')
        number = self.number_handler.handle(stream)

        self.assertTrue(isinstance(number, Number))
        self.assertTrue(number.value, '-43298')
Exemple #6
0
    def test_close_bracket(self):
        stream = string_is(')')

        self.assertTrue(self.handler.can_handle(stream))
        result = self.handler.handle(stream)

        self.assertTrue(isinstance(result, Punctuation))
        self.assertEqual(result.value, ')')
    def test_consume_all_stream_gives_same_string(self):
        input_sting = 'some string'
        input_stream = string_is(input_sting)
        aggregate = []
        while not input_stream.eof():
            aggregate.append(input_stream.next())

        self.assertEqual(input_sting, ''.join(aggregate), '')
 def test_peek_returns_same_values_as_next(self):
     input_sting = 'some string'
     input_stream = string_is(input_sting)
     aggregate = []
     while not input_stream.eof():
         peek_result = input_stream.peek()
         next_result = input_stream.next()
         self.assertEqual(peek_result, next_result,
                          'peek should return same values as next')
    def test_next_properly_updates_stream_position(self):
        input_sting = 'some string\n \nsome'
        input_stream = string_is(input_sting)

        position_1 = input_stream.current_position()
        self.assertEqual(position_1.col, 0)
        self.assertEqual(position_1.line, 1)

        for i in range(0, 12):
            input_stream.next()

        position_2 = input_stream.current_position()

        self.assertEqual(0, position_2.col)
        self.assertEqual(2, position_2.line)

        while not input_stream.eof():
            input_stream.next()

        position_3 = input_stream.current_position()
        self.assertEqual(position_3.line, 3)
        self.assertEqual(position_3.col, 4)
    def test_peek_does_not_change_stream_position(self):
        input_sting = 'some string'
        input_stream = string_is(input_sting)

        position_1 = input_stream.current_position()

        peek1_1 = input_stream.peek()
        peek1_2 = input_stream.peek()

        self.assertEqual(position_1, input_stream.current_position(),
                         'peek should not change position in the stream')
        self.assertEqual(
            peek1_1, peek1_2,
            'peeks from same position in the stream should return same value')

        next_1 = input_stream.next()
        after_next_position = input_stream.current_position()
        self.assertNotEqual(position_1, after_next_position,
                            'next should change position in the stream')
        self.assertEqual(position_1.line, after_next_position.line,
                         'line should remain the same')
        self.assertEqual(position_1.col + 1, after_next_position.col,
                         'next should increase col + 1')

        self.assertEqual(peek1_2, next_1,
                         'peek should return same values as next')

        peek2_1 = input_stream.peek()
        peek2_2 = input_stream.peek()
        next_2 = input_stream.next()

        self.assertEqual(
            peek2_1, peek2_2,
            'peeks from same position in the stream should return same value')
        self.assertEqual(peek2_2, next_2,
                         'peek should return same values as next')
    def test_incorrect_scientific_form_throws_exception(self):
        stream = string_is('-2.78Ea')

        with self.assertRaises(Exception) as cm:
            number = self.number_handler.handle(stream)
    def test_negative_scientific_float(self):
        stream = string_is('-2.78E5')
        number = self.number_handler.handle(stream)

        self.assertTrue(isinstance(number, Number))
        self.assertTrue(number.value, '-2.78E5')
    def test_positive_scientific_integer(self):
        stream = string_is('25E5')
        number = self.number_handler.handle(stream)

        self.assertTrue(isinstance(number, Number))
        self.assertTrue(number.value, '25E5')
    def test_can_handle_negative_numbers(self):
        stream = string_is('-5234.239')

        self.assertTrue(self.number_handler.can_handle(stream))
    def test_properly_moves_stream_position_to_nonwhite_character(self):
        stream = string_is('    \t\t   \t W')

        self.assertTrue(self.handler.can_handle(stream))
        self.handler.handle(stream)
        self.assertEqual('W', stream.peek())