You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.3 KiB
45 lines
1.3 KiB
#! /usr/bin/env python |
|
import copy |
|
import pytest |
|
import sqlite3 |
|
|
|
from jmbase import dict_factory, random_insert |
|
|
|
def test_color_coded_logging(): |
|
# TODO |
|
pass |
|
|
|
@pytest.mark.parametrize('list1, list2', [ |
|
[[1,2,3],[4,5,6]], |
|
[["a", "b", "c", "d", "e", "f", "g"], [1,2]], |
|
]) |
|
def test_random_insert(list1, list2): |
|
l1 = len(list1) |
|
l2 = len(list2) |
|
# make a copy of the old version so we can |
|
# check ordering: |
|
old_list1 = copy.deepcopy(list1) |
|
random_insert(list1, list2) |
|
assert len(list1) == l1+l2 |
|
assert all([x in list1 for x in list2]) |
|
assert all([x in list1 for x in old_list1]) |
|
# check the order of every element in the original |
|
# list is preserved: |
|
for x, y in [(old_list1[i], old_list1[i+1]) for i in range( |
|
len(old_list1)-1)]: |
|
# no need to catch ValueError, it should never throw |
|
# so that's a fail anyway. |
|
i_x = list1.index(x) |
|
i_y = list1.index(y) |
|
assert i_y > i_x |
|
|
|
def test_dict_factory(): |
|
con = sqlite3.connect(":memory:") |
|
con.row_factory = dict_factory |
|
db = con.cursor() |
|
db.execute("CREATE TABLE test (one TEXT, two TEXT)") |
|
db.execute("INSERT INTO test VALUES (?, ?)", [ "one", "two" ]) |
|
res = db.execute("SELECT * FROM test") |
|
row = res.fetchone() |
|
assert row["one"] == "one" |
|
assert row["two"] == "two"
|
|
|