File: test_bool.py

package info (click to toggle)
python-clickhouse-driver 0.2.5-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,516 kB
  • sloc: python: 10,950; pascal: 42; makefile: 31; sh: 3
file content (71 lines) | stat: -rw-r--r-- 2,077 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
from tests.testcase import BaseTestCase
from clickhouse_driver import errors


class BoolTestCase(BaseTestCase):
    required_server_version = (21, 12)

    def test_simple(self):
        columns = ("a Bool")

        data = [(1,), (0,), (True,), (False,), (None,), ("False",), ("",)]
        with self.create_table(columns):
            self.client.execute('INSERT INTO test (a) VALUES', data)

            query = 'SELECT * FROM test'
            inserted = self.emit_cli(query)
            self.assertEqual(
                inserted, (
                    'true\n'
                    'false\n'
                    'true\n'
                    'false\n'
                    'false\n'
                    'true\n'
                    'false\n'
                )
            )

            inserted = self.client.execute(query)
            self.assertEqual(
                inserted, [
                    (True, ),
                    (False, ),
                    (True, ),
                    (False, ),
                    (False, ),
                    (True, ),
                    (False, ),
                ]
            )

    def test_errors(self):
        columns = "a Bool"
        with self.create_table(columns):
            with self.assertRaises(errors.TypeMismatchError):
                self.client.execute(
                    'INSERT INTO test (a) VALUES', [(1, )],
                    types_check=True
                )

    def test_nullable(self):
        columns = "a Nullable(Bool)"

        data = [(None, ), (True, ), (False, )]
        with self.create_table(columns):
            self.client.execute('INSERT INTO test (a) VALUES', data)

            query = 'SELECT * FROM test'
            inserted = self.emit_cli(query)
            self.assertEqual(
                inserted, (
                    '\\N\ntrue\nfalse\n'
                )
            )

            inserted = self.client.execute(query)
            self.assertEqual(
                inserted, [
                    (None, ), (True, ), (False, ),
                ]
            )