mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2024-12-25 07:31:07 +00:00
Move dictutil tests out.
This commit is contained in:
parent
2ca223a67c
commit
bde2f1394d
80
src/allmydata/test/test_dictutil.py
Normal file
80
src/allmydata/test/test_dictutil.py
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
"""
|
||||||
|
Tests for allmydata.util.dictutil.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from twisted.trial import unittest
|
||||||
|
|
||||||
|
from allmydata.util import dictutil
|
||||||
|
|
||||||
|
|
||||||
|
class DictUtil(unittest.TestCase):
|
||||||
|
def test_dict_of_sets(self):
|
||||||
|
ds = dictutil.DictOfSets()
|
||||||
|
ds.add(1, "a")
|
||||||
|
ds.add(2, "b")
|
||||||
|
ds.add(2, "b")
|
||||||
|
ds.add(2, "c")
|
||||||
|
self.failUnlessEqual(ds[1], set(["a"]))
|
||||||
|
self.failUnlessEqual(ds[2], set(["b", "c"]))
|
||||||
|
ds.discard(3, "d") # should not raise an exception
|
||||||
|
ds.discard(2, "b")
|
||||||
|
self.failUnlessEqual(ds[2], set(["c"]))
|
||||||
|
ds.discard(2, "c")
|
||||||
|
self.failIf(2 in ds)
|
||||||
|
|
||||||
|
ds.add(3, "f")
|
||||||
|
ds2 = dictutil.DictOfSets()
|
||||||
|
ds2.add(3, "f")
|
||||||
|
ds2.add(3, "g")
|
||||||
|
ds2.add(4, "h")
|
||||||
|
ds.update(ds2)
|
||||||
|
self.failUnlessEqual(ds[1], set(["a"]))
|
||||||
|
self.failUnlessEqual(ds[3], set(["f", "g"]))
|
||||||
|
self.failUnlessEqual(ds[4], set(["h"]))
|
||||||
|
|
||||||
|
def test_auxdict(self):
|
||||||
|
d = dictutil.AuxValueDict()
|
||||||
|
# we put the serialized form in the auxdata
|
||||||
|
d.set_with_aux("key", ("filecap", "metadata"), "serialized")
|
||||||
|
|
||||||
|
self.failUnlessEqual(d.keys(), ["key"])
|
||||||
|
self.failUnlessEqual(d["key"], ("filecap", "metadata"))
|
||||||
|
self.failUnlessEqual(d.get_aux("key"), "serialized")
|
||||||
|
def _get_missing(key):
|
||||||
|
return d[key]
|
||||||
|
self.failUnlessRaises(KeyError, _get_missing, "nonkey")
|
||||||
|
self.failUnlessEqual(d.get("nonkey"), None)
|
||||||
|
self.failUnlessEqual(d.get("nonkey", "nonvalue"), "nonvalue")
|
||||||
|
self.failUnlessEqual(d.get_aux("nonkey"), None)
|
||||||
|
self.failUnlessEqual(d.get_aux("nonkey", "nonvalue"), "nonvalue")
|
||||||
|
|
||||||
|
d["key"] = ("filecap2", "metadata2")
|
||||||
|
self.failUnlessEqual(d["key"], ("filecap2", "metadata2"))
|
||||||
|
self.failUnlessEqual(d.get_aux("key"), None)
|
||||||
|
|
||||||
|
d.set_with_aux("key2", "value2", "aux2")
|
||||||
|
self.failUnlessEqual(sorted(d.keys()), ["key", "key2"])
|
||||||
|
del d["key2"]
|
||||||
|
self.failUnlessEqual(d.keys(), ["key"])
|
||||||
|
self.failIf("key2" in d)
|
||||||
|
self.failUnlessRaises(KeyError, _get_missing, "key2")
|
||||||
|
self.failUnlessEqual(d.get("key2"), None)
|
||||||
|
self.failUnlessEqual(d.get_aux("key2"), None)
|
||||||
|
d["key2"] = "newvalue2"
|
||||||
|
self.failUnlessEqual(d.get("key2"), "newvalue2")
|
||||||
|
self.failUnlessEqual(d.get_aux("key2"), None)
|
||||||
|
|
||||||
|
d = dictutil.AuxValueDict({1:2,3:4})
|
||||||
|
self.failUnlessEqual(sorted(d.keys()), [1,3])
|
||||||
|
self.failUnlessEqual(d[1], 2)
|
||||||
|
self.failUnlessEqual(d.get_aux(1), None)
|
||||||
|
|
||||||
|
d = dictutil.AuxValueDict([ (1,2), (3,4) ])
|
||||||
|
self.failUnlessEqual(sorted(d.keys()), [1,3])
|
||||||
|
self.failUnlessEqual(d[1], 2)
|
||||||
|
self.failUnlessEqual(d.get_aux(1), None)
|
||||||
|
|
||||||
|
d = dictutil.AuxValueDict(one=1, two=2)
|
||||||
|
self.failUnlessEqual(sorted(d.keys()), ["one","two"])
|
||||||
|
self.failUnlessEqual(d["one"], 1)
|
||||||
|
self.failUnlessEqual(d.get_aux("one"), None)
|
@ -11,7 +11,7 @@ from twisted.python.failure import Failure
|
|||||||
from allmydata.util import idlib, mathutil
|
from allmydata.util import idlib, mathutil
|
||||||
from allmydata.util import fileutil
|
from allmydata.util import fileutil
|
||||||
from allmydata.util import limiter, pollmixin
|
from allmydata.util import limiter, pollmixin
|
||||||
from allmydata.util import dictutil, yamlutil
|
from allmydata.util import yamlutil
|
||||||
from allmydata.util import log as tahoe_log
|
from allmydata.util import log as tahoe_log
|
||||||
from allmydata.util.fileutil import EncryptedTemporaryFile
|
from allmydata.util.fileutil import EncryptedTemporaryFile
|
||||||
from allmydata.test.common_util import ReallyEqualMixin
|
from allmydata.test.common_util import ReallyEqualMixin
|
||||||
@ -527,78 +527,6 @@ class EqButNotIs(object):
|
|||||||
def __eq__(self, other):
|
def __eq__(self, other):
|
||||||
return self.x == other
|
return self.x == other
|
||||||
|
|
||||||
class DictUtil(unittest.TestCase):
|
|
||||||
def test_dict_of_sets(self):
|
|
||||||
ds = dictutil.DictOfSets()
|
|
||||||
ds.add(1, "a")
|
|
||||||
ds.add(2, "b")
|
|
||||||
ds.add(2, "b")
|
|
||||||
ds.add(2, "c")
|
|
||||||
self.failUnlessEqual(ds[1], set(["a"]))
|
|
||||||
self.failUnlessEqual(ds[2], set(["b", "c"]))
|
|
||||||
ds.discard(3, "d") # should not raise an exception
|
|
||||||
ds.discard(2, "b")
|
|
||||||
self.failUnlessEqual(ds[2], set(["c"]))
|
|
||||||
ds.discard(2, "c")
|
|
||||||
self.failIf(2 in ds)
|
|
||||||
|
|
||||||
ds.add(3, "f")
|
|
||||||
ds2 = dictutil.DictOfSets()
|
|
||||||
ds2.add(3, "f")
|
|
||||||
ds2.add(3, "g")
|
|
||||||
ds2.add(4, "h")
|
|
||||||
ds.update(ds2)
|
|
||||||
self.failUnlessEqual(ds[1], set(["a"]))
|
|
||||||
self.failUnlessEqual(ds[3], set(["f", "g"]))
|
|
||||||
self.failUnlessEqual(ds[4], set(["h"]))
|
|
||||||
|
|
||||||
def test_auxdict(self):
|
|
||||||
d = dictutil.AuxValueDict()
|
|
||||||
# we put the serialized form in the auxdata
|
|
||||||
d.set_with_aux("key", ("filecap", "metadata"), "serialized")
|
|
||||||
|
|
||||||
self.failUnlessEqual(d.keys(), ["key"])
|
|
||||||
self.failUnlessEqual(d["key"], ("filecap", "metadata"))
|
|
||||||
self.failUnlessEqual(d.get_aux("key"), "serialized")
|
|
||||||
def _get_missing(key):
|
|
||||||
return d[key]
|
|
||||||
self.failUnlessRaises(KeyError, _get_missing, "nonkey")
|
|
||||||
self.failUnlessEqual(d.get("nonkey"), None)
|
|
||||||
self.failUnlessEqual(d.get("nonkey", "nonvalue"), "nonvalue")
|
|
||||||
self.failUnlessEqual(d.get_aux("nonkey"), None)
|
|
||||||
self.failUnlessEqual(d.get_aux("nonkey", "nonvalue"), "nonvalue")
|
|
||||||
|
|
||||||
d["key"] = ("filecap2", "metadata2")
|
|
||||||
self.failUnlessEqual(d["key"], ("filecap2", "metadata2"))
|
|
||||||
self.failUnlessEqual(d.get_aux("key"), None)
|
|
||||||
|
|
||||||
d.set_with_aux("key2", "value2", "aux2")
|
|
||||||
self.failUnlessEqual(sorted(d.keys()), ["key", "key2"])
|
|
||||||
del d["key2"]
|
|
||||||
self.failUnlessEqual(d.keys(), ["key"])
|
|
||||||
self.failIf("key2" in d)
|
|
||||||
self.failUnlessRaises(KeyError, _get_missing, "key2")
|
|
||||||
self.failUnlessEqual(d.get("key2"), None)
|
|
||||||
self.failUnlessEqual(d.get_aux("key2"), None)
|
|
||||||
d["key2"] = "newvalue2"
|
|
||||||
self.failUnlessEqual(d.get("key2"), "newvalue2")
|
|
||||||
self.failUnlessEqual(d.get_aux("key2"), None)
|
|
||||||
|
|
||||||
d = dictutil.AuxValueDict({1:2,3:4})
|
|
||||||
self.failUnlessEqual(sorted(d.keys()), [1,3])
|
|
||||||
self.failUnlessEqual(d[1], 2)
|
|
||||||
self.failUnlessEqual(d.get_aux(1), None)
|
|
||||||
|
|
||||||
d = dictutil.AuxValueDict([ (1,2), (3,4) ])
|
|
||||||
self.failUnlessEqual(sorted(d.keys()), [1,3])
|
|
||||||
self.failUnlessEqual(d[1], 2)
|
|
||||||
self.failUnlessEqual(d.get_aux(1), None)
|
|
||||||
|
|
||||||
d = dictutil.AuxValueDict(one=1, two=2)
|
|
||||||
self.failUnlessEqual(sorted(d.keys()), ["one","two"])
|
|
||||||
self.failUnlessEqual(d["one"], 1)
|
|
||||||
self.failUnlessEqual(d.get_aux("one"), None)
|
|
||||||
|
|
||||||
|
|
||||||
class SampleError(Exception):
|
class SampleError(Exception):
|
||||||
pass
|
pass
|
||||||
|
Loading…
Reference in New Issue
Block a user