library(mapmate)
suppressMessages(library(dplyr))
context("networks.R")
data(network)
test_that("gc_endpoints returns valid output", {
expect_error(gc_endpoints(network, "lon0", "lat0"), "Use a different column name than 'lon0'.")
expect_error(gc_endpoints(network, "lon", "lat0"), "Use a different column name than 'lat0'.")
d <- gc_endpoints(network, "lon", "lat")
expect_is(d, "tbl_df")
expect_equal(nrow(d), (nrow(network) / 2)^2)
expect_equal(ncol(d), 2*ncol(network) + 1)
d <- gc_endpoints(network, "lon", "lat", distance=FALSE)
expect_is(d, "tbl_df")
expect_equal(nrow(d), (nrow(network) / 2)^2)
expect_equal(ncol(d), 2*ncol(network) + 0)
d <- gc_endpoints(network, "lon", "lat", keep=FALSE)
expect_is(d, "tbl_df")
expect_equal(nrow(d), (nrow(network) / 2)^2)
expect_equal(ncol(d), 2*2 + 1)
d <- gc_endpoints(network, "lon", "lat", distance=FALSE, keep=FALSE)
expect_is(d, "tbl_df")
expect_equal(nrow(d), (nrow(network) / 2)^2)
expect_equal(ncol(d), 2*2 + 0)
})
distFun <- function(x) 1 - x / max(x) # simple inverse distance weighting
d0 <- gc_endpoints(network, "lon", "lat") %>% mutate(Dist_wts=distFun(Dist)) %>%
sample_n(500, replace=TRUE, weight=(Pop_wts0 + Pop_wts1)/2 + Dist_wts)
test_that("gc_arcs returns valid output", {
expect_error(gc_arcs(d0, "lon0", "lat0", "lon1", "lat1", n=c(1, 2)),
"'n' must have length 1 or length equal to the number of rows in 'data'.")
expect_error(gc_arcs(d0, "lon0", "lat0", "lon1", "lat1", n=0),
"Column 'n' must contain positive integers.")
expect_error(gc_arcs(d0, "lon0", "lat0", "lon1", "lat1", n="a"),
"If 'n' is character, it must refer to a column in 'data'.")
d <- gc_arcs(slice(d0, 1), "lon0", "lat0", "lon1", "lat1", n=10, addStartEnd=FALSE)
expect_is(d, "tbl_df")
expect_equal(nrow(d), 1*(10 + 0))
expect_equal(ncol(d), 3)
expect_equal(length(unique(d$group)), 1)
d <- gc_arcs(slice(d0, 1:2), "lon0", "lat0", "lon1", "lat1", n=20)
expect_is(d, "data.frame")
expect_equal(nrow(d), 2*(20 + 2))
expect_equal(ncol(d), 3)
expect_equal(length(unique(d$group)), 2)
d <- gc_arcs(mutate(d0, n=Dist_wts*15 + 5) %>% slice(1:3), "lon0", "lat0", "lon1", "lat1", n="n")
expect_is(d, "data.frame")
expect_equal(ncol(d), 3)
expect_equal(length(unique(d$group)), 3)
})
d0 <- gc_arcs(d0, "lon0", "lat0", "lon1", "lat1", n=10, addStartEnd=FALSE)
test_that("gc_paths returns valid output", {
expect_error(gc_paths(slice(d0, 1:1000)), "Must provided 'group'.")
expect_error(gc_paths(slice(d0, 1:1000), "group"), "Must provided 'size'.")
expect_error(gc_paths(slice(d0, 1:1000), "group", size=1),
"Maximum segment size too small; line composition requires at least two points.")
d <- gc_paths(slice(d0, 1:1000), "group", size=5)
expect_is(d, "tbl_df")
expect_equal(ncol(d), ncol(d0) + 1)
d <- gc_paths(slice(d0, 1:1000) %>% mutate(dummy=1), "group", size=20)
expect_is(d, "data.frame")
expect_equal(ncol(d), ncol(d0) + 2)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.