test_that("map() returns error on incorrect parameters", { skip_if_offline() ppi <- project_as_ppi(example_scan) basemap <- download_basemap(ppi, maptype = "toner-lite") # return error when input object is not of class ppi expect_error( map("a"), regexp = 'no applicable method for \'map\' applied to an object of class "character"', fixed = TRUE ) # return error when quantity is passed as an argument expect_error( map(ppi, quantity = 4), regexp = "unknown function argument 'quantity`. Did you mean `param`?", fixed = TRUE ) # return error when param isn't a character string expect_error( map(ppi, param = 4), regexp = "'param' should be a character string with a valid scan parameter name.", fixed = TRUE ) # return error on unexisting parameter expect_error( map(ppi, param = "not_a_parameter"), regexp = "no scan parameter 'not_a_parameter' in this ppi", fixed = TRUE ) # return error on non projected ppi ppi_no_crs <- ppi raster::crs(ppi_no_crs$data) <- NA expect_error( map(ppi_no_crs), regexp = "Not a projected ppi, map() expects a ppi generated by project_as_ppi() with argument project=TRUE", fixed = TRUE ) # basemap wasn't made with download_basemap() or download_basemap() is broken basemap_no_ppi <- basemap attr(basemap_no_ppi,"ppi") <- FALSE expect_error( map(ppi, map = basemap_no_ppi), regexp = "Not a ppi map, use download_basemap() to download a map.", fixed = TRUE ) # return error for basemap for different radar location basemap_somewhere_else <- basemap attributes(basemap_somewhere_else)$geo$lat <- 57 expect_error( map(ppi, map = basemap_somewhere_else), regexp = "Not a basemap for this radar location.", fixed = TRUE ) # return error when palette isn't a character vector expect_error( map(ppi, map = basemap, palette = 123), regexp = "palette should be a character vector with hex color values", fixed = TRUE ) })