Files
rdkit/Python/ML/DecTree/UnitTestTree.py
Greg Landrum 75a79b6327 initial import
2006-05-06 22:20:08 +00:00

112 lines
3.2 KiB
Python
Executable File

#
# Copyright (C) 2000 greg Landrum
#
""" unit testing code for trees and decision trees (not learning/xvalidation) """
import RDConfig
import unittest
from ML.DecTree import Tree,DecTree
import copy
import cPickle
class TreeTestCase(unittest.TestCase):
def setUp(self):
print '\n%s: '%self.shortDescription(),
self.baseTree = Tree.TreeNode(None,'root')
self.pickleFileName = RDConfig.RDCodeDir+'/ML/DecTree/regress/treeunit.pkl'
def testAdd(self):
" testing AddChild "
tree = self.baseTree
addWorks = 1
try:
for i in xrange(3):
child = tree.AddChild('child %d'%i)
except:
addWorks = 0
assert addWorks,'Tree.AddChild failed'
def testGetName(self):
" testing GetName "
tree = self.baseTree
# we know this works
assert tree.GetName()=='root','Tree.GetName failed'
def _readyTree(self):
tree = self.baseTree
tree.AddChild('child0')
tree.AddChild('child1')
def testGetChildren(self):
" testing GetChildren "
self._readyTree()
tree = self.baseTree
child = tree.GetChildren()[1]
assert child.GetName()=='child1','Tree.GetChildren failed'
def testPrune(self):
" testing PruneChild"
self._readyTree()
tree = self.baseTree
child = tree.GetChildren()[0]
tree.PruneChild(child)
child = tree.GetChildren()[0]
assert child.GetName()=='child1','Tree.PruneChild failed'
def testPickle(self):
" testing tree pickle "
self._readyTree()
pickleWorked=1
try:
self.baseTree.Pickle(self.pickleFileName)
except:
pickleWorked=0
assert pickleWorked,'tree.Pickle Failed'
def testEquals(self):
" testing tree equals "
nTree = Tree.TreeNode(None,'root')
self._readyTree()
tTree = self.baseTree
self.baseTree = nTree
self._readyTree()
assert tTree == self.baseTree,'Equality test 1 failed. (bad Tree.__cmp__)'
assert self.baseTree==tTree,'Equality test 2 failed. (bad Tree.__cmp__)'
tTree.AddChild('child2')
assert tTree != self.baseTree,'Inequality test 1 failed. (bad Tree.__cmp__)'
assert self.baseTree != tTree,'Inequality test 2 failed. (bad Tree.__cmp__)'
def testPickleEquals(self):
" testing pickled tree equals "
self._readyTree()
pFile = open(self.pickleFileName,'r')
oTree = cPickle.load(pFile)
assert oTree == self.baseTree,'Pickle inequality test failed'
self.baseTree.PruneChild(self.baseTree.GetChildren()[0])
assert oTree != self.baseTree,'Pickle inequality test failed (bad Tree.__cmp__)'
def testCopy(self):
" testing deepcopy on trees "
self._readyTree()
nTree = copy.deepcopy(self.baseTree)
assert nTree == self.baseTree,'deepcopy failed'
def testIn(self):
" testing list membership "
self._readyTree()
nTree = copy.deepcopy(self.baseTree)
nTree2 = copy.deepcopy(self.baseTree)
nTree2.PruneChild(self.baseTree.GetChildren()[0])
tList = [nTree2,nTree2,nTree]
assert self.baseTree in tList, 'list membership (tree in list) failed'
tList = [nTree2,nTree2]
assert self.baseTree not in tList, 'list membership (tree not in list) failed'
if __name__ == '__main__':
unittest.main()