Changeset d6b12c
- Timestamp:
- Jul 2, 2012, 7:53:25 AM (12 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, 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:
- fb255d
- Parents:
- a06358c
- git-author:
- Frederik Heber <heber@…> (02/29/12 16:07:33)
- git-committer:
- Frederik Heber <heber@…> (07/02/12 07:53:25)
- Location:
- src/Fragmentation/Automation
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Fragmentation/Automation/FragmentQueue.cpp
ra06358c rd6b12c 23 23 24 24 #include "CodePatterns/Assert.hpp" 25 #include "CodePatterns/Observer/Channels.hpp" 25 26 #include "CodePatterns/Log.hpp" 26 27 … … 33 34 * 34 35 */ 35 FragmentQueue::FragmentQueue() 36 {} 36 FragmentQueue::FragmentQueue() : 37 Observable("FragmentQueue") 38 { 39 // observable stuff 40 Channels *OurChannel = new Channels; 41 NotificationChannels.insert( std::make_pair(this, OurChannel) ); 42 // add instance for each notification type 43 for (size_t type = 0; type < NotificationType_MAX; ++type) 44 OurChannel->addChannel(type); 45 } 37 46 38 47 /** Destructor for class FragmentQueue. … … 65 74 ASSERT(!results.count(job->getId()), 66 75 "FragmentQueue::pushJob() - job id "+toString(job->getId())+" has already been used."); 76 OBSERVE; 77 NOTIFY(JobAdded); 67 78 results.insert( std::make_pair(job->getId(), NoResult)); 68 79 jobs.push_back(job); … … 92 103 FragmentJob::ptr FragmentQueue::popJob() 93 104 { 105 OBSERVE; 106 NOTIFY(JobRemoved); 94 107 ASSERT(jobs.size(), 95 108 "FragmentQueue::popJob() - there are no jobs on the queue."); -
src/Fragmentation/Automation/FragmentQueue.hpp
ra06358c rd6b12c 18 18 #include <vector> 19 19 20 #include "CodePatterns/Observer/Observable.hpp" 21 20 22 #include "types.hpp" 21 23 #include "Jobs/FragmentJob.hpp" … … 28 30 * contained herein. 29 31 */ 30 class FragmentQueue 32 class FragmentQueue : public Observable 31 33 { 32 34 friend class FragmentQueueTest; … … 34 36 FragmentQueue(); 35 37 ~FragmentQueue(); 38 39 enum NotificationType { 40 JobAdded, 41 JobRemoved, 42 NotificationType_MAX // denotes the maximum of available notification types 43 }; 36 44 37 45 // entering jobs into queue -
src/Fragmentation/Automation/unittests/FragmentQueueUnitTest.cpp
ra06358c rd6b12c 29 29 #include "FragmentQueue.hpp" 30 30 31 #include "CodePatterns/Observer/Channels.hpp" 31 32 32 33 #ifdef HAVE_TESTRUNNER … … 37 38 38 39 #include "stubs/FragmentJobStub.hpp" 40 #include "unittests/stubs/ObserverStub.hpp" 39 41 40 42 // Registers the fixture into the 'registry' … … 48 50 49 51 queue = new FragmentQueue(); 52 addobserver = new NotificationObserver(queue->getChannel(FragmentQueue::JobAdded)); 53 removeobserver = new NotificationObserver(queue->getChannel(FragmentQueue::JobRemoved)); 54 55 // and sign on 56 queue->signOn(addobserver, FragmentQueue::JobAdded); 57 queue->signOn(removeobserver, FragmentQueue::JobRemoved); 50 58 } 51 59 … … 53 61 void FragmentQueueTest::tearDown() 54 62 { 63 queue->signOff(addobserver, FragmentQueue::JobAdded); 64 queue->signOff(removeobserver, FragmentQueue::JobRemoved); 65 55 66 delete queue; 67 delete removeobserver; 68 delete addobserver; 56 69 } 57 70 … … 76 89 queue->pushJob(testJob); 77 90 #endif 91 CPPUNIT_ASSERT( addobserver->wasNotified ); 92 CPPUNIT_ASSERT( !removeobserver->wasNotified ); 93 addobserver->wasNotified = false; 78 94 79 95 CPPUNIT_ASSERT_EQUAL((size_t)1, queue->jobs.size()); … … 101 117 poppedJob = queue->popJob(); 102 118 #endif 119 CPPUNIT_ASSERT( !addobserver->wasNotified ); 120 CPPUNIT_ASSERT( removeobserver->wasNotified ); 103 121 CPPUNIT_ASSERT( poppedJob == testJob ); 104 122 -
src/Fragmentation/Automation/unittests/FragmentQueueUnitTest.hpp
ra06358c rd6b12c 18 18 19 19 class FragmentQueue; 20 class NotificationObserver; 20 21 21 22 /********************************************** Test classes **************************************/ … … 42 43 private: 43 44 FragmentQueue *queue; 45 NotificationObserver *addobserver; 46 NotificationObserver *removeobserver; 44 47 }; 45 48 -
src/Fragmentation/Automation/unittests/Makefile.am
ra06358c rd6b12c 63 63 64 64 FragmentQueueUnitTest_LDFLAGS = ${CodePatterns_LIBS} $(CPPUNIT_LIBS) -ldl 65 FragmentQueueUnitTest_CPPFLAGS = ${BOOST_CPPFLAGS} $(CPPUNIT_CFLAGS) ${CodePatterns_CFLAGS} 65 FragmentQueueUnitTest_CPPFLAGS = ${BOOST_CPPFLAGS} $(CPPUNIT_CFLAGS) ${CodePatterns_CFLAGS} -I$(top_srcdir)/src 66 66 FragmentQueueUnitTest_SOURCES = $(top_srcdir)/src/unittests/UnitTestMain.cpp \ 67 67 unittests/FragmentQueueUnitTest.cpp \ 68 68 unittests/FragmentQueueUnitTest.hpp \ 69 69 unittests/stubs/FragmentJobStub.cpp \ 70 unittests/stubs/FragmentJobStub.hpp 70 unittests/stubs/FragmentJobStub.hpp \ 71 $(top_srcdir)/src/unittests/stubs/ObserverStub.cpp \ 72 $(top_srcdir)/src/unittests/stubs/ObserverStub.hpp 71 73 FragmentQueueUnitTest_LDADD = \ 72 74 libMolecuilderFragmentJobs.la \
Note:
See TracChangeset
for help on using the changeset viewer.