Changeset 8cbb97 for src/unittests
- Timestamp:
- Apr 29, 2010, 1:55:21 PM (16 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, Candidate_v1.7.0, Candidate_v1.7.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, 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_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- d79639
- Parents:
- 632bc3 (diff), 753f02 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- src/unittests
- Files:
-
- 13 edited
-
ActOnAllUnitTest.cpp (modified) (4 diffs)
-
ActOnAllUnitTest.hpp (modified) (1 diff)
-
AnalysisCorrelationToPointUnitTest.cpp (modified) (1 diff)
-
AnalysisCorrelationToSurfaceUnitTest.cpp (modified) (5 diffs)
-
AnalysisCorrelationToSurfaceUnitTest.hpp (modified) (1 diff)
-
AnalysisPairCorrelationUnitTest.cpp (modified) (1 diff)
-
CountBondsUnitTest.cpp (modified) (3 diffs)
-
LinkedCellUnitTest.cpp (modified) (13 diffs)
-
analysisbondsunittest.cpp (modified) (1 diff)
-
bondgraphunittest.cpp (modified) (1 diff)
-
listofbondsunittest.cpp (modified) (1 diff)
-
tesselation_boundarytriangleunittest.cpp (modified) (2 diffs)
-
vectorunittest.cpp (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/unittests/ActOnAllUnitTest.cpp
r632bc3 r8cbb97 56 56 57 57 // adding, subtracting 58 VL.ActOnAll( &Vector::AddVector, &test );58 VL.ActOnAll( &Vector::AddVector, test ); 59 59 CPPUNIT_ASSERT_EQUAL( VL == Ref , false ); 60 VL.ActOnAll( &Vector::SubtractVector, &test );60 VL.ActOnAll( &Vector::SubtractVector, test ); 61 61 CPPUNIT_ASSERT_EQUAL( VL == Ref , true ); 62 62 }; … … 70 70 71 71 // scaling by value 72 VL.ActOnAll( (void (Vector::*)(const double)) &Vector::Scale, 2.);72 VL.ActOnAll( (void (Vector::*)(const double)) &Vector::Scale, factor ); 73 73 CPPUNIT_ASSERT_EQUAL( VL == Ref , false ); 74 74 75 VL.ActOnAll( (void (Vector::*)(const double)) &Vector::Scale, 0.5 ); 76 CPPUNIT_ASSERT_EQUAL( VL == Ref , true ); 77 78 // scaling by ref 79 VL.ActOnAll( (void (Vector::*)(const double * const)) &Vector::Scale, (const double * const)&factor ); 80 CPPUNIT_ASSERT_EQUAL( VL == Ref , false ); 81 82 VL.ActOnAll( (void (Vector::*)(const double * const)) &Vector::Scale, (const double * const)&inverse ); 75 VL.ActOnAll( (void (Vector::*)(const double)) &Vector::Scale, inverse ); 83 76 CPPUNIT_ASSERT_EQUAL( VL == Ref , true ); 84 77 … … 90 83 inverses[i] = 1./factors[i]; 91 84 } 92 VL.ActOnAll ( (void (Vector::*)(const double ** const)) &Vector::Scale, (const double ** const)&factors );85 VL.ActOnAll<Vector,void,const double*>(&Vector::ScaleAll, factors ); 93 86 CPPUNIT_ASSERT_EQUAL( VL == Ref , false ); 94 87 95 VL.ActOnAll ( (void (Vector::*)(const double ** const)) &Vector::Scale, (const double ** const)&inverses );88 VL.ActOnAll<Vector,void,const double*>(&Vector::ScaleAll, inverses ); 96 89 CPPUNIT_ASSERT_EQUAL( VL == Ref , true ); 97 90 Free(factors); 98 91 Free(inverses); 99 92 }; 93 94 #if 0 95 96 // Unitttest deactivated for now... 97 // Reasons: 98 // Vector::MakeNormalVector has been removed and is now part of Plane class 99 // VectorList::ActOnAll is in the test directory and seems to be used only for unittests 100 // MakeNormal never depended on the input Vector except in the case of linear dependence (i.e. failure) 101 // 102 // TODO: Rethink what exactely is being tested at this point and introduce a new unittest for the 103 // tested behaviour. Most likely this should result in a thourough unittest of the plane class 100 104 101 105 /** UnitTest for VectorList::ActOnAll() and Vector::MakeNormalVector() … … 113 117 // check that x and y components are zero 114 118 for (ListOfVectors::iterator Runner = VL.Vectors.begin(); Runner != VL.Vectors.end(); Runner++) { 115 CPPUNIT_ASSERT_EQUAL( (*Runner)-> x[0], 0. );116 CPPUNIT_ASSERT_EQUAL( (*Runner)-> x[1], 0. );119 CPPUNIT_ASSERT_EQUAL( (*Runner)->at(0) , 0. ); 120 CPPUNIT_ASSERT_EQUAL( (*Runner)->at(1) , 0. ); 117 121 } 118 122 }; 123 124 #endif -
src/unittests/ActOnAllUnitTest.hpp
r632bc3 r8cbb97 20 20 CPPUNIT_TEST ( AddSubtractTest ); 21 21 CPPUNIT_TEST ( ScaleTest ); 22 #if 0 23 // test deactivated. See .cpp for reasons and workarounds 22 24 CPPUNIT_TEST ( NormalizeTest ); 25 #endif 23 26 CPPUNIT_TEST_SUITE_END(); 24 27 -
src/unittests/AnalysisCorrelationToPointUnitTest.cpp
r632bc3 r8cbb97 64 64 Walker = World::getInstance().createAtom(); 65 65 Walker->type = hydrogen; 66 Walker->node->Init(1., 0., 1. );66 *Walker->node = Vector(1., 0., 1. ); 67 67 TestMolecule->AddAtom(Walker); 68 68 Walker = World::getInstance().createAtom(); 69 69 Walker->type = hydrogen; 70 Walker->node->Init(0., 1., 1. );70 *Walker->node = Vector(0., 1., 1. ); 71 71 TestMolecule->AddAtom(Walker); 72 72 Walker = World::getInstance().createAtom(); 73 73 Walker->type = hydrogen; 74 Walker->node->Init(1., 1., 0. );74 *Walker->node = Vector(1., 1., 0. ); 75 75 TestMolecule->AddAtom(Walker); 76 76 Walker = World::getInstance().createAtom(); 77 77 Walker->type = hydrogen; 78 Walker->node->Init(0., 0., 0. );78 *Walker->node = Vector(0., 0., 0. ); 79 79 TestMolecule->AddAtom(Walker); 80 80 -
src/unittests/AnalysisCorrelationToSurfaceUnitTest.cpp
r632bc3 r8cbb97 40 40 void AnalysisCorrelationToSurfaceUnitTest::setUp() 41 41 { 42 ASSERT_DO(Assert::Throw);42 //ASSERT_DO(Assert::Throw); 43 43 44 44 atom *Walker = NULL; … … 46 46 // init private all pointers to zero 47 47 TestList = NULL; 48 Test Molecule = NULL;48 TestSurfaceMolecule = NULL; 49 49 hydrogen = NULL; 50 50 tafel = NULL; … … 73 73 Walker = World::getInstance().createAtom(); 74 74 Walker->type = hydrogen; 75 Walker->node->Init(1., 0., 1. ); 76 TestSurfaceMolecule->AddAtom(Walker); 77 Walker = World::getInstance().createAtom(); 78 Walker->type = hydrogen; 79 Walker->node->Init(0., 1., 1. ); 80 TestSurfaceMolecule->AddAtom(Walker); 81 Walker = World::getInstance().createAtom(); 82 Walker->type = hydrogen; 83 Walker->node->Init(1., 1., 0. ); 84 TestSurfaceMolecule->AddAtom(Walker); 85 Walker = World::getInstance().createAtom(); 86 Walker->type = hydrogen; 87 Walker->node->Init(0., 0., 0. ); 75 *Walker->node = Vector(1., 0., 1. ); 76 77 TestSurfaceMolecule->AddAtom(Walker); 78 Walker = World::getInstance().createAtom(); 79 Walker->type = hydrogen; 80 *Walker->node = Vector(0., 1., 1. ); 81 TestSurfaceMolecule->AddAtom(Walker); 82 Walker = World::getInstance().createAtom(); 83 Walker->type = hydrogen; 84 *Walker->node = Vector(1., 1., 0. ); 85 TestSurfaceMolecule->AddAtom(Walker); 86 Walker = World::getInstance().createAtom(); 87 Walker->type = hydrogen; 88 *Walker->node = Vector(0., 0., 0. ); 88 89 TestSurfaceMolecule->AddAtom(Walker); 89 90 … … 101 102 102 103 // add outer atoms 103 Test Molecule = World::getInstance().createMolecule();104 Walker = World::getInstance().createAtom(); 105 Walker->type = carbon; 106 Walker->node->Init(4., 0., 4. );107 Test Molecule->AddAtom(Walker);108 Walker = World::getInstance().createAtom(); 109 Walker->type = carbon; 110 Walker->node->Init(0., 4., 4. );111 Test Molecule->AddAtom(Walker);112 Walker = World::getInstance().createAtom(); 113 Walker->type = carbon; 114 Walker->node->Init(4., 4., 0. );115 Test Molecule->AddAtom(Walker);104 TestSurfaceMolecule = World::getInstance().createMolecule(); 105 Walker = World::getInstance().createAtom(); 106 Walker->type = carbon; 107 *Walker->node = Vector(4., 0., 4. ); 108 TestSurfaceMolecule->AddAtom(Walker); 109 Walker = World::getInstance().createAtom(); 110 Walker->type = carbon; 111 *Walker->node = Vector(0., 4., 4. ); 112 TestSurfaceMolecule->AddAtom(Walker); 113 Walker = World::getInstance().createAtom(); 114 Walker->type = carbon; 115 *Walker->node = Vector(4., 4., 0. ); 116 TestSurfaceMolecule->AddAtom(Walker); 116 117 // add inner atoms 117 118 Walker = World::getInstance().createAtom(); 118 119 Walker->type = carbon; 119 Walker->node->Init(0.5, 0.5, 0.5 );120 Test Molecule->AddAtom(Walker);121 Test Molecule->ActiveFlag = true;122 TestList->insert(Test Molecule);120 *Walker->node = Vector(0.5, 0.5, 0.5 ); 121 TestSurfaceMolecule->AddAtom(Walker); 122 TestSurfaceMolecule->ActiveFlag = true; 123 TestList->insert(TestSurfaceMolecule); 123 124 124 125 // init maps … … 150 151 { 151 152 CPPUNIT_ASSERT_EQUAL( 4, TestSurfaceMolecule->AtomCount ); 152 CPPUNIT_ASSERT_EQUAL( 4, TestMolecule->AtomCount );153 153 CPPUNIT_ASSERT_EQUAL( (size_t)2, TestList->ListOfMolecules.size() ); 154 154 CPPUNIT_ASSERT_EQUAL( (size_t)4, Surface->PointsOnBoundary.size() ); -
src/unittests/AnalysisCorrelationToSurfaceUnitTest.hpp
r632bc3 r8cbb97 44 44 45 45 MoleculeListClass *TestList; 46 molecule *TestMolecule;47 46 molecule *TestSurfaceMolecule; 48 47 element *hydrogen; -
src/unittests/AnalysisPairCorrelationUnitTest.cpp
r632bc3 r8cbb97 63 63 Walker = World::getInstance().createAtom(); 64 64 Walker->type = hydrogen; 65 Walker->node->Init(1., 0., 1. );65 *Walker->node = Vector(1., 0., 1. ); 66 66 TestMolecule->AddAtom(Walker); 67 67 Walker = World::getInstance().createAtom(); 68 68 Walker->type = hydrogen; 69 Walker->node->Init(0., 1., 1. );69 *Walker->node = Vector(0., 1., 1. ); 70 70 TestMolecule->AddAtom(Walker); 71 71 Walker = World::getInstance().createAtom(); 72 72 Walker->type = hydrogen; 73 Walker->node->Init(1., 1., 0. );73 *Walker->node = Vector(1., 1., 0. ); 74 74 TestMolecule->AddAtom(Walker); 75 75 Walker = World::getInstance().createAtom(); 76 76 Walker->type = hydrogen; 77 Walker->node->Init(0., 0., 0. );77 *Walker->node = Vector(0., 0., 0. ); 78 78 TestMolecule->AddAtom(Walker); 79 79 -
src/unittests/CountBondsUnitTest.cpp
r632bc3 r8cbb97 72 72 Walker = World::getInstance().createAtom(); 73 73 Walker->type = hydrogen; 74 Walker->node->Init(-0.2418, 0.9350, 0. );74 *Walker->node = Vector(-0.2418, 0.9350, 0. ); 75 75 TestMolecule1->AddAtom(Walker); 76 76 Walker = World::getInstance().createAtom(); 77 77 Walker->type = hydrogen; 78 Walker->node->Init(0.9658, 0., 0. );78 *Walker->node = Vector(0.9658, 0., 0. ); 79 79 TestMolecule1->AddAtom(Walker); 80 80 Walker = World::getInstance().createAtom(); 81 81 Walker->type = oxygen; 82 Walker->node->Init(0., 0., 0. );82 *Walker->node = Vector(0., 0., 0. ); 83 83 TestMolecule1->AddAtom(Walker); 84 84 … … 86 86 Walker = World::getInstance().createAtom(); 87 87 Walker->type = hydrogen; 88 Walker->node->Init(-0.2418, 0.9350, 0. );88 *Walker->node = Vector(-0.2418, 0.9350, 0. ); 89 89 TestMolecule2->AddAtom(Walker); 90 90 Walker = World::getInstance().createAtom(); 91 91 Walker->type = hydrogen; 92 Walker->node->Init(0.9658, 0., 0. );92 *Walker->node = Vector(0.9658, 0., 0. ); 93 93 TestMolecule2->AddAtom(Walker); 94 94 Walker = World::getInstance().createAtom(); 95 95 Walker->type = oxygen; 96 Walker->node->Init(0., 0., 0. );96 *Walker->node = Vector(0., 0., 0. ); 97 97 TestMolecule2->AddAtom(Walker); 98 98 … … 165 165 166 166 cout << "Case 1: offset of (3,0,0), hence angles are (104.5, 0, 75.5, 180) < 30." << endl; 167 Translator .Init(3,0,0);167 Translator = Vector(3,0,0); 168 168 TestMolecule2->Translate(&Translator); 169 169 CPPUNIT_ASSERT_EQUAL( 1 , CountHydrogenBridgeBonds(molecules, NULL) ); 170 170 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, oxygen) ); 171 171 //OutputTestMolecule(TestMolecule2, "testmolecule2-1.xyz"); 172 Translator .Init(-3,0,0);172 Translator = Vector(-3,0,0); 173 173 TestMolecule2->Translate(&Translator); 174 174 175 175 cout << "Case 2: offset of (0,3,0), hence angle are (14.5, 165.5, 90) < 30 (only three, because other 90 is missing due to first H01 only fulfilling H-bond criteria)." << endl; 176 Translator .Init(0,3,0);176 Translator = Vector(0,3,0); 177 177 TestMolecule2->Translate(&Translator); 178 178 CPPUNIT_ASSERT_EQUAL( 1 , CountHydrogenBridgeBonds(molecules, NULL) ); 179 179 //OutputTestMolecule(TestMolecule2, "testmolecule2-2.xyz"); 180 Translator .Init(0,-3,0);180 Translator = Vector(0,-3,0); 181 181 TestMolecule2->Translate(&Translator); 182 182 183 183 cout << "Case 3: offset of (0,-3,0) and mirror, hence angle are (165.5, 90, 165.5, 90) > 30." << endl; 184 Translator .Init(0,-3,0);184 Translator = Vector(0,-3,0); 185 185 TestMolecule2->Scale((const double ** const)&mirror); 186 186 TestMolecule2->Translate(&Translator); 187 187 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL) ); 188 188 //OutputTestMolecule(TestMolecule2, "testmolecule2-3.xyz"); 189 Translator .Init(0,3,0);189 Translator = Vector(0,3,0); 190 190 TestMolecule2->Translate(&Translator); 191 191 TestMolecule2->Scale((const double ** const)&mirror); 192 192 193 193 cout << "Case 4: offset of (2,1,0), hence angle are (78, 26.6, 102, 153.4) < 30." << endl; 194 Translator .Init(2,1,0);194 Translator = Vector(2,1,0); 195 195 TestMolecule2->Translate(&Translator); 196 196 CPPUNIT_ASSERT_EQUAL( 1 , CountHydrogenBridgeBonds(molecules, NULL) ); 197 197 //OutputTestMolecule(TestMolecule2, "testmolecule2-4.xyz"); 198 Translator .Init(-2,-1,0);198 Translator = Vector(-2,-1,0); 199 199 TestMolecule2->Translate(&Translator); 200 200 201 201 cout << "Case 5: offset of (0,0,3), hence angle are (90, 90, 90, 90) > 30." << endl; 202 Translator .Init(0,0,3);202 Translator = Vector(0,0,3); 203 203 TestMolecule2->Translate(&Translator); 204 204 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL) ); 205 205 //OutputTestMolecule(TestMolecule2, "testmolecule2-5.xyz"); 206 Translator .Init(0,0,-3);206 Translator = Vector(0,0,-3); 207 207 TestMolecule2->Translate(&Translator); 208 208 209 209 cout << "Case 6: offset of (-3,0,0) and mirror, hence angle are (75.5, 180, 104.5, 180) > 30." << endl; 210 Translator .Init(-3,0,0);210 Translator = Vector(-3,0,0); 211 211 TestMolecule2->Scale((const double ** const)&mirror); 212 212 TestMolecule2->Translate(&Translator); 213 213 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL) ); 214 214 //OutputTestMolecule(TestMolecule2, "testmolecule2-6.xyz"); 215 Translator .Init(3,0,0);215 Translator = Vector(3,0,0); 216 216 TestMolecule2->Translate(&Translator); 217 217 TestMolecule2->Scale((const double ** const)&mirror); 218 218 219 219 cout << "Case 7: offset of (3,0,0) and mirror, hence angles are (104.5, 0, 104.5, 0) < 30, but interfering hydrogens." << endl; 220 Translator .Init(3,0,0);220 Translator = Vector(3,0,0); 221 221 TestMolecule2->Scale((const double ** const)&mirror); 222 222 TestMolecule2->Translate(&Translator); 223 223 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL) ); 224 224 //OutputTestMolecule(TestMolecule2, "testmolecule2-7.xyz"); 225 Translator .Init(-3,0,0);225 Translator = Vector(-3,0,0); 226 226 TestMolecule2->Translate(&Translator); 227 227 TestMolecule2->Scale((const double ** const)&mirror); 228 228 229 229 cout << "Case 8: offset of (0,3,0), hence angle are (14.5, 90, 14.5, 90) < 30, but interfering hydrogens." << endl; 230 Translator .Init(0,3,0);230 Translator = Vector(0,3,0); 231 231 TestMolecule2->Scale((const double ** const)&mirror); 232 232 TestMolecule2->Translate(&Translator); 233 233 //OutputTestMolecule(TestMolecule2, "testmolecule2-8.xyz"); 234 234 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL) ); 235 Translator .Init(0,-3,0);235 Translator = Vector(0,-3,0); 236 236 TestMolecule2->Translate(&Translator); 237 237 TestMolecule2->Scale((const double ** const)&mirror); -
src/unittests/LinkedCellUnitTest.cpp
r632bc3 r8cbb97 61 61 Walker = World::getInstance().createAtom(); 62 62 Walker->type = hydrogen; 63 Walker->node->Init(x, y, z );63 *Walker->node = Vector(x, y, z ); 64 64 TestMolecule->AddAtom(Walker); 65 65 } … … 207 207 Walker->Name = Malloc<char>(6, "LinkedCellTest::SetIndexToNodeTest - Walker"); 208 208 strcpy(Walker->Name, "test"); 209 Walker->x .Init(1,1,1);209 Walker->x= Vector(1,1,1); 210 210 CPPUNIT_ASSERT_EQUAL( false, LC->SetIndexToNode(Walker) ); 211 211 World::getInstance().destroyAtom(Walker); … … 215 215 Walker->Name = Malloc<char>(6, "LinkedCellTest::SetIndexToNodeTest - Walker"); 216 216 strcpy(Walker->Name, "test"); 217 Walker->x .Init(0,-1,0);217 Walker->x = Vector(0,-1,0); 218 218 CPPUNIT_ASSERT_EQUAL( false, LC->SetIndexToNode(Walker) ); 219 219 World::getInstance().destroyAtom(Walker); … … 231 231 for (double y=0.5;y<3;y+=1.) 232 232 for (double z=0.5;z<3;z+=1.) { 233 tester .Init(x,y,z);233 tester = Vector(x,y,z); 234 234 CPPUNIT_ASSERT_EQUAL( true, LC->SetIndexToVector(&tester) ); 235 235 } … … 238 238 for (double y=1.;y<4;y+=1.) 239 239 for (double z=1.;z<4;z+=1.) { 240 tester .Init(x,y,z);240 tester= Vector(x,y,z); 241 241 cout << "Tester is at " << tester << "." << endl; 242 242 CPPUNIT_ASSERT_EQUAL( true, LC->SetIndexToVector(&tester) ); … … 246 246 for (double y=0.5-1e-10;y<5;y+=3.1) 247 247 for (double z=0.5-1e-10;z<5;z+=3.1) { 248 tester .Init(x,y,z);248 tester = Vector(x,y,z); 249 249 cout << "The following test is supposed to fail and produce an ERROR." << endl; 250 250 CPPUNIT_ASSERT_EQUAL( false, LC->SetIndexToVector(&tester) ); 251 251 } 252 252 // check nonsense vectors 253 tester .Init(-423598,3245978,29349);253 tester= Vector(-423598,3245978,29349); 254 254 cout << "The following test is supposed to fail and produce an ERROR." << endl; 255 255 CPPUNIT_ASSERT_EQUAL( false, LC->SetIndexToVector(&tester) ); … … 264 264 int lower[NDIM], upper[NDIM]; 265 265 266 tester .Init(0.5,0.5,0.5);266 tester= Vector(0.5,0.5,0.5); 267 267 LC->SetIndexToVector(&tester); 268 268 LC->GetNeighbourBounds(lower, upper); … … 284 284 285 285 // get all atoms 286 tester .Init(1.5,1.5,1.5);286 tester= Vector(1.5,1.5,1.5); 287 287 CPPUNIT_ASSERT_EQUAL ( true, LC->SetIndexToVector(&tester) ); 288 288 ListOfPoints = LC->GetallNeighbours(); … … 303 303 304 304 // get all atoms in one corner 305 tester .Init(0.5, 0.5, 0.5);305 tester= Vector(0.5, 0.5, 0.5); 306 306 CPPUNIT_ASSERT_EQUAL ( true, LC->SetIndexToVector(&tester) ); 307 307 ListOfPoints = LC->GetallNeighbours(); … … 311 311 while (Walker->next != TestMolecule->end) { 312 312 Walker = Walker->next; 313 if ((Walker->x .x[0] <2) && (Walker->x.x[1] <2) && (Walker->x.x[2] <2)) {313 if ((Walker->x[0] <2) && (Walker->x[1] <2) && (Walker->x[2] <2)) { 314 314 ListOfPoints->remove(Walker); 315 315 size--; … … 323 323 324 324 // get all atoms from one corner 325 tester .Init(0.5, 0.5, 0.5);325 tester = Vector(0.5, 0.5, 0.5); 326 326 CPPUNIT_ASSERT_EQUAL ( true, LC->SetIndexToVector(&tester) ); 327 327 ListOfPoints = LC->GetallNeighbours(3); … … 352 352 353 353 // get all points around central arom with radius 1. 354 tester .Init(1.5,1.5,1.5);354 tester= Vector(1.5,1.5,1.5); 355 355 CPPUNIT_ASSERT_EQUAL ( true, LC->SetIndexToVector(&tester) ); 356 356 ListOfPoints = LC->GetPointsInsideSphere(1., &tester); … … 360 360 while (Walker->next != TestMolecule->end) { 361 361 Walker = Walker->next; 362 if ((Walker->x.DistanceSquared( &tester) - 1.) < MYEPSILON ) {362 if ((Walker->x.DistanceSquared(tester) - 1.) < MYEPSILON ) { 363 363 ListOfPoints->remove(Walker); 364 364 size--; -
src/unittests/analysisbondsunittest.cpp
r632bc3 r8cbb97 69 69 Walker = World::getInstance().createAtom(); 70 70 Walker->type = hydrogen; 71 Walker->node->Init(1.5, 0., 1.5 );71 *Walker->node = Vector(1.5, 0., 1.5 ); 72 72 TestMolecule->AddAtom(Walker); 73 73 Walker = World::getInstance().createAtom(); 74 74 Walker->type = hydrogen; 75 Walker->node->Init(0., 1.5, 1.5 );75 *Walker->node = Vector(0., 1.5, 1.5 ); 76 76 TestMolecule->AddAtom(Walker); 77 77 Walker = World::getInstance().createAtom(); 78 78 Walker->type = hydrogen; 79 Walker->node->Init(1.5, 1.5, 0. );79 *Walker->node = Vector(1.5, 1.5, 0. ); 80 80 TestMolecule->AddAtom(Walker); 81 81 Walker = World::getInstance().createAtom(); 82 82 Walker->type = hydrogen; 83 Walker->node->Init(0., 0., 0. );83 *Walker->node = Vector(0., 0., 0. ); 84 84 TestMolecule->AddAtom(Walker); 85 85 Walker = World::getInstance().createAtom(); 86 86 Walker->type = carbon; 87 Walker->node->Init(0.5, 0.5, 0.5 );87 *Walker->node = Vector(0.5, 0.5, 0.5 ); 88 88 TestMolecule->AddAtom(Walker); 89 89 -
src/unittests/bondgraphunittest.cpp
r632bc3 r8cbb97 70 70 Walker = World::getInstance().createAtom(); 71 71 Walker->type = carbon; 72 Walker->node->Init(1., 0., 1. );72 *Walker->node = Vector(1., 0., 1. ); 73 73 TestMolecule->AddAtom(Walker); 74 74 75 Walker = World::getInstance().createAtom(); 75 76 Walker->type = carbon; 76 Walker->node->Init(0., 1., 1. );77 *Walker->node = Vector(0., 1., 1. ); 77 78 TestMolecule->AddAtom(Walker); 79 78 80 Walker = World::getInstance().createAtom(); 79 81 Walker->type = carbon; 80 Walker->node->Init(1., 1., 0. );82 *Walker->node = Vector(1., 1., 0. ); 81 83 TestMolecule->AddAtom(Walker); 84 82 85 Walker = World::getInstance().createAtom(); 83 86 Walker->type = carbon; 84 Walker->node->Init(0., 0., 0. );87 *Walker->node = Vector(0., 0., 0. ); 85 88 TestMolecule->AddAtom(Walker); 86 89 -
src/unittests/listofbondsunittest.cpp
r632bc3 r8cbb97 58 58 Walker = World::getInstance().createAtom(); 59 59 Walker->type = hydrogen; 60 Walker->node->Init(1., 0., 1. );61 TestMolecule->AddAtom(Walker); 62 Walker = World::getInstance().createAtom(); 63 Walker->type = hydrogen; 64 Walker->node->Init(0., 1., 1. );65 TestMolecule->AddAtom(Walker); 66 Walker = World::getInstance().createAtom(); 67 Walker->type = hydrogen; 68 Walker->node->Init(1., 1., 0. );69 TestMolecule->AddAtom(Walker); 70 Walker = World::getInstance().createAtom(); 71 Walker->type = hydrogen; 72 Walker->node->Init(0., 0., 0. );60 *Walker->node = Vector(1., 0., 1. ); 61 TestMolecule->AddAtom(Walker); 62 Walker = World::getInstance().createAtom(); 63 Walker->type = hydrogen; 64 *Walker->node = Vector(0., 1., 1. ); 65 TestMolecule->AddAtom(Walker); 66 Walker = World::getInstance().createAtom(); 67 Walker->type = hydrogen; 68 *Walker->node = Vector(1., 1., 0. ); 69 TestMolecule->AddAtom(Walker); 70 Walker = World::getInstance().createAtom(); 71 Walker->type = hydrogen; 72 *Walker->node = Vector(0., 0., 0. ); 73 73 TestMolecule->AddAtom(Walker); 74 74 -
src/unittests/tesselation_boundarytriangleunittest.cpp
r632bc3 r8cbb97 86 86 87 87 // simple test on y line 88 Point .Init(-1.,0.5,0.);89 CPPUNIT_ASSERT_EQUAL( 1., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 90 Point .Init(0.,0.5,0.);91 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 92 Point .Init(-4.,0.5,0.);88 Point = Vector(-1.,0.5,0.); 89 CPPUNIT_ASSERT_EQUAL( 1., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 90 Point = Vector(0.,0.5,0.); 91 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 92 Point = Vector(-4.,0.5,0.); 93 93 CPPUNIT_ASSERT_EQUAL( 16., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 94 Point .Init(0.,0.5,0.);94 Point = Vector(0.,0.5,0.); 95 95 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 96 96 97 97 // simple test on x line 98 Point .Init(0.5,-1.,0.);99 CPPUNIT_ASSERT_EQUAL( 1., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 100 Point .Init(0.5,0.,0.);101 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 102 Point .Init(0.5,-6.,0.);98 Point = Vector(0.5,-1.,0.); 99 CPPUNIT_ASSERT_EQUAL( 1., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 100 Point = Vector(0.5,0.,0.); 101 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 102 Point = Vector(0.5,-6.,0.); 103 103 CPPUNIT_ASSERT_EQUAL( 36., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 104 Point .Init(0.5,0.,0.);104 Point = Vector(0.5,0.,0.); 105 105 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 106 106 107 107 // simple test on slanted line 108 Point .Init(1.,1.,0.);108 Point = Vector(1.,1.,0.); 109 109 CPPUNIT_ASSERT_EQUAL( 0.5, triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 110 Point .Init(0.5,0.5,0.);111 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 112 Point .Init(5.,5.,0.);110 Point = Vector(0.5,0.5,0.); 111 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 112 Point = Vector(5.,5.,0.); 113 113 CPPUNIT_ASSERT_EQUAL( 40.5, triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 114 Point .Init(0.5,0.5,0.);114 Point = Vector(0.5,0.5,0.); 115 115 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 116 116 117 117 // simple test on first node 118 Point .Init(-1.,-1.,0.);118 Point = Vector(-1.,-1.,0.); 119 119 CPPUNIT_ASSERT_EQUAL( 2., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 120 Point .Init(0.,0.,0.);120 Point = Vector(0.,0.,0.); 121 121 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 122 122 123 123 // simple test on second node 124 Point .Init(0.,2.,0.);125 CPPUNIT_ASSERT_EQUAL( 1., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 126 Point .Init(0.,1.,0.);124 Point = Vector(0.,2.,0.); 125 CPPUNIT_ASSERT_EQUAL( 1., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 126 Point = Vector(0.,1.,0.); 127 127 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 128 128 129 129 // simple test on third node 130 Point .Init(2.,0.,0.);131 CPPUNIT_ASSERT_EQUAL( 1., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 132 Point .Init(1.,0.,0.);130 Point = Vector(2.,0.,0.); 131 CPPUNIT_ASSERT_EQUAL( 1., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 132 Point = Vector(1.,0.,0.); 133 133 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 134 134 }; … … 142 142 143 143 // straight down/up 144 Point .Init(1./3.,1./3.,+5.);144 Point = Vector(1./3.,1./3.,+5.); 145 145 CPPUNIT_ASSERT_EQUAL( 25. , triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 146 Point .Init(1./3.,1./3.,0.);147 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 148 Point .Init(1./3.,1./3.,-5.);146 Point = Vector(1./3.,1./3.,0.); 147 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 148 Point = Vector(1./3.,1./3.,-5.); 149 149 CPPUNIT_ASSERT_EQUAL( 25. , triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 150 Point .Init(1./3.,1./3.,0.);150 Point = Vector(1./3.,1./3.,0.); 151 151 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 152 152 153 153 // simple test on y line 154 Point .Init(-1.,0.5,+2.);154 Point = Vector(-1.,0.5,+2.); 155 155 CPPUNIT_ASSERT_EQUAL( 5., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 156 Point .Init(0.,0.5,0.);157 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 158 Point .Init(-1.,0.5,-3.);156 Point = Vector(0.,0.5,0.); 157 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 158 Point = Vector(-1.,0.5,-3.); 159 159 CPPUNIT_ASSERT_EQUAL( 10., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 160 Point .Init(0.,0.5,0.);160 Point = Vector(0.,0.5,0.); 161 161 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 162 162 163 163 // simple test on x line 164 Point .Init(0.5,-1.,+1.);164 Point = Vector(0.5,-1.,+1.); 165 165 CPPUNIT_ASSERT_EQUAL( 2., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 166 Point .Init(0.5,0.,0.);167 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 168 Point .Init(0.5,-1.,-2.);166 Point = Vector(0.5,0.,0.); 167 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 168 Point = Vector(0.5,-1.,-2.); 169 169 CPPUNIT_ASSERT_EQUAL( 5., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 170 Point .Init(0.5,0.,0.);170 Point = Vector(0.5,0.,0.); 171 171 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 172 172 173 173 // simple test on slanted line 174 Point .Init(1.,1.,+3.);174 Point = Vector(1.,1.,+3.); 175 175 CPPUNIT_ASSERT_EQUAL( 9.5, triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 176 Point .Init(0.5,0.5,0.);177 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 178 Point .Init(1.,1.,-4.);176 Point = Vector(0.5,0.5,0.); 177 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 178 Point = Vector(1.,1.,-4.); 179 179 CPPUNIT_ASSERT_EQUAL( 16.5, triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 180 Point .Init(0.5,0.5,0.);180 Point = Vector(0.5,0.5,0.); 181 181 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 182 182 183 183 // simple test on first node 184 Point .Init(-1.,-1.,5.);184 Point = Vector(-1.,-1.,5.); 185 185 CPPUNIT_ASSERT_EQUAL( 27., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 186 Point .Init(0.,0.,0.);186 Point = Vector(0.,0.,0.); 187 187 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 188 188 189 189 // simple test on second node 190 Point .Init(0.,2.,5.);190 Point = Vector(0.,2.,5.); 191 191 CPPUNIT_ASSERT_EQUAL( 26., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 192 Point .Init(0.,1.,0.);192 Point = Vector(0.,1.,0.); 193 193 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 194 194 195 195 // simple test on third node 196 Point .Init(2.,0.,5.);196 Point = Vector(2.,0.,5.); 197 197 CPPUNIT_ASSERT_EQUAL( 26., triangle->GetClosestPointInsideTriangle(&Point, &TestIntersection) ); 198 Point .Init(1.,0.,0.);199 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 200 }; 198 Point = Vector(1.,0.,0.); 199 CPPUNIT_ASSERT_EQUAL( true , Point == TestIntersection ); 200 }; -
src/unittests/vectorunittest.cpp
r632bc3 r8cbb97 17 17 #include "memoryusageobserver.hpp" 18 18 #include "vector.hpp" 19 #include "vector_ops.hpp" 19 20 #include "vectorunittest.hpp" 21 #include "Plane.hpp" 22 #include "Exceptions/LinearDependenceException.hpp" 20 23 21 24 #ifdef HAVE_TESTRUNNER … … 23 26 #endif /*HAVE_TESTRUNNER*/ 24 27 28 #include <iostream> 29 30 using namespace std; 31 25 32 /********************************************** Test classes **************************************/ 26 33 … … 31 38 void VectorTest::setUp() 32 39 { 33 zero .Init(0.,0.,0.);34 unit .Init(1.,0.,0.);35 otherunit .Init(0.,1.,0.);36 notunit .Init(0.,1.,1.);37 two .Init(2.,1.,0.);40 zero = Vector(0.,0.,0.); 41 unit = Vector(1.,0.,0.); 42 otherunit = Vector(0.,1.,0.); 43 notunit = Vector(0.,1.,1.); 44 two = Vector(2.,1.,0.); 38 45 }; 39 46 … … 66 73 double factor; 67 74 // copy vector 68 fixture .Init(2.,3.,4.);75 fixture = Vector(2.,3.,4.); 69 76 CPPUNIT_ASSERT_EQUAL( Vector(2.,3.,4.), fixture ); 70 77 // summation and scaling 71 fixture.CopyVector(&zero); 72 fixture.AddVector(&unit); 73 CPPUNIT_ASSERT_EQUAL( true, fixture.IsOne() ); 74 fixture.CopyVector(&zero); 75 fixture.SubtractVector(&unit); 78 fixture = zero + unit; 79 CPPUNIT_ASSERT_EQUAL( true, fixture.IsOne() ); 80 fixture = zero - unit; 76 81 CPPUNIT_ASSERT_EQUAL( true, fixture.IsOne() ); 77 82 CPPUNIT_ASSERT_EQUAL( false, fixture.IsZero() ); 78 fixture.CopyVector(&zero); 79 fixture.AddVector(&zero); 83 fixture = zero + zero; 80 84 CPPUNIT_ASSERT_EQUAL( true, fixture.IsZero() ); 81 fixture.CopyVector(¬unit); 82 fixture.SubtractVector(&otherunit); 83 CPPUNIT_ASSERT_EQUAL( true, fixture.IsOne() ); 84 fixture.CopyVector(&unit); 85 fixture.AddVector(&otherunit); 85 fixture = notunit - otherunit; 86 CPPUNIT_ASSERT_EQUAL( true, fixture.IsOne() ); 87 fixture = unit - otherunit; 86 88 CPPUNIT_ASSERT_EQUAL( false, fixture.IsOne() ); 87 fixture.CopyVector(¬unit); 88 fixture.SubtractVector(&unit); 89 fixture.SubtractVector(&otherunit); 89 fixture = notunit - unit - otherunit; 90 90 CPPUNIT_ASSERT_EQUAL( false, fixture.IsZero() ); 91 fixture.CopyVector(&unit); 92 fixture.Scale(0.98); 91 fixture = 0.98 * unit; 93 92 CPPUNIT_ASSERT_EQUAL( false, fixture.IsOne() ); 94 fixture.CopyVector(&unit); 95 fixture.Scale(1.); 96 CPPUNIT_ASSERT_EQUAL( true, fixture.IsOne() ); 97 fixture.CopyVector(&unit); 93 fixture = 1. * unit; 94 CPPUNIT_ASSERT_EQUAL( true, fixture.IsOne() ); 98 95 factor = 0.98; 99 fixture .Scale(factor);96 fixture = factor * unit; 100 97 CPPUNIT_ASSERT_EQUAL( false, fixture.IsOne() ); 101 fixture.CopyVector(&unit);102 98 factor = 1.; 103 fixture .Scale(factor);99 fixture = factor * unit; 104 100 CPPUNIT_ASSERT_EQUAL( true, fixture.IsOne() ); 105 101 }; … … 131 127 void VectorTest::EuclidianScalarProductTest() 132 128 { 133 CPPUNIT_ASSERT_EQUAL( 0., zero.ScalarProduct( &zero) );134 CPPUNIT_ASSERT_EQUAL( 0., zero.ScalarProduct( &unit) );135 CPPUNIT_ASSERT_EQUAL( 0., zero.ScalarProduct( &otherunit) );136 CPPUNIT_ASSERT_EQUAL( 0., zero.ScalarProduct( ¬unit) );137 CPPUNIT_ASSERT_EQUAL( 1., unit.ScalarProduct( &unit) );138 CPPUNIT_ASSERT_EQUAL( 0., otherunit.ScalarProduct( &unit) );139 CPPUNIT_ASSERT_EQUAL( 0., otherunit.ScalarProduct( &unit) );140 CPPUNIT_ASSERT_EQUAL( 1., otherunit.ScalarProduct( ¬unit) );141 CPPUNIT_ASSERT_EQUAL( 2., two.ScalarProduct( &unit) );142 CPPUNIT_ASSERT_EQUAL( 1., two.ScalarProduct( &otherunit) );143 CPPUNIT_ASSERT_EQUAL( 1., two.ScalarProduct( ¬unit) );129 CPPUNIT_ASSERT_EQUAL( 0., zero.ScalarProduct(zero) ); 130 CPPUNIT_ASSERT_EQUAL( 0., zero.ScalarProduct(unit) ); 131 CPPUNIT_ASSERT_EQUAL( 0., zero.ScalarProduct(otherunit) ); 132 CPPUNIT_ASSERT_EQUAL( 0., zero.ScalarProduct(notunit) ); 133 CPPUNIT_ASSERT_EQUAL( 1., unit.ScalarProduct(unit) ); 134 CPPUNIT_ASSERT_EQUAL( 0., otherunit.ScalarProduct(unit) ); 135 CPPUNIT_ASSERT_EQUAL( 0., otherunit.ScalarProduct(unit) ); 136 CPPUNIT_ASSERT_EQUAL( 1., otherunit.ScalarProduct(notunit) ); 137 CPPUNIT_ASSERT_EQUAL( 2., two.ScalarProduct(unit) ); 138 CPPUNIT_ASSERT_EQUAL( 1., two.ScalarProduct(otherunit) ); 139 CPPUNIT_ASSERT_EQUAL( 1., two.ScalarProduct(notunit) ); 144 140 } 145 141 … … 162 158 void VectorTest::EuclidianDistancesTest() 163 159 { 164 CPPUNIT_ASSERT_EQUAL( 1., zero.Distance( &unit) );165 CPPUNIT_ASSERT_EQUAL( sqrt(2.), otherunit.Distance( &unit) );166 CPPUNIT_ASSERT_EQUAL( sqrt(2.), zero.Distance( ¬unit) );167 CPPUNIT_ASSERT_EQUAL( 1., otherunit.Distance( ¬unit) );168 CPPUNIT_ASSERT_EQUAL( sqrt(5.), two.Distance( ¬unit) );160 CPPUNIT_ASSERT_EQUAL( 1., zero.Distance(unit) ); 161 CPPUNIT_ASSERT_EQUAL( sqrt(2.), otherunit.Distance(unit) ); 162 CPPUNIT_ASSERT_EQUAL( sqrt(2.), zero.Distance(notunit) ); 163 CPPUNIT_ASSERT_EQUAL( 1., otherunit.Distance(notunit) ); 164 CPPUNIT_ASSERT_EQUAL( sqrt(5.), two.Distance(notunit) ); 169 165 } 170 166 … … 173 169 void VectorTest::EuclidianAnglesTest() 174 170 { 175 CPPUNIT_ASSERT_EQUAL( M_PI, zero.Angle( &unit) );176 CPPUNIT_ASSERT_EQUAL( 0., unit.Angle( &unit) );177 CPPUNIT_ASSERT_EQUAL( true, fabs(M_PI/2. - otherunit.Angle( &unit)) < MYEPSILON );178 CPPUNIT_ASSERT_EQUAL( true, fabs(M_PI/2. - unit.Angle( ¬unit)) < MYEPSILON );179 CPPUNIT_ASSERT_EQUAL( true, fabs(M_PI/4. - otherunit.Angle( ¬unit)) < MYEPSILON );171 CPPUNIT_ASSERT_EQUAL( M_PI, zero.Angle(unit) ); 172 CPPUNIT_ASSERT_EQUAL( 0., unit.Angle(unit) ); 173 CPPUNIT_ASSERT_EQUAL( true, fabs(M_PI/2. - otherunit.Angle(unit)) < MYEPSILON ); 174 CPPUNIT_ASSERT_EQUAL( true, fabs(M_PI/2. - unit.Angle(notunit)) < MYEPSILON ); 175 CPPUNIT_ASSERT_EQUAL( true, fabs(M_PI/4. - otherunit.Angle(notunit)) < MYEPSILON ); 180 176 }; 181 177 … … 184 180 void VectorTest::ProjectionTest() 185 181 { 186 CPPUNIT_ASSERT_EQUAL( zero, zero.Projection( &unit) );187 CPPUNIT_ASSERT_EQUAL( zero, otherunit.Projection( &unit) );188 CPPUNIT_ASSERT_EQUAL( Vector(0.4,0.2,0.), otherunit.Projection( &two) );189 CPPUNIT_ASSERT_EQUAL( Vector(0.,1.,0.), two.Projection( &otherunit) );182 CPPUNIT_ASSERT_EQUAL( zero, zero.Projection(unit) ); 183 CPPUNIT_ASSERT_EQUAL( zero, otherunit.Projection(unit) ); 184 CPPUNIT_ASSERT_EQUAL( Vector(0.4,0.2,0.), otherunit.Projection(two) ); 185 CPPUNIT_ASSERT_EQUAL( Vector(0.,1.,0.), two.Projection(otherunit) ); 190 186 }; 191 187 … … 195 191 { 196 192 // plane at (0,0,0) normal to (1,0,0) cuts line from (0,0,0) to (2,1,0) at ??? 197 CPPUNIT_ASSERT_ EQUAL( true, fixture.GetIntersectionWithPlane(&unit, &zero, &zero, &two) );193 CPPUNIT_ASSERT_NO_THROW(fixture = Plane(unit, zero).GetIntersection(zero, two) ); 198 194 CPPUNIT_ASSERT_EQUAL( zero, fixture ); 199 195 200 196 // plane at (2,1,0) normal to (0,1,0) cuts line from (1,0,0) to (0,1,1) at ??? 201 CPPUNIT_ASSERT_ EQUAL( true, fixture.GetIntersectionWithPlane(&otherunit, &two, &unit, ¬unit) );197 CPPUNIT_ASSERT_NO_THROW(fixture = Plane(otherunit, two).GetIntersection( unit, notunit) ); 202 198 CPPUNIT_ASSERT_EQUAL( Vector(0., 1., 1.), fixture ); 203 199 204 200 // four vectors equal to zero 205 CPPUNIT_ASSERT_EQUAL( false, fixture.GetIntersectionOfTwoLinesOnPlane(&zero, &zero, &zero, &zero, NULL) ); 201 CPPUNIT_ASSERT_THROW(fixture = GetIntersectionOfTwoLinesOnPlane(zero, zero, zero, zero), LinearDependenceException); 202 //CPPUNIT_ASSERT_EQUAL( zero, fixture ); 203 204 // four vectors equal to unit 205 CPPUNIT_ASSERT_THROW(fixture = GetIntersectionOfTwoLinesOnPlane(unit, unit, unit, unit), LinearDependenceException); 206 //CPPUNIT_ASSERT_EQUAL( zero, fixture ); 207 208 // two equal lines 209 CPPUNIT_ASSERT_NO_THROW(fixture = GetIntersectionOfTwoLinesOnPlane(unit, two, unit, two)); 210 CPPUNIT_ASSERT_EQUAL( unit, fixture ); 211 212 // line from (1,0,0) to (2,1,0) cuts line from (1,0,0) to (0,1,0) at ??? 213 CPPUNIT_ASSERT_NO_THROW( fixture = GetIntersectionOfTwoLinesOnPlane(unit, two, unit, otherunit) ); 214 CPPUNIT_ASSERT_EQUAL( unit, fixture ); 215 216 // line from (1,0,0) to (0,0,0) cuts line from (0,0,0) to (2,1,0) at ??? 217 CPPUNIT_ASSERT_NO_THROW( fixture = GetIntersectionOfTwoLinesOnPlane(unit, zero, zero, two) ); 206 218 CPPUNIT_ASSERT_EQUAL( zero, fixture ); 207 219 208 // four vectors equal to unit 209 CPPUNIT_ASSERT_EQUAL( false, fixture.GetIntersectionOfTwoLinesOnPlane(&unit, &unit, &unit, &unit, NULL) ); 220 // line from (1,0,0) to (2,1,0) cuts line from (0,0,0) to (0,1,0) at ??? 221 CPPUNIT_ASSERT_NO_THROW(fixture = GetIntersectionOfTwoLinesOnPlane(unit, two, zero, otherunit) ); 222 CPPUNIT_ASSERT_EQUAL( Vector(0., -1., 0.), fixture ); 223 }; 224 225 /** UnitTest for vector rotations. 226 */ 227 void VectorTest::VectorRotationTest() 228 { 229 fixture = Vector(-1.,0.,0.); 230 231 // zero vector does not change 232 fixture = RotateVector(zero,unit, 1.); 210 233 CPPUNIT_ASSERT_EQUAL( zero, fixture ); 211 234 212 // two equal lines 213 CPPUNIT_ASSERT_EQUAL( true, fixture.GetIntersectionOfTwoLinesOnPlane(&unit, &two, &unit, &two, NULL) ); 235 fixture = RotateVector(zero, two, 1.); 236 CPPUNIT_ASSERT_EQUAL( zero, fixture); 237 238 // vector on axis does not change 239 fixture = RotateVector(unit,unit, 1.); 214 240 CPPUNIT_ASSERT_EQUAL( unit, fixture ); 215 241 216 // line from (1,0,0) to (2,1,0) cuts line from (1,0,0) to (0,1,0) at ???217 CPPUNIT_ASSERT_EQUAL( true, fixture.GetIntersectionOfTwoLinesOnPlane(&unit, &two, &unit, &otherunit, NULL) );218 CPPUNIT_ASSERT_EQUAL( unit, fixture );219 220 // line from (1,0,0) to (0,0,0) cuts line from (0,0,0) to (2,1,0) at ???221 CPPUNIT_ASSERT_EQUAL( true, fixture.GetIntersectionOfTwoLinesOnPlane(&unit, &zero, &zero, &two, NULL) );222 CPPUNIT_ASSERT_EQUAL( zero, fixture );223 224 // line from (1,0,0) to (2,1,0) cuts line from (0,0,0) to (0,1,0) at ???225 CPPUNIT_ASSERT_EQUAL( true, fixture.GetIntersectionOfTwoLinesOnPlane(&unit, &two, &zero, &otherunit, NULL) );226 CPPUNIT_ASSERT_EQUAL( Vector(0., -1., 0.), fixture );227 };228 229 /** UnitTest for vector rotations.230 */231 void VectorTest::VectorRotationTest()232 {233 fixture.Init(-1.,0.,0.);234 235 // zero vector does not change236 fixture.CopyVector(&zero);237 fixture.RotateVector(&unit, 1.);238 CPPUNIT_ASSERT_EQUAL( zero, fixture );239 240 fixture.RotateVector(&two, 1.);241 CPPUNIT_ASSERT_EQUAL( zero, fixture);242 243 // vector on axis does not change244 fixture.CopyVector(&unit);245 fixture.RotateVector(&unit, 1.);246 CPPUNIT_ASSERT_EQUAL( unit, fixture );247 248 fixture.RotateVector(&unit, 1.);249 CPPUNIT_ASSERT_EQUAL( unit, fixture );250 251 242 // rotations 252 fixture.CopyVector(&otherunit); 253 fixture.RotateVector(&unit, M_PI); 243 fixture = RotateVector(otherunit, unit, M_PI); 254 244 CPPUNIT_ASSERT_EQUAL( Vector(0.,-1.,0.), fixture ); 255 245 256 fixture.CopyVector(&otherunit); 257 fixture.RotateVector(&unit, 2. * M_PI); 246 fixture = RotateVector(otherunit, unit, 2. * M_PI); 258 247 CPPUNIT_ASSERT_EQUAL( otherunit, fixture ); 259 248 260 fixture.CopyVector(&otherunit); 261 fixture.RotateVector(&unit, 0); 249 fixture = RotateVector(otherunit,unit, 0); 262 250 CPPUNIT_ASSERT_EQUAL( otherunit, fixture ); 263 251 264 fixture.Init(0.,0.,1.); 265 fixture.RotateVector(¬unit, M_PI); 252 fixture = RotateVector(Vector(0.,0.,1.), notunit, M_PI); 266 253 CPPUNIT_ASSERT_EQUAL( otherunit, fixture ); 267 254 } … … 283 270 parallelepiped[8] = 1; 284 271 285 fixture .CopyVector(zero);286 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 287 fixture .Init(2.5,2.5,2.5);272 fixture = zero; 273 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 274 fixture = Vector(2.5,2.5,2.5); 288 275 CPPUNIT_ASSERT_EQUAL( true, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 289 fixture .Init(1.,1.,1.);290 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 291 fixture .Init(3.5,3.5,3.5);292 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 293 fixture .Init(2.,2.,2.);276 fixture = Vector(1.,1.,1.); 277 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 278 fixture = Vector(3.5,3.5,3.5); 279 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 280 fixture = Vector(2.,2.,2.); 294 281 CPPUNIT_ASSERT_EQUAL( true, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 295 fixture .Init(2.,3.,2.);282 fixture = Vector(2.,3.,2.); 296 283 CPPUNIT_ASSERT_EQUAL( true, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 297 fixture .Init(-2.,2.,-1.);298 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 299 } 300 284 fixture = Vector(-2.,2.,-1.); 285 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 286 } 287
Note:
See TracChangeset
for help on using the changeset viewer.
