tests/testthat/test_geod.R

library(oce)
test_that("forward=inverse", {
    data(section)
    lon <- section[["longitude", "byStation"]]
    lat<- section[["latitude", "byStation"]]
    xy <- geodXy(lon, lat, longitudeRef=lon[1], latitudeRef=lat[1])
    LONLAT <- geodXyInverse(xy$x, xy$y, longitudeRef=lon[1], latitudeRef=lat[1])
    err <- mean(sqrt((lon-LONLAT$longitude)^2 + (lat-LONLAT$latitude)^2))
    expect_equal(lon, LONLAT$longitude, tolerance=1e-5) # 1m criterion; basin-wide data
    expect_equal(lat, LONLAT$latitude, tolerance=1e-5) # 1m criterion; basin-wide data
    ## Test NA functioning
    lonNA <- lon
    lonNA[100] <- NA
    latNA <- lat
    latNA[100] <- NA
    xyNA <- geodXy(lonNA, latNA, longitudeRef=lon[1], latitudeRef=lat[1])
    expect_true(is.na(xyNA$x[100]))
    expect_true(is.na(xyNA$y[100]))
    LONLATNA <- geodXyInverse(xyNA$x, xyNA$y, longitudeRef=lon[1], latitudeRef=lat[1])
    expect_true(is.na(LONLATNA$longitude[100]))
    expect_true(is.na(LONLATNA$latitude[100]))
    i <- seq_along(lon)
    expect_equal(xyNA$x[-100], xy$x[-100])
    expect_equal(xyNA$y[-100], xy$y[-100])
    expect_equal(LONLATNA$longitude[-100], lon[-100], tolerance=1e-5)
    expect_equal(LONLATNA$latitude[-100], lat[-100], tolerance=1e-5)

})

test_that("geodDist()", {
    ## Test for same values after rewriting the C code in C++.
    d <- geodDist(10, 45, 10, 46)
    expect_equal(d, 111.1415, tolerance=1e-4)
    data(section)
    expect_equal(head(geodDist(section)),
        c(0.00000000, 19.32428588, 41.97088286, 55.38400049,
            77.12095421, 97.43227620))
    expect_equal(head(geodDist(section, alongPath=TRUE)),
        c(0.00000000, 19.32428588, 41.98024777, 55.45123647,
            77.19516929, 110.46625932))
    expect_equal(head(geodDist(section, alongPath=FALSE)),
        c(0.00000000, 19.32428588, 41.97088286, 55.38400049,
            77.12095421, 97.43227620))
    expect_equal(tail(geodDist(section, alongPath=FALSE)),
        c(5587.849412, 5599.757509, 5610.041722, 5621.557394,
            5629.160056, 5633.492666))
})

test_that("geodDist() with vector locations", {
    lon1 <- c(-63, -63)
    lat1 <- c(45, 46)
    d1 <- geodDist(lon1, lat1, alongPath=FALSE)
    expect_equal(d1, c(0, 111.141548474209))
    expect_equal(d1, geodDist(lon1, lat1, lon1[1], lat1[1], alongPath=FALSE))
})

Try the oce package in your browser

Any scripts or data that you put into this service are public.

oce documentation built on July 9, 2023, 5:18 p.m.