Skip to content

Commit 0df88c8

Browse files
committed
Units tests for B64OnIoDupSuber
1 parent 550b478 commit 0df88c8

File tree

1 file changed

+283
-4
lines changed

1 file changed

+283
-4
lines changed

tests/db/test_subing.py

Lines changed: 283 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ def test_on_suber():
364364
assert not db.opened
365365

366366

367-
def test_B64_suber():
367+
def test_b64_suber():
368368
"""
369369
Test B64Suber LMDBer sub database class
370370
"""
@@ -752,7 +752,7 @@ def test_iodup_suber():
752752
assert not db.opened
753753

754754

755-
def test_B64_iodup_suber():
755+
def test_b64_iodup_suber():
756756
"""
757757
Test B64IoDupSuber LMDBer sub database class
758758
"""
@@ -1306,6 +1306,284 @@ def test_on_iodup_suber():
13061306
assert not os.path.exists(db.path)
13071307
assert not db.opened
13081308

1309+
def test_b64_oniodup_suber():
1310+
"""
1311+
Test B64OnIoDupSuber LMDBer sub database class
1312+
"""
1313+
1314+
with dbing.openLMDB() as db:
1315+
assert isinstance(db, dbing.LMDBer)
1316+
assert db.name == "test"
1317+
assert db.opened
1318+
1319+
onbuber = subing.B64OnIoDupSuber(db=db, subkey='bags.')
1320+
assert isinstance(onbuber, subing.B64OnIoDupSuber)
1321+
assert onbuber.sdb.flags()["dupsort"]
1322+
1323+
k = "a"
1324+
j = "b"
1325+
1326+
w = ("Blue", "dog")
1327+
x = ("Green", "tree")
1328+
y = "Red"
1329+
z = ("White",)
1330+
1331+
# test addOn remOn
1332+
assert onbuber.addOn(keys=k, on=0, val=w)
1333+
assert onbuber.getOn(keys=k, on=0) == [w]
1334+
assert onbuber.addOn(keys=k, on=0, val=x)
1335+
assert onbuber.getOn(keys=k, on=0) == [w, x]
1336+
assert onbuber.addOn(keys=k, on=1, val=y)
1337+
assert onbuber.getOn(keys=k, on=1) == [(y,)]
1338+
assert onbuber.addOn(keys=k, on=1, val=z)
1339+
assert onbuber.getOn(keys=k, on=1) == [(y,), z]
1340+
1341+
assert onbuber.cntOn(keys=(k,)) == 4
1342+
1343+
items = [item for item in onbuber.getOnItemIter(keys=k)]
1344+
assert items == [(('a',), 0, ('Blue', 'dog')),
1345+
(('a',), 0, ('Green', 'tree')),
1346+
(('a',), 1, ('Red',)),
1347+
(('a',), 1, ('White',))]
1348+
1349+
assert onbuber.remOn(keys=k, on=0, val=w)
1350+
assert onbuber.remOn(keys=k, on=1)
1351+
items = [item for item in onbuber.getOnItemIter(keys=k)]
1352+
assert items == [(('a',), 0, ('Green', 'tree'))]
1353+
1354+
assert onbuber.remOn(keys=k, on=0, val=x)
1355+
assert onbuber.cntOn(keys=(k,)) == 0
1356+
1357+
# test append
1358+
assert 0 == onbuber.appendOn(keys=(j,), val=w)
1359+
assert 1 == onbuber.appendOn(keys=(j,), val=x)
1360+
assert 2 == onbuber.appendOn(keys=(j,), val=y)
1361+
assert 3 == onbuber.appendOn(keys=(j,), val=z)
1362+
1363+
assert onbuber.cntOn(keys=(j,)) == 4
1364+
assert onbuber.cntOn(keys=(j,), on=2) == 2
1365+
assert onbuber.cntOn(keys=(j,), on=4) == 0
1366+
1367+
items = [(keys, val) for keys, val in onbuber.getItemIter()]
1368+
assert items == [(('b', '00000000000000000000000000000000'), ('Blue', 'dog')),
1369+
(('b', '00000000000000000000000000000001'), ('Green', 'tree')),
1370+
(('b', '00000000000000000000000000000002'), ('Red',)),
1371+
(('b', '00000000000000000000000000000003'), ('White',))]
1372+
1373+
1374+
1375+
# test getOnIter
1376+
vals = [val for val in onbuber.getOnIter(keys=j)]
1377+
assert vals == [w, x, (y,), z]
1378+
1379+
vals = [val for val in onbuber.getOnIter(keys=j, on=2)]
1380+
assert vals == [(y,), z]
1381+
1382+
# test getOnItemIter
1383+
items = [item for item in onbuber.getOnItemIter(keys=j)]
1384+
assert items == [(('b',), 0, ('Blue', 'dog')),
1385+
(('b',), 1, ('Green', 'tree')),
1386+
(('b',), 2, ('Red',)),
1387+
(('b',), 3, ('White',))]
1388+
1389+
1390+
items = [item for item in onbuber.getOnItemIter(keys=j, on=2)]
1391+
assert items == [(('b',), 2, ('Red',)), (('b',), 3, ('White',))]
1392+
1393+
# test add duplicates
1394+
assert onbuber.add(keys=dbing.onKey(k, 0), val=w)
1395+
assert onbuber.add(keys=dbing.onKey(k, 1), val=x)
1396+
assert onbuber.add(keys=dbing.onKey("bc", 0), val=y)
1397+
assert onbuber.add(keys=dbing.onKey("ac", 0), val=z)
1398+
1399+
assert onbuber.cntOn(keys=(k,)) == 2
1400+
assert onbuber.cntOn(keys=("bc",), on=2) == 0
1401+
assert onbuber.cntOn(keys="") == 8
1402+
1403+
items = [(keys, val) for keys, val in onbuber.getItemIter()]
1404+
assert items == [(('a', '00000000000000000000000000000000'), ('Blue', 'dog')),
1405+
(('a', '00000000000000000000000000000001'), ('Green', 'tree')),
1406+
(('ac', '00000000000000000000000000000000'), ('White',)),
1407+
(('b', '00000000000000000000000000000000'), ('Blue', 'dog')),
1408+
(('b', '00000000000000000000000000000001'), ('Green', 'tree')),
1409+
(('b', '00000000000000000000000000000002'), ('Red',)),
1410+
(('b', '00000000000000000000000000000003'), ('White',)),
1411+
(('bc', '00000000000000000000000000000000'), ('Red',))]
1412+
1413+
# test getOnItemIter getOnIter
1414+
items = [item for item in onbuber.getOnItemIter(keys=k)]
1415+
assert items == [(('a',), 0, ('Blue', 'dog')), (('a',), 1, ('Green', 'tree'))]
1416+
1417+
vals = [val for val in onbuber.getOnIter(keys=k)]
1418+
assert vals == [('Blue', 'dog'), ('Green', 'tree')]
1419+
1420+
vals = [val for val in onbuber.getOnIter(keys=(k, ))]
1421+
assert vals == [('Blue', 'dog'), ('Green', 'tree')]
1422+
1423+
items = [item for item in onbuber.getOnItemIter(keys=(k, ))]
1424+
assert items == [(('a',), 0, ('Blue', 'dog')),
1425+
(('a',), 1, ('Green', 'tree'))]
1426+
1427+
items = [item for item in onbuber.getOnItemIter(keys=(k, ""))]
1428+
assert items == []
1429+
1430+
vals = [val for val in onbuber.getOnIter(keys=(k, ""))]
1431+
assert vals == []
1432+
1433+
items = [item for item in onbuber.getOnItemIter(keys='')]
1434+
assert items == [(('a',), 0, ('Blue', 'dog')),
1435+
(('a',), 1, ('Green', 'tree')),
1436+
(('ac',), 0, ('White',)),
1437+
(('b',), 0, ('Blue', 'dog')),
1438+
(('b',), 1, ('Green', 'tree')),
1439+
(('b',), 2, ('Red',)),
1440+
(('b',), 3, ('White',)),
1441+
(('bc',), 0, ('Red',))]
1442+
1443+
1444+
vals = [val for val in onbuber.getOnIter(keys='')]
1445+
assert vals == [('Blue', 'dog'),
1446+
('Green', 'tree'),
1447+
('White',),
1448+
('Blue', 'dog'),
1449+
('Green', 'tree'),
1450+
('Red',),
1451+
('White',),
1452+
('Red',)]
1453+
1454+
items = [item for item in onbuber.getOnItemIter()]
1455+
assert items == [(('a',), 0, ('Blue', 'dog')),
1456+
(('a',), 1, ('Green', 'tree')),
1457+
(('ac',), 0, ('White',)),
1458+
(('b',), 0, ('Blue', 'dog')),
1459+
(('b',), 1, ('Green', 'tree')),
1460+
(('b',), 2, ('Red',)),
1461+
(('b',), 3, ('White',)),
1462+
(('bc',), 0, ('Red',))]
1463+
1464+
1465+
vals = [val for val in onbuber.getOnIter()]
1466+
assert vals == [('Blue', 'dog'),
1467+
('Green', 'tree'),
1468+
('White',),
1469+
('Blue', 'dog'),
1470+
('Green', 'tree'),
1471+
('Red',),
1472+
('White',),
1473+
('Red',)]
1474+
1475+
# test with duplicates
1476+
assert onbuber.add(keys=dbing.onKey(j, 0), val=z)
1477+
assert onbuber.add(keys=dbing.onKey(j, 1), val=y)
1478+
assert onbuber.add(keys=dbing.onKey(j, 2), val=x)
1479+
assert onbuber.add(keys=dbing.onKey(j, 3), val=w)
1480+
1481+
assert onbuber.cntOn(keys=(j,)) == 8
1482+
assert onbuber.cntOn(keys=(j,), on=2) == 4
1483+
assert onbuber.cntOn(keys=(j,), on=4) == 0
1484+
1485+
items = [(keys, val) for keys, val in onbuber.getItemIter(keys=(j, ""))]
1486+
assert items == [(('b', '00000000000000000000000000000000'), ('Blue', 'dog')),
1487+
(('b', '00000000000000000000000000000000'), ('White',)),
1488+
(('b', '00000000000000000000000000000001'), ('Green', 'tree')),
1489+
(('b', '00000000000000000000000000000001'), ('Red',)),
1490+
(('b', '00000000000000000000000000000002'), ('Red',)),
1491+
(('b', '00000000000000000000000000000002'), ('Green', 'tree')),
1492+
(('b', '00000000000000000000000000000003'), ('White',)),
1493+
(('b', '00000000000000000000000000000003'), ('Blue', 'dog'))]
1494+
1495+
1496+
# test getOnItemIter getOnIter getOnItemBackIter getOnBackIter
1497+
items = [item for item in onbuber.getOnItemIter(keys=j)]
1498+
assert items == [(('b',), 0, ('Blue', 'dog')),
1499+
(('b',), 0, ('White',)),
1500+
(('b',), 1, ('Green', 'tree')),
1501+
(('b',), 1, ('Red',)),
1502+
(('b',), 2, ('Red',)),
1503+
(('b',), 2, ('Green', 'tree')),
1504+
(('b',), 3, ('White',)),
1505+
(('b',), 3, ('Blue', 'dog'))]
1506+
1507+
vals = [val for val in onbuber.getOnIter(keys=j)]
1508+
assert vals == [('Blue', 'dog'),
1509+
('White',),
1510+
('Green', 'tree'),
1511+
('Red',),
1512+
('Red',),
1513+
('Green', 'tree'),
1514+
('White',),
1515+
('Blue', 'dog')]
1516+
1517+
1518+
items = [item for item in onbuber.getOnItemBackIter(keys=j, on=4)]
1519+
assert items == [(('b',), 3, ('Blue', 'dog')),
1520+
(('b',), 3, ('White',)),
1521+
(('b',), 2, ('Green', 'tree')),
1522+
(('b',), 2, ('Red',)),
1523+
(('b',), 1, ('Red',)),
1524+
(('b',), 1, ('Green', 'tree')),
1525+
(('b',), 0, ('White',)),
1526+
(('b',), 0, ('Blue', 'dog'))]
1527+
1528+
1529+
vals = [val for val in onbuber.getOnBackIter(keys=j, on=4)]
1530+
assert vals == [('Blue', 'dog'),
1531+
('White',),
1532+
('Green', 'tree'),
1533+
('Red',),
1534+
('Red',),
1535+
('Green', 'tree'),
1536+
('White',),
1537+
('Blue', 'dog')]
1538+
1539+
1540+
items = [item for item in onbuber.getOnItemIter(keys=j, on=2)]
1541+
assert items ==[(('b',), 2, ('Red',)),
1542+
(('b',), 2, ('Green', 'tree')),
1543+
(('b',), 3, ('White',)),
1544+
(('b',), 3, ('Blue', 'dog'))]
1545+
1546+
vals = [val for val in onbuber.getOnIter(keys=j, on=2)]
1547+
assert vals == [('Red',), ('Green', 'tree'), ('White',), ('Blue', 'dog')]
1548+
1549+
1550+
items = [item for item in onbuber.getOnItemBackIter(keys=j, on=1)]
1551+
assert items ==[(('b',), 1, ('Red',)),
1552+
(('b',), 1, ('Green', 'tree')),
1553+
(('b',), 0, ('White',)),
1554+
(('b',), 0, ('Blue', 'dog'))]
1555+
1556+
vals = [val for val in onbuber.getOnBackIter(keys=j, on=1)]
1557+
assert vals == [('Red',), ('Green', 'tree'), ('White',), ('Blue', 'dog')]
1558+
1559+
# test append with duplicates
1560+
assert 4 == onbuber.appendOn(keys=(j,), val=x)
1561+
assert onbuber.cntOn(keys=(j,)) == 9
1562+
1563+
# test remove
1564+
assert onbuber.remOn(keys=j, on=1)
1565+
assert not onbuber.remOn(keys=j, on=1)
1566+
assert onbuber.remOn(keys=j, on=3)
1567+
assert not onbuber.remOn(keys=j, on=3)
1568+
1569+
assert onbuber.cntOn(keys=(j,)) == 5
1570+
1571+
items = [item for item in onbuber.getOnItemIter(keys=j)]
1572+
assert items == [(('b',), 0, ('Blue', 'dog')),
1573+
(('b',), 0, ('White',)),
1574+
(('b',), 2, ('Red',)),
1575+
(('b',), 2, ('Green', 'tree')),
1576+
(('b',), 4, ('Green', 'tree'))]
1577+
1578+
vals = [val for val in onbuber.getOnIter(keys=j)]
1579+
assert vals == [('Blue', 'dog'),
1580+
('White',),
1581+
('Red',),
1582+
('Green', 'tree'),
1583+
('Green', 'tree')]
1584+
1585+
assert not os.path.exists(db.path)
1586+
assert not db.opened
13091587

13101588

13111589
def test_ioset_suber():
@@ -3011,11 +3289,12 @@ def test_crypt_signer_suber():
30113289
if __name__ == "__main__":
30123290
test_suber()
30133291
test_on_suber()
3014-
test_B64_suber()
3292+
test_b64_suber()
30153293
test_dup_suber()
30163294
test_iodup_suber()
3017-
test_B64_iodup_suber()
3295+
test_b64_iodup_suber()
30183296
test_on_iodup_suber()
3297+
test_b64_oniodup_suber()
30193298
test_ioset_suber()
30203299
test_cat_cesr_suber()
30213300
test_cesr_suber()

0 commit comments

Comments
 (0)