def test_AddingLabel(self):
     # Arrange
     parser1 = bpr.LParser('l')
     parser2 = bpr.LParser('o')
     parser3 = bpr.LParser('r')
     parser = cmb.until(parser1, parser2, parser3, label='Parser: lor')
     parser_default_label = cmb.until(parser1, parser2, parser3)
     # Assert
     self.assertEqual(parser.label, 'Parser: lor')
     self.assertEqual(parser_default_label.label, '(.*?)[lor]')
    def test_FailureCase(self):
        # Arrange
        txt = 'Lorem'
        parser_1 = bpr.LParser('1')

        # Act
        parser = cmb.until(parser_1)
        result = parser(txt)
        expected = res.Failure('No more input')
        # Assert
        self.assertEqual(result, expected)
 def test_CorrectlyHandlesDifferentNumberOfArguments_Failure(self):
     # Arrange
     txt = 'Lorem'
     parser_1 = bpr.LParser('1')
     parser_2 = bpr.LParser('2')
     parser_3 = bpr.LParser('3')
     parser = cmb.until(parser_1, parser_2, parser_3)
     # Act
     result = parser(txt)
     expected = res.Failure.unit('No more input')
     # Arrange
     self.assertEqual(result, expected)
    def test_SuccessCase(self):
        # Arrange
        txt1 = 'Lorem1'
        txt2 = 'Lorem#ipsum'
        parser_1 = bpr.LParser('1')
        parser_sharp = bpr.LParser('#')

        # Act
        parser = cmb.until(parser_1, parser_sharp)
        result1 = parser(txt1)
        result2 = parser(txt2)
        expected1 = res.Success(('Lorem', '1'))
        expected2 = res.Success(('Lorem', '#ipsum'))
        # Assert
        self.assertEqual(result1, expected1)
        self.assertEqual(result2, expected2)
    def test_CorrectlyHandlesDifferentNumberOfArguments_Success(self):
        # Arrange
        txt1 = 'Lorem1'
        txt2 = 'Lorem2asdas'
        txt3 = 'Lorem31as'
        parser_1 = bpr.LParser('1')
        parser_2 = bpr.LParser('2')
        parser_3 = bpr.LParser('3')

        # Act
        parser = cmb.until(parser_1, parser_2, parser_3)
        result1 = parser(txt1)
        result2 = parser(txt2)
        result3 = parser(txt3)
        expected1 = res.Success.unit(('Lorem', '1'))
        expected2 = res.Success.unit(('Lorem', '2asdas'))
        expected3 = res.Success.unit(('Lorem', '31as'))

        # # Assert
        self.assertEqual(result1, expected1)
        self.assertEqual(result2, expected2)
        self.assertEqual(result3, expected3)