diff --git a/tests/cxx/unit_tests/pluginplay/printing/mermaid.cpp b/tests/cxx/unit_tests/pluginplay/printing/mermaid.cpp index 89cd87a6..17d27bcb 100644 --- a/tests/cxx/unit_tests/pluginplay/printing/mermaid.cpp +++ b/tests/cxx/unit_tests/pluginplay/printing/mermaid.cpp @@ -21,40 +21,188 @@ #include #include -#define DECLARE_TEST_MODULE(number) \ - DECLARE_MODULE(SubmodLvl##number); \ - inline MODULE_CTOR(SubmodLvl##number) { \ - satisfies_property_type(); \ - add_submodule("Submod " #number); \ - } \ - inline MODULE_RUN(SubmodLvl##number) { return results(); } -// Module Name: SubmodLvl# -// Submodule Name: Submod # +// #define DECLARE_TEST_MODULE(number) \ +// DECLARE_MODULE(SubmodLvl##number); \ +// inline MODULE_CTOR(SubmodLvl##number) { \ +// satisfies_property_type(); \ +// add_submodule("Submod " #number); \ +// } \ +// inline MODULE_RUN(SubmodLvl##number) { return results(); } +// // Module Name: SubmodLvl# +// // Submodule Name: Submod # -DECLARE_TEST_MODULE(3) -DECLARE_TEST_MODULE(2) -DECLARE_TEST_MODULE(1) +// DECLARE_TEST_MODULE(3) +// DECLARE_TEST_MODULE(2) +// DECLARE_TEST_MODULE(1) -#undef DECLARE_TEST_MODULE +// #undef DECLARE_TEST_MODULE -DECLARE_MODULE(TooManySubmods); -inline MODULE_CTOR(TooManySubmods) { +// DECLARE_MODULE(TooManySubmods); +// inline MODULE_CTOR(TooManySubmods) { +// satisfies_property_type(); +// add_submodule("Submods"); +// } +// inline MODULE_RUN(TooManySubmods) { return results(); } + + +DECLARE_MODULE(Allnmers); +inline MODULE_CTOR(Allnmers) { + satisfies_property_type(); + add_submodule("Monomer Maker"); +} +inline MODULE_RUN(Allnmers) { return results(); } + +DECLARE_MODULE(AtomicCapping); +inline MODULE_CTOR(AtomicCapping) { + satisfies_property_type(); +} +inline MODULE_RUN(AtomicCapping) { return results(); } + +DECLARE_MODULE(BondBasedFragmenter); +inline MODULE_CTOR(BondBasedFragmenter) { + satisfies_property_type(); +} +inline MODULE_RUN(BondBasedFragmenter) { return results(); } + +DECLARE_MODULE(BrokenBonds); +inline MODULE_CTOR(BrokenBonds) { + satisfies_property_type(); +} +inline MODULE_RUN(BrokenBonds) { return results(); } + +DECLARE_MODULE(ClusterPartition); +inline MODULE_CTOR(ClusterPartition) { + satisfies_property_type(); +} +inline MODULE_RUN(ClusterPartition) { return results(); } + +DECLARE_MODULE(CovalentRadius); +inline MODULE_CTOR(CovalentRadius) { + satisfies_property_type(); +} +inline MODULE_RUN(CovalentRadius) { return results(); } + +DECLARE_MODULE(DCLCCapping); +inline MODULE_CTOR(DCLCCapping) { + satisfies_property_type(); + add_submodule("Connectivity"); +} +inline MODULE_RUN(DCLCCapping) { return results(); } + +DECLARE_MODULE(EnergyMethod); +inline MODULE_CTOR(EnergyMethod) { + satisfies_property_type(); +} +inline MODULE_RUN(EnergyMethod) { return results(); } + +DECLARE_MODULE(FragmentBasedMethod); +inline MODULE_CTOR(FragmentBasedMethod) { satisfies_property_type(); - add_submodule("Submods"); + add_submodule("Energy method"); + add_submodule("Subsystem former"); + add_submodule("Weighter"); + +} +inline MODULE_RUN(FragmentBasedMethod) { return results(); } + +DECLARE_MODULE(FragmentDriver); +inline MODULE_CTOR(FragmentDriver) { + satisfies_property_type(); + add_submodule("Atomic connectivity"); + add_submodule("Cap broken bonds"); + add_submodule("Find broken bonds"); + add_submodule("Fragment builder"); + add_submodule("Intersection finder"); + add_submodule("Molecular graph"); + add_submodule("N-mer builder"); + +} +inline MODULE_RUN(FragmentDriver) { return results(); } + +DECLARE_MODULE(FragmentedChemicalSystemDriver); +inline MODULE_CTOR(FragmentedChemicalSystemDriver) { + satisfies_property_type(); + add_submodule("Fragmenter"); +} +inline MODULE_RUN(FragmentedChemicalSystemDriver) { return results(); } + +DECLARE_MODULE(GMBEWeights); +inline MODULE_CTOR(GMBEWeights) { + satisfies_property_type(); +} +inline MODULE_RUN(GMBEWeights) { return results(); } + +DECLARE_MODULE(HeavyAtomPartition); +inline MODULE_CTOR(HeavyAtomPartition) { + satisfies_property_type(); + add_submodule("Connectivity"); +} +inline MODULE_RUN(HeavyAtomPartition) { return results(); } + +DECLARE_MODULE(Intersections); +inline MODULE_CTOR(Intersections) { + satisfies_property_type(); +} +inline MODULE_RUN(Intersections) { return results(); } + +DECLARE_MODULE(NuclearGraph); +inline MODULE_CTOR(NuclearGraph) { + satisfies_property_type(); + add_submodule("Connectivity"); + add_submodule("Nodes"); } -inline MODULE_RUN(TooManySubmods) { return results(); } -// Make it to where the modules branch +inline MODULE_RUN(NuclearGraph) { return results(); } + +DECLARE_MODULE(WeightedDistance); +inline MODULE_CTOR(WeightedDistance) { + satisfies_property_type(); +} +inline MODULE_RUN(WeightedDistance) { return results(); } + + TEST_CASE("hello_world") { pluginplay::ModuleManager mm; // Load in Modules - mm.add_module("SubmodLvl3"); - mm.add_module("SubmodLvl2"); - mm.add_module("SubmodLvl1"); - mm.add_module("TooManySubmods"); - mm.change_submod("TooManySubmods", "Submods", "SubmodLvl1"); - mm.change_submod("SubmodLvl1", "Submod 1", "SubmodLvl2"); - mm.change_submod("SubmodLvl2", "Submod 2", "SubmodLvl3"); + // mm.add_module("SubmodLvl3"); + // mm.add_module("SubmodLvl2"); + // mm.add_module("SubmodLvl1"); + // mm.add_module("TooManySubmods"); + // mm.change_submod("TooManySubmods", "Submods", "SubmodLvl1"); + // mm.change_submod("SubmodLvl1", "Submod 1", "SubmodLvl2"); + // mm.change_submod("SubmodLvl2", "Submod 2", "SubmodLvl3"); + mm.add_module("All nmers"); + mm.add_module("Atomic Capping"); + mm.add_module("Bond-Based Fragmenter"); + mm.add_module("Broken Bonds"); + mm.add_module("Cluster Partition"); + mm.add_module("Covalent Radius"); + mm.add_module("DCLC Capping"); + mm.add_module("Energy Method"); + mm.add_module("Fragment Based Method"); + mm.add_module("Fragment Driver"); + mm.add_module("FragmentedChemicalSystem Driver"); + mm.add_module("GMBE Weights"); + mm.add_module("Heavy Atom Partition"); + mm.add_module("Intersections"); + mm.add_module("Nuclear Graph"); + mm.add_module("Weighted Distance"); + mm.change_submod("DCLC Capping", "Connectivity", "Covalent Radius"); + mm.change_submod("Fragment Based Method", "Energy method", "Energy Method"); + mm.change_submod("Fragment Based Method", "Subsystem former", "FragmentedChemicalSystem Driver"); + mm.change_submod("Fragment Based Method", "Weighter", "GMBE Weights"); + mm.change_submod("Fragment Driver", "Atomic connectivity", "Covalent Radius"); + mm.change_submod("Fragment Driver", "Cap broken bonds", "Weighted Distance"); + mm.change_submod("Fragment Driver", "Find broken bonds", "Broken Bonds"); + mm.change_submod("Fragment Driver", "Fragment builder", "Bond-Based Fragmenter"); + mm.change_submod("Fragment Driver", "Intersection finder", "Intersections"); + mm.change_submod("Fragment Driver", "Molecular graph", "Nuclear Graph"); + mm.change_submod("Fragment Driver", "N-mer builder", "All nmers"); + mm.change_submod("FragmentedChemicalSystem Driver", "Fragmenter", "Fragment Driver"); + mm.change_submod("Heavy Atom Partition", "Connectivity", "Covalent Radius"); + mm.change_submod("Nuclear Graph", "Connectivity", "Covalent Radius"); + mm.change_submod("Nuclear Graph", "Nodes", "Heavy Atom Partition"); + SECTION("huh") { auto hello = create_mermaid_graph(mm);