Spaces:
Runtime error
Runtime error
"""Some tests for the wildcard utilities.""" | |
#----------------------------------------------------------------------------- | |
# Library imports | |
#----------------------------------------------------------------------------- | |
# Stdlib | |
import unittest | |
# Our own | |
from IPython.utils import wildcard | |
#----------------------------------------------------------------------------- | |
# Globals for test | |
#----------------------------------------------------------------------------- | |
class obj_t(object): | |
pass | |
root = obj_t() | |
l = ["arna","abel","ABEL","active","bob","bark","abbot"] | |
q = ["kate","loop","arne","vito","lucifer","koppel"] | |
for x in l: | |
o = obj_t() | |
setattr(root,x,o) | |
for y in q: | |
p = obj_t() | |
setattr(o,y,p) | |
root._apan = obj_t() | |
root._apan.a = 10 | |
root._apan._a = 20 | |
root._apan.__a = 20 | |
root.__anka = obj_t() | |
root.__anka.a = 10 | |
root.__anka._a = 20 | |
root.__anka.__a = 20 | |
root._APAN = obj_t() | |
root._APAN.a = 10 | |
root._APAN._a = 20 | |
root._APAN.__a = 20 | |
root.__ANKA = obj_t() | |
root.__ANKA.a = 10 | |
root.__ANKA._a = 20 | |
root.__ANKA.__a = 20 | |
#----------------------------------------------------------------------------- | |
# Test cases | |
#----------------------------------------------------------------------------- | |
class Tests (unittest.TestCase): | |
def test_case(self): | |
ns=root.__dict__ | |
tests=[ | |
("a*", ["abbot","abel","active","arna",]), | |
("?b*.?o*",["abbot.koppel","abbot.loop","abel.koppel","abel.loop",]), | |
("_a*", []), | |
("_*anka", ["__anka",]), | |
("_*a*", ["__anka",]), | |
] | |
for pat,res in tests: | |
res.sort() | |
a=sorted(wildcard.list_namespace(ns,"all",pat,ignore_case=False, | |
show_all=False).keys()) | |
self.assertEqual(a,res) | |
def test_case_showall(self): | |
ns=root.__dict__ | |
tests=[ | |
("a*", ["abbot","abel","active","arna",]), | |
("?b*.?o*",["abbot.koppel","abbot.loop","abel.koppel","abel.loop",]), | |
("_a*", ["_apan"]), | |
("_*anka", ["__anka",]), | |
("_*a*", ["__anka","_apan",]), | |
] | |
for pat,res in tests: | |
res.sort() | |
a=sorted(wildcard.list_namespace(ns,"all",pat,ignore_case=False, | |
show_all=True).keys()) | |
self.assertEqual(a,res) | |
def test_nocase(self): | |
ns=root.__dict__ | |
tests=[ | |
("a*", ["abbot","abel","ABEL","active","arna",]), | |
("?b*.?o*",["abbot.koppel","abbot.loop","abel.koppel","abel.loop", | |
"ABEL.koppel","ABEL.loop",]), | |
("_a*", []), | |
("_*anka", ["__anka","__ANKA",]), | |
("_*a*", ["__anka","__ANKA",]), | |
] | |
for pat,res in tests: | |
res.sort() | |
a=sorted(wildcard.list_namespace(ns,"all",pat,ignore_case=True, | |
show_all=False).keys()) | |
self.assertEqual(a,res) | |
def test_nocase_showall(self): | |
ns=root.__dict__ | |
tests=[ | |
("a*", ["abbot","abel","ABEL","active","arna",]), | |
("?b*.?o*",["abbot.koppel","abbot.loop","abel.koppel","abel.loop", | |
"ABEL.koppel","ABEL.loop",]), | |
("_a*", ["_apan","_APAN"]), | |
("_*anka", ["__anka","__ANKA",]), | |
("_*a*", ["__anka","__ANKA","_apan","_APAN"]), | |
] | |
for pat,res in tests: | |
res.sort() | |
a=sorted(wildcard.list_namespace(ns,"all",pat,ignore_case=True, | |
show_all=True).keys()) | |
a.sort() | |
self.assertEqual(a,res) | |
def test_dict_attributes(self): | |
"""Dictionaries should be indexed by attributes, not by keys. This was | |
causing Github issue 129.""" | |
ns = {"az":{"king":55}, "pq":{1:0}} | |
tests = [ | |
("a*", ["az"]), | |
("az.k*", ["az.keys"]), | |
("pq.k*", ["pq.keys"]) | |
] | |
for pat, res in tests: | |
res.sort() | |
a = sorted(wildcard.list_namespace(ns, "all", pat, ignore_case=False, | |
show_all=True).keys()) | |
self.assertEqual(a, res) | |
def test_dict_dir(self): | |
class A(object): | |
def __init__(self): | |
self.a = 1 | |
self.b = 2 | |
def __getattribute__(self, name): | |
if name=="a": | |
raise AttributeError | |
return object.__getattribute__(self, name) | |
a = A() | |
adict = wildcard.dict_dir(a) | |
assert "a" not in adict # change to assertNotIn method in >= 2.7 | |
self.assertEqual(adict["b"], 2) | |