Files
rdkit/Python/Logger/UnitTestLogger.py

127 lines
2.6 KiB
Python
Executable File

# $Id$
#
# Copyright (c) 2001-2006, Greg Landrum and Rational Discovery LLC,
#
# @@ All Rights Reserved @@
#
""" unit testing code for the logger
"""
import unittest
import Logger
import re
class Foo:
""" a simple class
"""
def __init__(self,aVal):
self.a = aVal
def method1(self,a,b,c='foo'):
return 'method1'
def method2(self):
return 'method2'
def test1(self):
return 'test1'
def test2(self):
return 'test2'
class TestCase(unittest.TestCase):
def testBasic(self):
l = Logger.Logger(Foo,7)
try:
l.method1(1,2)
l.method1(1,2,c='grm')
l.method2()
l.method1(7,6,'pizza')
l.b = 3
l.method2()
except:
ok = 0
else:
ok = 1
assert ok,'basic calls failed'
assert l.b == 3, '__setattr__ failed'
res = l._LoggerGetLog()
assert len(res) == 6, 'length of log (%d) wrong'%(len(res))
def testPlayback(self):
l = Logger.Logger(Foo,7)
try:
l.method1(1,2)
l.method1(1,2,c='grm')
l.method2()
l.method1(7,6,'pizza')
l.b = 3
l.method2()
except:
ok = 0
else:
ok = 1
assert ok,'basic calls failed'
f = Foo(7)
replay = Logger.replay(l._LoggerGetLog(),f)
assert replay==['method1','method1','method2','method1',3,'method2'],\
'replay results (%s) wrong'%(str(replay))
assert f.b == 3, '__setattr__ failed'
def testFlush(self):
l = Logger.Logger(Foo,7,loggerFlushCommand='method2')
try:
l.method1(1,2)
l.method1(1,2,c='grm')
l.method1(7,6,'pizza')
l.b = 3
except:
ok = 0
else:
ok = 1
assert ok,'basic calls failed'
res = l._LoggerGetLog()
assert len(res)==4, 'length of log (%d) wrong'%(len(res))
l.method2()
res = l._LoggerGetLog()
assert len(res)==0, 'length of log (%d) wrong'%(len(res))
def testIgnore(self):
e1 = re.compile('test*')
l = Logger.Logger(Foo,7,loggerIgnore=[e1,'method2'])
try:
l.method1(1,2)
l.method2()
l.test1()
l.test2()
l.method1(1,2,c='grm')
l.method1(7,6,'pizza')
l.b = 3
except:
ok = 0
else:
ok = 1
assert ok,'basic calls failed'
res = l._LoggerGetLog()
assert len(res)==4, 'length of log (%d) wrong'%(len(res))
def TestSuite():
suite = unittest.TestSuite()
suite.addTest(TestCase('testBasic'))
suite.addTest(TestCase('testPlayback'))
suite.addTest(TestCase('testFlush'))
suite.addTest(TestCase('testIgnore'))
return suite
if __name__ == '__main__':
suite = TestSuite()
unittest.TextTestRunner().run(suite)