open_toontown_panda3d/tests/showbase/test_PythonUtil.py

106 lines
2.3 KiB
Python

from direct.showbase import PythonUtil
def test_queue():
q = PythonUtil.Queue()
assert q.isEmpty()
q.clear()
assert q.isEmpty()
q.push(10)
assert not q.isEmpty()
q.push(20)
assert not q.isEmpty()
assert len(q) == 2
assert q.front() == 10
assert q.back() == 20
assert q.top() == 10
assert q.top() == 10
assert q.pop() == 10
assert len(q) == 1
assert not q.isEmpty()
assert q.pop() == 20
assert len(q) == 0
assert q.isEmpty()
def test_flywheel():
f = PythonUtil.flywheel(['a','b','c','d'], countList=[11,20,3,4])
obj2count = {}
for obj in f:
obj2count.setdefault(obj, 0)
obj2count[obj] += 1
assert obj2count['a'] == 11
assert obj2count['b'] == 20
assert obj2count['c'] == 3
assert obj2count['d'] == 4
f = PythonUtil.flywheel([1,2,3,4], countFunc=lambda x: x*2)
obj2count = {}
for obj in f:
obj2count.setdefault(obj, 0)
obj2count[obj] += 1
assert obj2count[1] == 2
assert obj2count[2] == 4
assert obj2count[3] == 6
assert obj2count[4] == 8
f = PythonUtil.flywheel([1,2,3,4], countFunc=lambda x: x, scale = 3)
obj2count = {}
for obj in f:
obj2count.setdefault(obj, 0)
obj2count[obj] += 1
assert obj2count[1] == 1 * 3
assert obj2count[2] == 2 * 3
assert obj2count[3] == 3 * 3
assert obj2count[4] == 4 * 3
def test_unescape_html_string():
assert PythonUtil.unescapeHtmlString('asdf') == 'asdf'
assert PythonUtil.unescapeHtmlString('as+df') == 'as df'
assert PythonUtil.unescapeHtmlString('as%32df') == 'as2df'
assert PythonUtil.unescapeHtmlString('asdf%32') == 'asdf2'
def test_priority_callbacks():
l = []
def a(l=l):
l.append('a')
def b(l=l):
l.append('b')
def c(l=l):
l.append('c')
pc = PythonUtil.PriorityCallbacks()
pc.add(a)
pc()
assert l == ['a']
del l[:]
bItem = pc.add(b)
pc()
assert 'a' in l
assert 'b' in l
assert len(l) == 2
del l[:]
pc.remove(bItem)
pc()
assert l == ['a']
del l[:]
pc.add(c, 2)
bItem = pc.add(b, 10)
pc()
assert l == ['a', 'c', 'b']
del l[:]
pc.remove(bItem)
pc()
assert l == ['a', 'c']
del l[:]
pc.clear()
pc()
assert len(l) == 0