# Getting counts of nodes and edges in graph objects test_that("getting a node count (with `count_nodes()`) is possible", { # Create a simple graph graph <- create_graph() %>% add_path(n = 5) # Obtain a total count of nodes n_nodes <- count_nodes(graph) # Expect that the `total_count_of_nodes` object # is a named vector expect_type( n_nodes, "integer") expect_equal( n_nodes, 5) }) test_that("getting an edge count (with `count_edges()`) is possible", { # Create a simple graph graph <- create_graph() %>% add_path(n = 5) # Obtain a total count of edges n_edges <- count_edges(graph) # Expect that the `n_edges` object is # an integer expect_equal(n_edges, 4L) }) test_that("getting a node/edge count for an empty graph is possible", { # Create an empty graph empty_graph <- create_graph() # Expect that a node count of an empty graph # will return `0` expect_equal( count_nodes( graph = empty_graph), 0) # Expect that an edge count of an empty graph # will return `0` expect_equal( count_edges( graph = empty_graph), 0) }) test_that("counting the number of edges with the same definition is possible", { # Create a node data frame (ndf) ndf <- create_node_df( n = 5, label = TRUE) # Create an edge data frame (edf) edf <- create_edge_df( from = c(1, 4, 4, 3, 5, 1, 3, 4), to = c(4, 1, 1, 2, 2, 2, 2, 1)) # Create a graph with the ndf and edf graph <- create_graph( nodes_df = ndf, edges_df = edf) # Get the total number of edge # definitions (e.g., `4` -> `1`) where # there are multiple edges (i.e., # distinct edges with separate edge # ID values) edges_where_multiple_occur <- get_edge_count_w_multiedge(graph = graph) # Expect that there are 2 such # edge definitions expect_equal( edges_where_multiple_occur, 2) }) test_that("counting the number of multiple edges between a specific node pair is possible", { # Create a node data frame (ndf) ndf <- create_node_df( n = 5, label = TRUE) # Create an edge data frame (edf) edf <- create_edge_df( from = c(1, 4, 4, 3, 5, 1, 3, 4), to = c(4, 1, 1, 2, 2, 2, 2, 1)) # Create a graph with the ndf and edf graph <- create_graph( nodes_df = ndf, edges_df = edf) # Get the total number of multiple # edges (those edges that share an # edge definition) in the graph global_multiple_edges_count <- get_multiedge_count(graph = graph) # Expect that there are 3 edges that # serve as multiple edges expect_equal( global_multiple_edges_count, 3) }) test_that("counting the number of strongly connected components is possible", { # Create a graph with several # graph islands graph <- create_graph() %>% add_islands_graph( n_islands = 4, island_size = 1, p = 1 / 555, edges_between = 0) # Expect that the count of strongly # connected components is 4 expect_equal( graph %>% count_s_connected_cmpts(), 4) # Expect that an empty graph will # return NA expect_true( is.na(count_s_connected_cmpts(graph = create_graph()))) }) test_that("counting the number of weakly connected components is possible", { # Create a graph with 2 cycles graph <- create_graph() %>% add_cycle(n = 5) %>% add_cycle(n = 5) # Expect that the count of weakly # connected components is 2 expect_equal( graph %>% count_w_connected_cmpts(), 2) # Expect that an empty graph will # return NA expect_true( is.na(count_w_connected_cmpts(graph = create_graph()))) }) test_that("counting the number of loop edges is possible", { # Create a full graph that # includes loops graph <- create_graph( directed = FALSE) %>% add_full_graph( n = 3, keep_loops = TRUE) # Expect that the number of # loop edges is 3 expect_equal( graph %>% count_loop_edges(), 3) # Expect that an empty graph will # return 0 expect_equal( count_loop_edges(graph = create_graph()), 0) }) test_that("counting the unconnected graph nodes is possible", { # Create a graph with a # path of nodes and 3 # unconnected nodes graph <- create_graph() %>% add_path(n = 3) %>% add_n_nodes(n = 3) # Expect that the count of # unconnected nodes is 3 expect_equal( graph %>% count_unconnected_nodes(), 3) # Expect that an empty graph will # return 0 expect_equal( count_unconnected_nodes(graph = create_graph()), 0) # Expect that a graph without unconnected # nodes will return 0 expect_equal( create_graph() %>% add_path(n = 4) %>% count_unconnected_nodes(), 0) })