123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- """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)
|