library(track2KBA)
library(sp)
library(sf)
dat <- data.frame(Longitude = rep(c(1:10, 10:1), 2),
Latitude = rep(c(1:10, 10:1), 2),
ID = c(rep("A", 20), rep("B", 20)),
DateTime = format(
ymd_hms("2021-01-01 00:00:00") + hours(0:19))
)
colony <- data.frame(Longitude = dat$Longitude[1], Latitude = dat$Latitude[1])
## test that data.frame input returns SPDF object
expect_identical(class(
tripSplit(dat, colony=colony, innerBuff = 1, returnBuff = 1))[[1]],
"SpatialPointsDataFrame")
## test that no NAs returned when DateTime is input as a ymd_HMS string
dat2 <- dat %>% mutate(DateTime = as.character(DateTime))
expect_true(
sum(
is.na(
tripSplit(dat2, colony=colony, innerBuff = 1, returnBuff = 1)$DateTime)
) == 0)
## test that SPDFs and sf objects return error message
xy <- dat[,c(1,2)]
dat_spdf <- sp::SpatialPointsDataFrame(
data = dat, coords = xy,
proj4string =
sp::CRS("+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0")
)
dat_sf <- sf::st_as_sf(dat_spdf)
expect_error(tripSplit(dat_spdf, colony=colony, innerBuff = 1, returnBuff = 1))
expect_error(tripSplit(dat_sf, colony=colony, innerBuff = 1, returnBuff = 1))
## no duration specification still works based on buffs
expect_true(
length(unique(tripSplit(dat, colony=colony,
innerBuff = 1, returnBuff = 1,
rmNonTrip=TRUE)$tripID)) == 2,
info = "When no duration specified"
)
## check that innerBuff works
expect_true(
all(unique( tripSplit(dat, colony=colony,
innerBuff = 100000000, returnBuff = 1,
rmNonTrip = FALSE)$tripID) == "-1"),
info = "innerBuff check 1"
)
## function warns about timestamp duplicates in data
dat3 <- data.frame(Longitude = rep(c(1:2, 2:1)),
Latitude = rep(c(1:2, 2:1)),
ID = rep("A", 4),
DateTime = format(
ymd_hms("2021-01-01 00:00:00") + hours(c(0, 0:2)))
)
expect_message(
tripSplit(dat3, colony=colony, innerBuff = 1, returnBuff = 1, duration = 0.5)
)
## check that returnBuff works
dat2 <- dat[1:10, ]
expect_true(
all(unique( tripSplit(dat2, colony=colony,
innerBuff = 1, returnBuff = 1,
rmNonTrip = TRUE)$Returns) == "No"),
info = "returnBuff check 1"
)
expect_false(
all(unique( tripSplit(dat2, colony=colony,
innerBuff = 1, returnBuff = 2000000,
rmNonTrip = TRUE)$Returns) == "No"),
info = "returnBuff check 1"
)
## test verbose option
expect_silent(tripSplit(dat2, colony=colony,
innerBuff = 1, returnBuff = 1, duration=0/5,
verbose=FALSE))
## check that rmNonTrip option works
expect_false(
"-1" %in% unique( tripSplit(dat, colony=colony,
innerBuff = 1, returnBuff = 1,
rmNonTrip = TRUE)$tripID),
info = "rmNonTrip check 1"
)
expect_true(
"-1" %in% unique( tripSplit(dat, colony=colony,
innerBuff = 1, returnBuff = 1,
rmNonTrip = FALSE)$tripID),
info = "rmNonTrip check 2"
)
## test colony specifications
colony <- data.frame(Longitude = c(1,2),
Latitude = c(1,2),
ID = c("A", "B"))
expect_true(
length(unique(tripSplit(dat, colony=colony,
innerBuff = 1, returnBuff = 1,
nests = TRUE)$tripID)) == 4,
info = "colony check 1"
)
expect_error(tripSplit(dat, colony=colony,
innerBuff = 1, returnBuff = 1, duration = 0.5,
nests = FALSE),
info = "colony check 2"
)
colnames(colony) <- c("longitude", "latitude")
expect_error(tripSplit(dat, colony=colony, innerBuff = 1, returnBuff = 1),
info = "colony check 2"
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.