test_wildcard.py
147 lines
| 4.6 KiB
| text/x-python
|
PythonLexer
Fernando Perez
|
r2657 | """Some tests for the wildcard utilities.""" | ||
vivainio
|
r503 | |||
Fernando Perez
|
r2657 | #----------------------------------------------------------------------------- | ||
# Library imports | ||||
#----------------------------------------------------------------------------- | ||||
# Stdlib | ||||
import unittest | ||||
# Our own | ||||
from IPython.utils import wildcard | ||||
#----------------------------------------------------------------------------- | ||||
# Globals for test | ||||
#----------------------------------------------------------------------------- | ||||
vivainio
|
r503 | |||
class obj_t(object): | ||||
pass | ||||
Fernando Perez
|
r2657 | root = obj_t() | ||
l = ["arna","abel","ABEL","active","bob","bark","abbot"] | ||||
q = ["kate","loop","arne","vito","lucifer","koppel"] | ||||
vivainio
|
r503 | for x in l: | ||
Fernando Perez
|
r2657 | o = obj_t() | ||
vivainio
|
r503 | setattr(root,x,o) | ||
for y in q: | ||||
Fernando Perez
|
r2657 | p = obj_t() | ||
vivainio
|
r503 | setattr(o,y,p) | ||
Fernando Perez
|
r2657 | 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 | ||||
vivainio
|
r503 | |||
Fernando Perez
|
r2657 | #----------------------------------------------------------------------------- | ||
# Test cases | ||||
#----------------------------------------------------------------------------- | ||||
vivainio
|
r503 | |||
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() | ||||
Fernando Perez
|
r2657 | a=wildcard.list_namespace(ns,"all",pat,ignore_case=False, | ||
show_all=False).keys() | ||||
vivainio
|
r503 | a.sort() | ||
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() | ||||
Fernando Perez
|
r2657 | a=wildcard.list_namespace(ns,"all",pat,ignore_case=False, | ||
show_all=True).keys() | ||||
vivainio
|
r503 | a.sort() | ||
self.assertEqual(a,res) | ||||
def test_nocase(self): | ||||
ns=root.__dict__ | ||||
tests=[ | ||||
("a*", ["abbot","abel","ABEL","active","arna",]), | ||||
Fernando Perez
|
r2657 | ("?b*.?o*",["abbot.koppel","abbot.loop","abel.koppel","abel.loop", | ||
"ABEL.koppel","ABEL.loop",]), | ||||
vivainio
|
r503 | ("_a*", []), | ||
("_*anka", ["__anka","__ANKA",]), | ||||
("_*a*", ["__anka","__ANKA",]), | ||||
] | ||||
for pat,res in tests: | ||||
res.sort() | ||||
Fernando Perez
|
r2657 | a=wildcard.list_namespace(ns,"all",pat,ignore_case=True, | ||
show_all=False).keys() | ||||
vivainio
|
r503 | a.sort() | ||
self.assertEqual(a,res) | ||||
def test_nocase_showall(self): | ||||
ns=root.__dict__ | ||||
tests=[ | ||||
("a*", ["abbot","abel","ABEL","active","arna",]), | ||||
Fernando Perez
|
r2657 | ("?b*.?o*",["abbot.koppel","abbot.loop","abel.koppel","abel.loop", | ||
"ABEL.koppel","ABEL.loop",]), | ||||
vivainio
|
r503 | ("_a*", ["_apan","_APAN"]), | ||
("_*anka", ["__anka","__ANKA",]), | ||||
("_*a*", ["__anka","__ANKA","_apan","_APAN"]), | ||||
] | ||||
for pat,res in tests: | ||||
res.sort() | ||||
Fernando Perez
|
r2657 | a=wildcard.list_namespace(ns,"all",pat,ignore_case=True, | ||
show_all=True).keys() | ||||
vivainio
|
r503 | a.sort() | ||
self.assertEqual(a,res) | ||||
Thomas Kluyver
|
r3261 | |||
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 = wildcard.list_namespace(ns, "all", pat, ignore_case=False, | ||||
show_all=True).keys() | ||||
a.sort() | ||||
self.assertEqual(a, res) | ||||
Thomas Kluyver
|
r3357 | |||
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) | ||||