# Hadley rules out hash as not helpful: https://groups.google.com/forum/#!msg/ggplot2/JEvC86l_otA/i7k0yTDt2_UJ
# vdiffr says may not be useful for sf objects - which is everything here :-(
# for the moment, limit to testing that the maps return ggplot objects, without fail
NZ_coast <- hm_get_test("coast")
NZ_buffer30 <- hm_get_test("buffer")
NZ_routes <- hm_get_test("route")
NZ_Buller <- hm_get_test("nofly")
test_that("Route mapping", {
airports <- make_airports(crs = crs_Pacific, warn = FALSE)
# speed map
expect_silent(z <- map_routes(NZ_coast, NZ_routes,
crs = crs_Pacific,
show_route="speed"))
expect_true("ggplot" %in% class(z))
# aircraft map
expect_silent(z <- map_routes(NZ_coast, NZ_routes,
crs = crs_Pacific,
show_route="aircraft"))
expect_true("ggplot" %in% class(z))
# time advantage - auto calculated
# add a no-fly zone to test those lines - even if routes ignore it
expect_silent(z <- map_routes(NZ_coast, NZ_routes,
crs = crs_Pacific,
avoid_map = NZ_Buller))
expect_true("ggplot" %in% class(z))
# circuity - auto calculated - on crs_Atlantic
expect_silent(z <- map_routes(NZ_coast, NZ_routes,
crs = crs_Pacific,
show_route = "circuity"))
expect_true("ggplot" %in% class(z))
# time advantage calculated explicitly + frills
rtes <- summarise_routes(NZ_routes, airports) %>%
st_set_geometry(NULL) %>%
select(fullRouteID, advantage_h)
routes <- NZ_routes %>%
filter(!is.na(phase)) %>% # remove non-routes
left_join(rtes, by = "fullRouteID") %>%
arrange(advantage_h)
expect_silent(z <- map_routes(NZ_coast, routes,
crs = crs_Pacific,
fat_map = NZ_buffer30,
ap_loc = airports,
refuel_airports =
airports %>% filter(APICAO=="NZWN"),
crow = TRUE,
route_envelope = TRUE))
expect_true("ggplot" %in% class(z))
# flights or seats plot
fc <- NZ_routes %>%
st_drop_geometry() %>%
filter(!is.na(phase)) %>% # remove non-routes
select(fullRouteID, acID) %>%
distinct() %>%
ungroup() %>%
mutate(flights = 1:n()) # an arbitrary value
expect_silent(z <- map_routes(NZ_coast, routes,
crs = crs_Pacific,
show_route = "traffic",
fat_map = NZ_buffer30,
ap_loc = airports,
forecast = fc, fc_var = "flights", fc_text = "flights per week",
refuel_airports =
airports %>% filter(APICAO=="NZWN")))
expect_true("ggplot" %in% class(z))
# and check if the fc_var is wrong
expect_error(z <- map_routes(NZ_coast, routes,
crs = crs_Pacific,
show_route = "traffic",
fat_map = NZ_buffer30,
ap_loc = airports,
forecast = fc, fc_var = "bananas", fc_text = "bananas per week",
refuel_airports =
airports %>% filter(APICAO=="NZWN")))
})
test_that("can plot flight profile", {
expect_silent(z <- profile_routes(NZ_routes |> filter(.data$routeID == "NZAA<>NZCH")))
expect_true("list" %in% class(z)) # returns a list
expect_true("ggplot" %in% class(z[[1]][[1]])) # buried in the cowplot
# and other parameter options - long
expect_silent(z <- profile_routes(NZ_routes |> filter(.data$routeID == "NZAA<>NZQN"),
yvar = "long"))
expect_true("ggplot" %in% class(z[[1]][[1]])) # buried in the cowplot
# and other parameter options - hours (explicit)
expect_silent(z <- profile_routes(NZ_routes |> filter(.data$routeID == "NZAA<>NZQN"),
yvar = "hour"))
expect_true("ggplot" %in% class(z[[1]][[1]])) # buried in the cowplot
# if too many routes
expect_warning(z <- profile_routes(NZ_routes,
yvar = "hour", n_max = 3))
expect_true("ggplot" %in% class(z[[1]][[1]])) # buried in the cowplot
})
test_that("can make range envelope", {
airports <- make_airports(crs = crs_Atlantic, warn = FALSE)
aircraft <- make_aircraft(warn = FALSE)
# test only a sample of points
# wkt seems to be machine-dependent so test fails on windows
# so strip out the values only
expect_snapshot_value(himach:::make_range_envelope(aircraft[1, ],
"LFPG",
airports,
envelope_points = 20) |>
unlist(),
style = "serialize",
tolerance = 0.05)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.