1from datetime import datetime
2import unittest
3
4import _mssql
5
6
7class ErrHandleTests(unittest.TestCase):
8
9    def test01DBError(self):
10        connection = None
11        severity = 8
12        dberr = 101
13        oserr = 0
14        dberrstr = "toblerone1"
15        oserrstr = None
16
17        expect = "DB-Lib error message %d, severity %d:\n%s\n" % (
18            dberr, severity, dberrstr)
19        expect = expect.encode('UTF-8')
20
21        values = _mssql.test_err_handler(
22            connection, severity, dberr, oserr, dberrstr, oserrstr)
23        self.assertEqual(values[0], 2)
24        self.assertEqual(values[1], expect)
25
26    def test02OSError(self):
27        connection = None
28        # EXCOMM
29        severity = 9
30        dberr = 102
31        oserr = 1001
32        dberrstr = "toblerone2"
33        oserrstr = "scorpion"
34
35        expect = (
36            "DB-Lib error message %d, severity %d:\n%s\n"
37            "Net-Lib error during %s (%d)\n" % (
38                dberr, severity, dberrstr, oserrstr, oserr))
39        expect = expect.encode('UTF-8')
40
41        values = _mssql.test_err_handler(
42            connection, severity, dberr, oserr, dberrstr, oserrstr)
43        self.assertEqual(values[0], 2)
44        self.assertEqual(values[1], expect)
45
46    def test03OSError(self):
47        connection = None
48        severity = 10
49        dberr = 103
50        oserr = 1003
51        dberrstr = "toblerone3"
52        oserrstr = "cabezon"
53
54        expect = (
55            "DB-Lib error message %d, severity %d:\n%s\n"
56            "Operating System error during %s (%d)\n" % (
57                dberr, severity, dberrstr, oserrstr, oserr))
58        expect = expect.encode('UTF-8')
59
60        values = _mssql.test_err_handler(
61            connection, severity, dberr, oserr, dberrstr, oserrstr)
62        self.assertEqual(values[0], 2)
63        self.assertEqual(values[1], expect)
64
65    def test04NoError(self):
66        connection = None
67
68        # smaller than min error severity, so no output should be generated
69        severity = 5
70        dberr = 10
71        oserr = 4444
72        dberrstr = "toblerone4"
73        oserrstr = "limpet"
74
75        expect = b""
76
77        values = _mssql.test_err_handler(
78            connection, severity, dberr, oserr, dberrstr, oserrstr)
79        self.assertEqual(values[0], 2)
80        self.assertEqual(values[1], expect)
81
82if __name__ == "__main__":
83    unittest.main()
84