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.")
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.")