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

80 lines
2.5 KiB
Python
Executable File

#
# Copyright (C) 2001 greg Landrum
#
# unit testing code for the composite model COM server
import RDConfig
import unittest
from ML.Composite import Composite
from win32com.client import Dispatch
from Numeric import *
class TestCase(unittest.TestCase):
def setUp(self):
print '\n%s: '%self.shortDescription(),
def testConnect(self):
" connecting to COM server "
ok = 1
try:
c = Dispatch('RD.Composite')
except:
ok = 0
assert ok and c is not None, 'connection to COM server failed'
def testLoad(self):
" loading a composite "
c = Dispatch('RD.Composite')
ok = 1
try:
c.LoadComposite(RDConfig.RDCodeDir+'/ml/composite/test_data/composite_base.pkl')
except:
ok = 0
assert ok, 'LoadComposite failed'
def testNames(self):
" testing descriptor names "
c = Dispatch('RD.Composite')
c.LoadComposite(RDConfig.RDCodeDir+'/ml/composite/test_data/composite_base.pkl')
names = c.GetDescriptorNames()
expectedNames = ('composition', 'max_atomic', 'has3d', 'has4d', 'has5d',
'elconc', 'atvol', 'isferro')
assert names==expectedNames, 'GetDescriptorNames failed'
def testInputOrder(self):
" testing input order "
c = Dispatch('RD.Composite')
c.LoadComposite(RDConfig.RDCodeDir+'/ml/composite/test_data/composite_base.pkl')
names = c.GetDescriptorNames()
ok = 1
try:
c.SetInputOrder(names)
except:
ok = 0
assert ok,'SetInputOrder failed'
def testClassify(self):
" testing classification "
argV = ['CrPt3','fcc','AuCu3',58.09549962,36,4,0.228898,2.219,1,3.67481803894, 1, 0, 1, 0.619669341609, 14.523874905]
nameV = ['composition','Structure','Structure_Type','Volume',
'Electrons_Per_Unit','Atoms_Per_Unit','Hardness','DOS_Ef',
'isferro','max_atomic', 'has3d', 'has4d', 'has5d',
'elconc', 'atvol']
c = Dispatch('RD.Composite')
c.LoadComposite(RDConfig.RDCodeDir+'/ml/composite/test_data/composite_base.pkl')
c.SetInputOrder(nameV)
res = c.ClassifyExample(argV)
expected = [1,1.0]
assert res[0] == expected[0],'bad prediction'
assert res[1] == expected[1],'bad confidence'
def TestSuite():
suite = unittest.TestSuite()
suite.addTest(TestCase('testConnect'))
suite.addTest(TestCase('testLoad'))
suite.addTest(TestCase('testNames'))
suite.addTest(TestCase('testInputOrder'))
suite.addTest(TestCase('testClassify'))
return suite
if __name__ == '__main__':
suite = TestSuite()
unittest.TextTestRunner().run(suite)