Add integration test covering all cql types
This commit is contained in:
99
tests/integration/test_types.py
Normal file
99
tests/integration/test_types.py
Normal file
@@ -0,0 +1,99 @@
|
||||
from decimal import Decimal
|
||||
from datetime import datetime
|
||||
from uuid import uuid1, uuid4
|
||||
import unittest
|
||||
|
||||
from cassandra.cluster import Cluster
|
||||
from cassandra.query import ColumnCollection
|
||||
|
||||
class TypeTests(unittest.TestCase):
|
||||
|
||||
def test_basic_types(self):
|
||||
c = Cluster()
|
||||
s = c.connect()
|
||||
s.execute("""
|
||||
CREATE KEYSPACE typetests
|
||||
WITH replication = { 'class' : 'SimpleStrategy', 'replication_factor': '1'}
|
||||
""")
|
||||
s.set_keyspace("typetests")
|
||||
s.execute("""
|
||||
CREATE TABLE mytable (
|
||||
a text,
|
||||
b text,
|
||||
c ascii,
|
||||
d bigint,
|
||||
e blob,
|
||||
f boolean,
|
||||
g decimal,
|
||||
h double,
|
||||
i float,
|
||||
j inet,
|
||||
k int,
|
||||
l list<text>,
|
||||
m set<int>,
|
||||
n map<text, int>,
|
||||
o text,
|
||||
p timestamp,
|
||||
q uuid,
|
||||
r timeuuid,
|
||||
s varint,
|
||||
PRIMARY KEY (a, b)
|
||||
)
|
||||
""")
|
||||
|
||||
v1_uuid = uuid1()
|
||||
v4_uuid = uuid4()
|
||||
mydatetime = datetime(2013, 1, 1, 1, 1, 1)
|
||||
|
||||
params = (
|
||||
"sometext",
|
||||
"sometext",
|
||||
"ascii", # ascii
|
||||
12345678923456789, # bigint
|
||||
"blob".encode('hex'), # blob
|
||||
True, # boolean
|
||||
Decimal('1.234567890123456789'), # decimal
|
||||
0.000244140625, # double
|
||||
1.25, # float
|
||||
"1.2.3.4", # inet
|
||||
12345, # int
|
||||
ColumnCollection(['a', 'b', 'c']), # list<text> collection
|
||||
ColumnCollection({1, 2, 3}), # set<int> collection
|
||||
ColumnCollection({'a': 1, 'b': 2}), # map<text, int> collection
|
||||
"text", # text
|
||||
mydatetime, # timestamp
|
||||
v4_uuid, # uuid
|
||||
v1_uuid, # timeuuid
|
||||
123456789123456789123456789 # varint
|
||||
)
|
||||
s.execute("""
|
||||
INSERT INTO mytable (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s)
|
||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
|
||||
""", params)
|
||||
|
||||
results = s.execute("SELECT * FROM mytable")
|
||||
|
||||
expected = (
|
||||
"sometext",
|
||||
"sometext",
|
||||
"ascii", # ascii
|
||||
12345678923456789, # bigint
|
||||
"blob", # blob
|
||||
True, # boolean
|
||||
Decimal('1.234567890123456789'), # decimal
|
||||
0.000244140625, # double
|
||||
1.25, # float
|
||||
"1.2.3.4", # inet
|
||||
12345, # int
|
||||
('a', 'b', 'c'), # list<text> collection
|
||||
{1, 2, 3}, # set<int> collection
|
||||
{'a': 1, 'b': 2}, # map<text, int> collection
|
||||
"text", # text
|
||||
mydatetime, # timestamp
|
||||
v4_uuid, # uuid
|
||||
v1_uuid, # timeuuid
|
||||
123456789123456789123456789 # varint
|
||||
)
|
||||
|
||||
for expected, actual in zip(expected, results[0]):
|
||||
self.assertEquals(expected, actual)
|
||||
Reference in New Issue
Block a user