Spaces:
No application file
No application file
| """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) | |