import unittest import os import logging from cp2kparser.implementation.autoparser import get_parser from cp2kparser.engines.cp2kinputenginedata.xmlpreparser import * import cProfile import pstats import cStringIO #=============================================================================== def getparser(folder): path = os.path.dirname(os.path.realpath(__file__)) path = os.path.join(path, folder) dump = cStringIO.StringIO() parser = get_parser(path, test_mode=True, stream=dump) return parser #=============================================================================== class TestFunctionals(unittest.TestCase): def getxc(self, folder, result): path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "functionals", folder) parser = getparser(path) xc = parser.parse_quantity("XC_functional") self.assertEqual(xc, result) def test_pade(self): self.getxc("pade", "LDA_XC_TETER93") def test_lda(self): self.getxc("lda", "LDA_XC_TETER93") def test_becke88(self): self.getxc("becke88", "GGA_X_B88") def test_blyp(self): self.getxc("blyp", "GGA_C_LYP_GGA_X_B88") #=============================================================================== class TestForces(unittest.TestCase): def test_forces_in_outputfile_n(self): parser = getparser("forces/outputfile/n") forces = parser.parse_quantity("particle_forces") n_conf = forces.shape[0] n_particles = forces.shape[1] n_dim = forces.shape[2] self.assertEqual(n_conf, 201) self.assertEqual(n_particles, 2) self.assertEqual(n_dim, 3) def test_forces_in_outputfile_1(self): parser = getparser("forces/outputfile/1") forces = parser.parse_quantity("particle_forces") n_conf = forces.shape[0] n_particles = forces.shape[1] n_dim = forces.shape[2] self.assertEqual(n_conf, 1) self.assertEqual(n_particles, 2) self.assertEqual(n_dim, 3) def test_forces_in_outputfile_0(self): parser = getparser("forces/outputfile/0") forces = parser.parse_quantity("particle_forces") self.assertEqual(forces, None) def test_forces_in_singlexyzfile_n(self): parser = getparser("forces/singlexyzfile/n") forces = parser.parse_quantity("particle_forces") n_conf = forces.shape[0] n_particles = forces.shape[1] n_dim = forces.shape[2] self.assertEqual(n_conf, 201) self.assertEqual(n_particles, 2) self.assertEqual(n_dim, 3) def test_forces_in_singlexyzfile_1(self): parser = getparser("forces/singlexyzfile/1") forces = parser.parse_quantity("particle_forces") n_conf = forces.shape[0] n_particles = forces.shape[1] n_dim = forces.shape[2] self.assertEqual(n_conf, 1) self.assertEqual(n_particles, 2) self.assertEqual(n_dim, 3) def test_forces_in_singlexyzfile_0(self): parser = getparser("forces/singlexyzfile/0") forces = parser.parse_quantity("particle_forces") self.assertEqual(forces, None) #=============================================================================== class TestParticleNumber(unittest.TestCase): def test_input_n(self): parser = getparser("particle_number/inputfile/n") n = parser.parse_quantity("particle_number") self.assertEqual(n, 2) def test_input_1(self): parser = getparser("particle_number/inputfile/1") n = parser.parse_quantity("particle_number") self.assertEqual(n, 1) def test_input_extra_lines(self): parser = getparser("particle_number/inputfile/extra_lines") n = parser.parse_quantity("particle_number") self.assertEqual(n, 2) def test_input_multiplication(self): parser = getparser("particle_number/inputfile/multiplication") n = parser.parse_quantity("particle_number") self.assertEqual(n, 12) def test_xyz_n(self): parser = getparser("particle_number/xyz/n") n = parser.parse_quantity("particle_number") self.assertEqual(n, 2) def test_xyz_multiplication(self): parser = getparser("particle_number/xyz/multiplication") n = parser.parse_quantity("particle_number") self.assertEqual(n, 12) def test_cif_n(self): parser = getparser("particle_number/cif/n") n = parser.parse_quantity("particle_number") self.assertEqual(n, 2) def test_pdb_n(self): parser = getparser("particle_number/pdb/n") n = parser.parse_quantity("particle_number") self.assertEqual(n, 2) #=============================================================================== class TestTrajectory(unittest.TestCase): def test_filenames_bare(self): parser = getparser("trajectory/filenames/bare") pos = parser.parse_quantity("particle_position") n_conf = pos.shape[0] n_particles = pos.shape[1] n_dim = pos.shape[2] self.assertEqual(n_conf, 11) self.assertEqual(n_particles, 2) self.assertEqual(n_dim, 3) def test_filenames_dotslash(self): parser = getparser("trajectory/filenames/dotslash") pos = parser.parse_quantity("particle_position") n_conf = pos.shape[0] n_particles = pos.shape[1] n_dim = pos.shape[2] self.assertEqual(n_conf, 11) self.assertEqual(n_particles, 2) self.assertEqual(n_dim, 3) def test_filenames_equals(self): parser = getparser("trajectory/filenames/equals") pos = parser.parse_quantity("particle_position") n_conf = pos.shape[0] n_particles = pos.shape[1] n_dim = pos.shape[2] self.assertEqual(n_conf, 11) self.assertEqual(n_particles, 2) self.assertEqual(n_dim, 3) def test_pdb(self): parser = getparser("trajectory/pdb") pos = parser.parse_quantity("particle_position") n_conf = pos.shape[0] n_particles = pos.shape[1] n_dim = pos.shape[2] self.assertEqual(n_conf, 11) self.assertEqual(n_particles, 2) self.assertEqual(n_dim, 3) def test_xyz(self): parser = getparser("trajectory/xyz") pos = parser.parse_quantity("particle_position") n_conf = pos.shape[0] n_particles = pos.shape[1] n_dim = pos.shape[2] self.assertEqual(n_conf, 11) self.assertEqual(n_particles, 2) self.assertEqual(n_dim, 3) def test_xmol(self): parser = getparser("trajectory/xmol") pos = parser.parse_quantity("particle_position") n_conf = pos.shape[0] n_particles = pos.shape[1] n_dim = pos.shape[2] self.assertEqual(n_conf, 11) self.assertEqual(n_particles, 2) self.assertEqual(n_dim, 3) def test_atomic(self): parser = getparser("trajectory/atomic") pos = parser.parse_quantity("particle_position") n_conf = pos.shape[0] n_particles = pos.shape[1] n_dim = pos.shape[2] self.assertEqual(n_conf, 11) self.assertEqual(n_particles, 2) self.assertEqual(n_dim, 3) if __name__ == '__main__': logger = logging.getLogger("cp2kparser") logger.setLevel(logging.ERROR) logger = logging.getLogger("nomadparser") logger.setLevel(logging.ERROR) # unittest.main() suites = [] suites.append(unittest.TestLoader().loadTestsFromTestCase(TestForces)) suites.append(unittest.TestLoader().loadTestsFromTestCase(TestParticleNumber)) suites.append(unittest.TestLoader().loadTestsFromTestCase(TestFunctionals)) suites.append(unittest.TestLoader().loadTestsFromTestCase(TestTrajectory)) alltests = unittest.TestSuite(suites) unittest.TextTestRunner(verbosity=0).run(alltests) # def runtests(): # unittest.main() # unittest.TextTestRunner().run(suite) # unittest.TextTestRunner(verbosity=0).run(suite) # s = cProfile.run("runtests()", sort="cumtime", filename="profile_file")