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