Beispiel #1
0
    def test_get_path(self):
        """
        Tests the ability to generate all paths from one symbol to another.
        """
        symbols = GraphTest.generate_canonical_symbols()
        models = GraphTest.generate_canonical_models()
        material = GraphTest.generate_canonical_material(symbols)
        del models['model6']
        g = Graph(symbol_types=symbols, models=models, composite_models=dict())

        paths_1 = g.get_paths(symbols['A'], symbols['F'])
        paths_2 = g.get_paths(symbols['A'], symbols['D'])

        ans_1 = [SymbolPath({symbols['A']}, [models['model1'], models['model3']])]
        ans_2 = [
            SymbolPath({symbols['A'], symbols['C']}, [models['model2'], models['model5']]),
            SymbolPath({symbols['A'], symbols['G']}, [models['model1'], models['model5']]),
            SymbolPath({symbols['A']}, [models['model1'], models['model4']]),
            SymbolPath({symbols['A']}, [models['model1'], models['model2'], models['model5']]),
            SymbolPath({symbols['A']}, [models['model2'], models['model1'], models['model5']])
        ]
        self.assertTrue(len(paths_1) == len(ans_1),
                        "Incorrect paths generated.")
        self.assertTrue(len(paths_2) == len(ans_2),
                        "Incorrect paths generated.")
        for i in paths_1:
            self.assertTrue(i in ans_1,
                            "Incorrect paths generated.")
        for i in paths_2:
            self.assertTrue(i in ans_2,
                            "Incorrect paths generated.")
Beispiel #2
0
    def test_get_path_constraint(self):
        """
        Tests the ability to generate all paths from one symbol to another with constraints.
        """
        model4 = EquationModel("model4", ['D=B*C*11'], constraints=["G==0"])
        symbols = GraphTest.generate_canonical_symbols()
        models = GraphTest.generate_canonical_models(constrain_model_4=True)
        models['model4'] = model4
        del models['model6']
        g = Graph(symbol_types=symbols, models=models, composite_models=dict())

        paths_1 = g.get_paths(symbols['A'], symbols['F'])
        paths_2 = g.get_paths(symbols['A'], symbols['D'])

        ans_1 = [
            SymbolPath({symbols['A']}, [models['model1'], models['model3']])
        ]

        ans_2 = [
            SymbolPath({symbols['A'], symbols['C']},
                       [models['model2'], models['model5']]),
            SymbolPath({symbols['A'], symbols['G']},
                       [models['model1'], models['model5']]),
            SymbolPath({symbols['A'], symbols['C'], symbols['B']},
                       [models['model2'], models['model4']]),
            SymbolPath({symbols['A'], symbols['G']},
                       [models['model1'], models['model4']]),
            SymbolPath({symbols['A']},
                       [models['model1'], models['model2'], models['model5']]),
            SymbolPath({symbols['A']},
                       [models['model2'], models['model1'], models['model5']]),
            SymbolPath({symbols['A']},
                       [models['model1'], models['model2'], models['model4']]),
            SymbolPath({symbols['A']},
                       [models['model2'], models['model1'], models['model4']])
        ]

        self.assertTrue(
            len(paths_1) == len(ans_1), "Incorrect paths generated.")
        self.assertTrue(
            len(paths_2) == len(ans_2), "Incorrect paths generated.")
        for i in paths_1:
            self.assertTrue(i in ans_1, "Incorrect paths generated.")
        for i in paths_2:
            self.assertTrue(i in ans_2, "Incorrect paths generated.")