source: src/Fragmentation/Homology/unittests/HomologyContainerUnitTest.cpp@ 16c6f7

Action_Thermostats Add_AtomRandomPerturbation Add_RotateAroundBondAction Add_SelectAtomByNameAction Adding_Graph_to_ChangeBondActions Adding_MD_integration_tests Adding_StructOpt_integration_tests Automaking_mpqc_open AutomationFragmentation_failures Candidate_v1.6.0 Candidate_v1.6.1 ChangeBugEmailaddress ChangingTestPorts ChemicalSpaceEvaluator Combining_Subpackages Debian_Package_split Debian_package_split_molecuildergui_only Disabling_MemDebug Docu_Python_wait EmpiricalPotential_contain_HomologyGraph EmpiricalPotential_contain_HomologyGraph_documentation Enable_parallel_make_install Enhance_userguide Enhanced_StructuralOptimization Enhanced_StructuralOptimization_continued Example_ManyWaysToTranslateAtom Exclude_Hydrogens_annealWithBondGraph FitPartialCharges_GlobalError Fix_ChronosMutex Fix_StatusMsg Fix_StepWorldTime_single_argument Fix_Verbose_Codepatterns ForceAnnealing_goodresults ForceAnnealing_oldresults ForceAnnealing_tocheck ForceAnnealing_with_BondGraph ForceAnnealing_with_BondGraph_continued ForceAnnealing_with_BondGraph_continued_betteresults ForceAnnealing_with_BondGraph_contraction-expansion GeometryObjects Gui_displays_atomic_force_velocity IndependentFragmentGrids_IntegrationTest JobMarket_RobustOnKillsSegFaults JobMarket_StableWorkerPool JobMarket_unresolvable_hostname_fix ODR_violation_mpqc_open PartialCharges_OrthogonalSummation PythonUI_with_named_parameters QtGui_reactivate_TimeChanged_changes Recreated_GuiChecks RotateToPrincipalAxisSystem_UndoRedo StoppableMakroAction Subpackage_CodePatterns Subpackage_JobMarket Subpackage_LinearAlgebra Subpackage_levmar Subpackage_mpqc_open Subpackage_vmg ThirdParty_MPQC_rebuilt_buildsystem TremoloParser_IncreasedPrecision TremoloParser_MultipleTimesteps Ubuntu_1604_changes stable
Last change on this file since 16c6f7 was 6829d2, checked in by Frederik Heber <heber@…>, 8 years ago

MPQCData additionally stores the atomic number per nuclei.

  • in case of DoSampleValenceOnly the charge does not represent the atomic number and moreover it is no longer unique. However, we need this unique association for fitting potentials to the fragment results.
  • TESTFIX: set all tests to XFAIL that parse either fragmentation results or homologies.
  • TESTFIX: needed to adapt HomologyContainerUnitTest which uses FragmentStub.
  • TESTFIX: needed to adapt FragmentUnitTest.
  • Property mode set to 100644
File size: 5.3 KB
Line 
1/*
2 * Project: MoleCuilder
3 * Description: creates and alters molecular systems
4 * Copyright (C) 2012 University of Bonn. All rights reserved.
5 *
6 *
7 * This file is part of MoleCuilder.
8 *
9 * MoleCuilder is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation, either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * MoleCuilder is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with MoleCuilder. If not, see <http://www.gnu.org/licenses/>.
21 */
22
23/*
24 * HomologyContainerUnitTest.cpp
25 *
26 * Created on: Sep 22, 2012
27 * Author: heber
28 */
29
30// include config.h
31#ifdef HAVE_CONFIG_H
32#include <config.h>
33#endif
34
35using namespace std;
36
37#include <cppunit/CompilerOutputter.h>
38#include <cppunit/extensions/TestFactoryRegistry.h>
39#include <cppunit/ui/text/TestRunner.h>
40
41// include headers that implement a archive in simple text format
42#include <boost/archive/text_oarchive.hpp>
43#include <boost/archive/text_iarchive.hpp>
44
45#include <boost/assign.hpp>
46
47#include "Fragmentation/Homology/HomologyContainer.hpp"
48#include "Fragmentation/Graph.hpp"
49
50#include "HomologyContainerUnitTest.hpp"
51
52#include <sstream>
53
54using namespace boost::assign;
55
56#ifdef HAVE_TESTRUNNER
57#include "UnitTestMain.hpp"
58#endif /*HAVE_TESTRUNNER*/
59
60/********************************************** Test classes **************************************/
61
62// Registers the fixture into the 'registry'
63CPPUNIT_TEST_SUITE_REGISTRATION( HomologyContainerTest );
64
65
66void HomologyContainerTest::setUp()
67{
68 // add nodes
69 nodes +=
70 std::make_pair(FragmentNode(1,1),1),
71 std::make_pair(FragmentNode(1,4),1),
72 std::make_pair(FragmentNode(2,2),1),
73 std::make_pair(FragmentNode(2,4),1);
74 othernodes +=
75 std::make_pair(FragmentNode(1,1),1),
76 std::make_pair(FragmentNode(1,4),1);
77
78 // add edges
79 edges +=
80 std::make_pair(FragmentEdge(1,1),1),
81 std::make_pair(FragmentEdge(1,4),1),
82 std::make_pair(FragmentEdge(2,2),1),
83 std::make_pair(FragmentEdge(2,4),1);
84 otheredges +=
85 std::make_pair(FragmentEdge(1,4),1),
86 std::make_pair(FragmentEdge(2,2),1);
87
88 // construct graphs
89 HomologyGraph graph(nodes, edges);
90 HomologyGraph othergraph(othernodes, otheredges);
91
92 // place in container
93 Fragment::position_t pos(3, 0.);
94 Fragment::positions_t positions(1, pos);
95 Fragment::atomicnumbers_t atomicnumbers(1,1.);
96 Fragment::charges_t charges(1,1.);
97 Fragment dummy(positions, atomicnumbers, charges);
98 charges[0] = 6.;
99 positions[0][0] = 1.;
100 Fragment dummy1(positions, atomicnumbers, charges);
101 positions[0][0] = 2.;
102 Fragment dummy2(positions, atomicnumbers, charges);
103 HomologyContainer::value_t value1;
104 value1.fragment = dummy1;
105 value1.energy = 1.;
106 HomologyContainer::value_t value2;
107 value2.fragment = dummy2;
108 value2.energy = 1.5;
109 HomologyContainer::value_t value3;
110 value3.fragment = dummy;
111 value3.energy = 2.;
112 container +=
113 std::make_pair( graph, value1 ),
114 std::make_pair( graph, value2 ),
115 std::make_pair( othergraph, value3 );
116 // create HomologyContainer
117 Keys = new HomologyContainer(container);
118}
119
120
121void HomologyContainerTest::tearDown()
122{
123 delete Keys;
124}
125
126/** UnitTest for whether homologies are correctly recognized
127 */
128void HomologyContainerTest::InsertionTest()
129{
130 // construct graphs
131 HomologyGraph graph(nodes, edges);
132
133 HomologyContainer::container_t newcontainer;
134 Fragment::position_t pos(3, 0.);
135 Fragment::positions_t positions(1, pos);
136 Fragment::atomicnumbers_t atomicnumbers(1,1.);
137 Fragment::charges_t charges(1,1.);
138 Fragment dummy(positions, atomicnumbers, charges);
139 HomologyContainer::value_t value;
140 value.fragment = dummy;
141 value.energy = 1.;
142 newcontainer +=
143 std::make_pair( graph, value );
144
145 Keys->insert(newcontainer);
146
147 CPPUNIT_ASSERT_EQUAL( (size_t)4, Keys->container.size() );
148}
149
150/** UnitTest for operator==() works correctly.
151 */
152void HomologyContainerTest::EqualityTest()
153{
154 // compare same container
155 CPPUNIT_ASSERT( *Keys == *Keys );
156
157 // construct other container
158 HomologyGraph graph(nodes, edges);
159 HomologyContainer::container_t newcontainer;
160 Fragment::position_t pos(3, 0.);
161 Fragment::positions_t positions(1, pos);
162 Fragment::atomicnumbers_t atomicnumbers(1,1.);
163 Fragment::charges_t charges(1,1.);
164 Fragment dummy(positions, atomicnumbers, charges);
165 HomologyContainer::value_t value;
166 value.fragment = dummy;
167 value.energy = 1.;
168 newcontainer +=
169 std::make_pair( graph, value );
170
171 HomologyContainer other(newcontainer);
172
173 CPPUNIT_ASSERT( *Keys != other );
174}
175
176/** UnitTest for serialization
177 */
178void HomologyContainerTest::serializeTest()
179{
180 // serialize
181 std::stringstream outputstream;
182 boost::archive::text_oarchive oa(outputstream);
183 oa << Keys;
184
185 // deserialize
186 HomologyContainer *samekeys = NULL;
187 std::stringstream returnstream(outputstream.str());
188 boost::archive::text_iarchive ia(returnstream);
189 ia >> samekeys;
190
191 CPPUNIT_ASSERT( samekeys != NULL );
192 //std::cout << *Keys << std::endl;
193 CPPUNIT_ASSERT_EQUAL( *Keys, *samekeys );
194
195 delete samekeys;
196}
Note: See TracBrowser for help on using the repository browser.