test_that("ms_lines works with all classes", { out_json <- ms_lines(innerlines_poly) expect_s3_class(out_json, "json") expect_snapshot_value(out_json, style = "json2") expect_s3_class(ms_lines(unclass(innerlines_poly)), "geojson") expected_sp <- GeoJSON_to_sp(out_json) expect_equivalent(ms_lines(innerlines_poly_spdf), expected_sp) expect_equivalent( ms_lines(innerlines_poly_sp), as(expected_sp, "SpatialLines") ) expected_sf <- read_sf(unclass(out_json)) expected_sfc <- st_geometry(expected_sf) expect_equivalent(st_geometry(ms_lines(innerlines_poly_sf)), expected_sfc) expect_equivalent(ms_lines(innerlines_poly_sfc), expected_sfc) }) test_that("ms_lines works with fields specified", { out_json <- ms_lines(innerlines_poly, "foo") expect_s3_class(out_json, "geojson") expect_snapshot_value(out_json, style = "json2") expected_sp <- GeoJSON_to_sp(out_json) expect_equivalent(ms_lines(innerlines_poly_spdf, "foo"), expected_sp) expect_equivalent( ms_lines(innerlines_poly_sf, "foo")$RANK, c(2, 2, 1, 1, 0, 0, 0, 0) ) }) test_that("ms_lines errors correctly", { expect_error(ms_lines('{foo: "bar"}'), "Input is not valid geojson") # Don't test this as the V8 error throws a warning expect_warning( ms_lines(innerlines_poly, "bar"), "The command returned an empty response" ) expect_error( ms_lines(innerlines_poly_spdf, "bar"), "not all fields specified exist in input data" ) expect_error( ms_lines(innerlines_poly, 1), "fields must be a character vector" ) expect_error( ms_lines(innerlines_poly, force_FC = "true"), "force_FC must be TRUE or FALSE" ) expect_error( ms_lines(innerlines_poly_sfc, "foo"), "Do not specify fields for sfc classes" ) }) test_that("ms_innerlines works with sys = TRUE", { skip_if_not(has_sys_mapshaper()) expect_s3_class(ms_lines(innerlines_poly, sys = TRUE), "geojson") expect_snapshot_value(ms_lines(innerlines_poly, sys = TRUE), style = "json2") expect_s4_class( ms_lines(innerlines_poly_spdf, sys = TRUE), "SpatialLinesDataFrame" ) expect_s3_class(ms_lines(innerlines_poly_sf, sys = TRUE), "sf") })