예제 #1
0
    def test_22_defaut_handler_param(self):
        """Test bad data parameter to default error handler"""
        # (It should be an integer >=0 and <= lg_None.)
        # Here the error handler is still set to None.

        # This test doesn't work - TypeError is somehow raised inside
        # linkgrammar.py when _default_handler() is invoked as a callback.
        #
        #LG_Error.set_handler(self.__class__.handler["default"], "bad param")
        #with self.assertRaises(TypeError):
        #    try:
        #        Dictionary("a visible dummy dict name (bad param test)")
        #    except LG_Error:
        #        pass

        # So test it directly.
        self.assertRaises(LG_Error, Dictionary, "a visible dummy dict name (bad param test)")
        LG_Error.printall(self.error_handler_test, self) # grab a valid errinfo
        self.assertRaisesRegexp(TypeError, "must be an integer",
                                self.__class__.handler["default"],
                                self.errinfo, "bad param")
        self.assertRaisesRegexp(ValueError, "must be an integer",
                                self.__class__.handler["default"],
                                self.errinfo, clg.lg_None+1)
        self.assertRaises(ValueError, self.__class__.handler["default"],
                          self.errinfo, -1)
        try:
            self.param_ok = False
            self.__class__.handler["default"](self.errinfo, 1)
            self.param_ok = True
        except (TypeError, ValueError):
            self.assertTrue(self.param_ok)
예제 #2
0
 def test_40_clearall(self):
     # Here the error handler is still set to None.
     # Call LG_Error.clearall() and validate it indeed clears the error.
     self.assertRaises(LG_Error, Dictionary, "clearall-test-dummy-dict")
     LG_Error.clearall()
     self.testit = "clearall"
     self.numerr = LG_Error.printall(self.error_handler_test, self)
     self.assertEqual(self.numerr, 0)
     self.assertFalse(hasattr(self, "gotit"))
예제 #3
0
 def test_30_formatmsg(self):
     # Here the error handler is still set to None.
     for _ in range(0, 1 + self.testleaks):
         self.assertRaises(LG_Error, Dictionary,
                           "formatmsg-test-dummy-dict")
         LG_Error.printall(self.error_handler_test, self)
         self.assertRegexpMatches(
             self.errinfo.formatmsg(),
             "link-grammar: Error: .*formatmsg-test-dummy-dict")
예제 #4
0
 def test_50_set_orig_error_handler(self):
     # Set the error handler back to the default handler.
     # The error message is now visible (but we cannot test that).
     self.__class__.handler["previous"] = LG_Error.set_handler(self.__class__.handler["default"])
     self.assertIsNone(self.__class__.handler["previous"])
     for _ in range(0, 1+self.testleaks):
         self.__class__.handler["previous"] = LG_Error.set_handler(self.__class__.handler["default"])
     self.assertEqual(self.__class__.handler["previous"].__name__, "_default_handler")
     self.errinfo = "dummy"
     self.assertRaises(LG_Error, Dictionary, "a visible dummy dict name (default handler test)")
     self.assertEqual(self.errinfo, "dummy")
예제 #5
0
 def test_21_set_error_handler_None(self):
     # Further test of correct number of errors.
     self.numerr = 3
     for _ in range(0, self.numerr):
         self.assertRaises(LG_Error, Dictionary, "seh_dummy2")
     self.numerr = LG_Error.printall(self.error_handler_test, None)
     self.assertEqual(self.numerr, self.numerr)
예제 #6
0
 def test_20_set_error_handler_None(self):
     # Set the error handler to None and validate that printall()
     # gets the error info and the data and returns the number of errors.
     self.__class__.handler["previous"] = LG_Error.set_handler(None)
     self.assertEqual(self.__class__.handler["previous"].__name__, "error_handler_test")
     self.assertRaises(LG_Error, Dictionary, "seh_dummy2")
     self.gotit = None
     for i in range(0, 2+self.testleaks):
         self.numerr = LG_Error.printall(self.error_handler_test, self)
         if 0 == i:
             self.assertEqual(self.numerr, 1)
         if 1 == i:
             self.assertEqual(self.numerr, 0)
     self.assertEqual((self.errinfo.severity, self.errinfo.severity_label), (clg.lg_Error, "Error"))
     self.assertEqual(self.gotit, "testit")
     self.assertRegexpMatches(self.errinfo.text, ".*seh_dummy2")
예제 #7
0
 def test_10_set_error_handler(self):
     # Set the error handler and validate that it
     # gets the error info and the data.
     self.__class__.handler["default"] = \
         LG_Error.set_handler(self.error_handler_test, self)
     self.assertEqual(self.__class__.handler["default"].__name__,
                      "_default_handler")
     self.gotit = None
     self.assertRaises(LG_Error, Dictionary, "seh_dummy1")
     self.assertEqual((self.errinfo.severity, self.errinfo.severity_label), (clg.lg_Error, "Error"))
     self.assertEqual(self.gotit, "testit")
     self.assertRegexpMatches(self.errinfo.text, "Could not open dictionary.*seh_dummy1")
예제 #8
0
 def test_25_prt_error_in_parts_with_embedded_newline(self):
     LG_Error.message("Trace: part one...\n\\")
     LG_Error.message("part two\n")
     LG_Error.printall(self.error_handler_test, self)
     self.assertEqual(self.errinfo.text, "part one...\npart two\n")
     self.assertEqual((self.errinfo.severity, self.errinfo.severity_label),
                      (clg.lg_Trace, "Trace"))
예제 #9
0
 def test_24_prt_error_in_parts(self):
     LG_Error.message("Trace: part one... ")
     LG_Error.message("part two\n")
     LG_Error.printall(self.error_handler_test, self)
     self.assertEqual(self.errinfo.text, "part one... part two\n")
     self.assertEqual((self.errinfo.severity, self.errinfo.severity_label),
                      (clg.lg_Trace, "Trace"))
예제 #10
0
 def test_41_flush(self):
     # Here the error handler is still set to None.
     # First validate that nothing gets flushed (no error is buffered at this point).
     self.flushed = LG_Error.flush()
     self.assertEqual(self.flushed, False)
     # Now generate a partial error message that is still buffered.
     LG_Error.message("This is a partial error message.")
     # Validate that it is still hidden.
     self.numerr = LG_Error.printall(self.error_handler_test, self)
     self.assertEqual(self.numerr, 0)
     self.assertFalse(hasattr(self, "gotit"))
     # Flush it.
     self.flushed = LG_Error.flush()
     self.assertEqual(self.flushed, True)
     self.numerr = LG_Error.printall(self.error_handler_test, self)
     self.assertEqual(self.numerr, 1)
     self.assertRegexpMatches(self.errinfo.text, "partial")
예제 #11
0
 def test_26_prt_error_plain_message(self):
     LG_Error.message("This is a regular output line.\n")
     LG_Error.printall(self.error_handler_test, self)
     self.assertEqual(self.errinfo.text, "This is a regular output line.\n")
     self.assertEqual((self.errinfo.severity, self.errinfo.severity_label),
                      (clg.lg_None, ""))
예제 #12
0
 def test_23_prt_error(self):
     LG_Error.message("Info: prt_error test\n")
     LG_Error.printall(self.error_handler_test, self)
     self.assertRegexpMatches(self.errinfo.text, "prt_error test\n")
     self.assertEqual((self.errinfo.severity, self.errinfo.severity_label),
                      (clg.lg_Info, "Info"))