# Creating a graph object test_that("an empty graph object can be created and such an object is correct", { # Create an empty graph graph <- create_graph() # Expect that names in graph object match a # prescribed set of names expect_named( graph, c( "graph_info", "nodes_df", "edges_df", "global_attrs", "directed", "last_node", "last_edge", "node_selection", "edge_selection", "cache", "graph_actions", "graph_log" ) ) # Expect a graph object of class `dgr_graph` expect_s3_class(graph, "dgr_graph") # Expect that the `nodes_df` and `edges_df` components are # a data frame expect_s3_class(graph$nodes_df, "data.frame") expect_s3_class(graph$edges_df, "data.frame") # Expect that the use of `is_graph_empty()` function # will result in TRUE expect_true(is_graph_empty(graph)) # Expect that the `global_attrs` component is not NULL expect_false(is.null(graph$global_attrs)) # Expect that the empty graph is directed by default expect_true(graph$directed) # Expect that the `is_graph_directed()` function # will return TRUE expect_true(is_graph_directed(graph)) }) test_that("a graph object with nodes can be created correctly", { # Create a node data frame nodes <- create_node_df( n = 4, type = "lower", style = "filled", color = "aqua", shape = c("circle", "circle", "rectangle", "rectangle"), data = c(3.5, 2.6, 9.4, 2.7)) # Create the graph object using the node data frame graph <- create_graph(nodes_df = nodes) # Expect that names in this graph object match a # prescribed set of names expect_in( names(graph), c( "graph_info", "nodes_df", "edges_df", "global_attrs", "directed", "last_node", "last_edge", "node_selection", "edge_selection", "cache", "graph_actions", "graph_log" ) ) # Expect a graph object of class `dgr_graph` expect_s3_class( graph, "dgr_graph") # Expect that several of the graph components # are not NULL expect_false(is.null(graph$nodes_df)) expect_false(is.null(graph$global_attrs)) # Expect that the `nodes_df` and `edges_df` component is # a data frame expect_s3_class(graph$nodes_df, "data.frame") expect_s3_class(graph$edges_df, "data.frame") # Expect that the graph is a directed graph expect_true(graph$directed) # Expect that the `nodes_df` df has 7 columns expect_equal( ncol(graph$nodes_df), 7) # Expect that the `nodes_df` df has 4 rows expect_equal( nrow(graph$nodes_df), 4) }) test_that("a graph object with nodes and edges can be created correctly", { # Create a node data frame nodes <- create_node_df( n = 4, type = "lower", style = "filled", color = "aqua", shape = c("circle", "circle", "rectangle", "rectangle"), data = c(3.5, 2.6, 9.4, 2.7)) # Create an edge data frame edges <- create_edge_df( from = c(1, 2, 3), to = c(4, 3, 1), rel = "leading_to") # Create the graph object using the node and # edge data frames graph <- create_graph( nodes_df = nodes, edges_df = edges) # Expect that names in this graph object match a # prescribed set of names expect_in( names(graph), c( "graph_info", "nodes_df", "edges_df", "global_attrs", "directed", "last_node", "last_edge", "node_selection", "edge_selection", "cache", "graph_actions", "graph_log" ) ) # Expect a graph object of class `dgr_graph` expect_s3_class( graph, "dgr_graph") # Expect that the `global_attrs` component is not NULL expect_false(is.null(graph$global_attrs)) # Expect that the `nodes_df` component is # a data frame expect_s3_class( graph$nodes_df, "data.frame") # Expect that the `edges_df` component is # a data frame expect_s3_class( graph$edges_df, "data.frame") # Expect that the graph is a directed graph expect_true(graph$directed) # Expect that the `nodes_df` df has 7 columns expect_equal( ncol(graph$nodes_df), 7) # Expect that the `nodes_df` df has 4 rows expect_equal( nrow(graph$nodes_df), 4) # Expect that the `edges_df` df has 4 columns expect_equal( ncol(graph$edges_df), 4) # Expect that the `edges_df` df has 3 rows expect_equal( nrow(graph$edges_df), 3) })