def test_misshapen_matrices(self): data = [[3, 2, 0], [2, 0, 1]] # this is utter gibberish with self.assertRaises(ValueError): _validate_and_build_edge_list( graph=np.array(data), is_weighted=True, weight_attribute="weight", check_directed=True, weight_default=1.0, ) with self.assertRaises(ValueError): _validate_and_build_edge_list( graph=scipy.sparse.csr_matrix(data), is_weighted=True, weight_attribute="weight", check_directed=True, weight_default=1.0, )
def test_empty_edge_list(self): edges = [] results = _validate_and_build_edge_list( graph=edges, is_weighted=True, weight_attribute="weight", check_directed=False, weight_default=1.0, ) self.assertEqual([], results[1])
def test_unweighted_nx(self): graph = nx.Graph() graph.add_edge("dwayne", "nick") graph.add_edge("nick", "ben") with self.assertRaises(ValueError): _validate_and_build_edge_list( graph=graph, is_weighted=True, weight_attribute="weight", check_directed=False, weight_default=None, ) _, edges = _validate_and_build_edge_list( graph=graph, is_weighted=True, weight_attribute="weight", check_directed=False, weight_default=3.33333, ) self.assertEqual( [("dwayne", "nick", 3.33333), ("nick", "ben", 3.33333)], edges, ) graph.add_edge("salad", "sandwich", weight=100) _, edges = _validate_and_build_edge_list( graph=graph, is_weighted=True, weight_attribute="weight", check_directed=False, weight_default=3.33333, ) self.assertEqual( [ ("dwayne", "nick", 3.33333), ("nick", "ben", 3.33333), ("salad", "sandwich", 100), ], edges, )
def test_empty_adj_matrices(self): dense = np.array([]) with self.assertRaises(ValueError): _validate_and_build_edge_list( graph=dense, is_weighted=True, weight_attribute="weight", check_directed=True, weight_default=1.0, ) sparse = scipy.sparse.csr_matrix([]) with self.assertRaises(ValueError): _validate_and_build_edge_list( graph=sparse, is_weighted=True, weight_attribute="weight", check_directed=True, weight_default=1.0, )
def test_assert_wrong_types_in_tuples(self): edges = [(True, 4, "sandwich")] with self.assertRaises(ValueError): _validate_and_build_edge_list( graph=edges, is_weighted=True, weight_attribute="weight", check_directed=False, weight_default=1.0, ) edges = [(True, False, 3.2)] results = _validate_and_build_edge_list( graph=edges, is_weighted=True, weight_attribute="weight", check_directed=False, weight_default=1.0, ) self.assertEqual([("True", "False", 3.2)], results[1])
def test_valid_nx(self): graph = add_edges_to_graph(nx.Graph()) expected = [("nick", "dwayne", 2.2), ("dwayne", "ben", 0.001)] _, edges = _validate_and_build_edge_list( graph=graph, is_weighted=True, weight_attribute="weight", check_directed=False, weight_default=1.0, ) self.assertEqual(expected, edges) with self.assertRaises(TypeError): graph = add_edges_to_graph(nx.DiGraph()) _validate_and_build_edge_list( graph=graph, is_weighted=True, weight_attribute="weight", check_directed=False, weight_default=1.0, ) with self.assertRaises(TypeError): graph = add_edges_to_graph(nx.MultiGraph()) _validate_and_build_edge_list( graph=graph, is_weighted=True, weight_attribute="weight", check_directed=False, weight_default=1.0, ) with self.assertRaises(TypeError): graph = add_edges_to_graph(nx.MultiDiGraph()) _validate_and_build_edge_list( graph=graph, is_weighted=True, weight_attribute="weight", check_directed=False, weight_default=1.0, )
def test_matrices(self): graph = add_edges_to_graph(nx.Graph()) di_graph = add_edges_to_graph(nx.DiGraph()) dense_undirected = nx.to_numpy_array(graph) dense_directed = nx.to_numpy_array(di_graph) sparse_undirected = nx.to_scipy_sparse_matrix(graph) sparse_directed = nx.to_scipy_sparse_matrix(di_graph) expected = [("0", "1", 2.2), ("1", "2", 0.001)] _, edges = _validate_and_build_edge_list( graph=dense_undirected, is_weighted=True, weight_attribute="weight", check_directed=True, weight_default=1.0, ) self.assertEqual(expected, edges) _, edges = _validate_and_build_edge_list( graph=sparse_undirected, is_weighted=True, weight_attribute="weight", check_directed=True, weight_default=1.0, ) self.assertEqual(expected, edges) with self.assertRaises(ValueError): _validate_and_build_edge_list( graph=dense_directed, is_weighted=True, weight_attribute="weight", check_directed=True, weight_default=1.0, ) with self.assertRaises(ValueError): _validate_and_build_edge_list( graph=sparse_directed, is_weighted=True, weight_attribute="weight", check_directed=True, weight_default=1.0, )