context("flagOverlappingHz")
# two overlapping horizons
z <- data.frame(
id = 'SPC',
top = c(0, 25, 25, 50, 75, 100, 100),
bottom = c(25, 50, 50, 75, 100, 125, 125)
)
depths(z) <- id ~ top + bottom
# basic functionality
test_that("flagOverlappingHz: perfect overlap in 2 horizons", {
.overlapFlag <- flagOverlappingHz(z)
# logical vector
expect_true(length(.overlapFlag) == nrow(z))
expect_true(inherits(.overlapFlag, 'logical'))
# not overlapping horizons
expect_true(all( !.overlapFlag[c(1, 4, 5)]))
# overlapping horizons
expect_true(all(.overlapFlag[c(2, 3, 6, 7)]))
})
z2 <- data.frame(
id = 'SPC',
top = c(0, 25, 25, 25, 50, 75, 100, 100),
bottom = c(25, 45, 50, 50, 75, 100, 125, 125)
)
depths(z2) <- id ~ top + bottom
test_that("flagOverlappingHz: imperfect in 1 horizon, perfect in 2 horizons", {
.overlapFlag <- flagOverlappingHz(z2)
# logical vector
expect_true(length(.overlapFlag) == nrow(z2))
expect_true(inherits(.overlapFlag, 'logical'))
# not overlapping horizons
expect_true(all(!.overlapFlag[c(1, 2, 5, 6)]))
# overlapping horizons
expect_true(all(.overlapFlag[c(3, 4, 7, 8)]))
})
# more complex edge case
x <- data.frame(peiid = c("1373969", "1373969", "1373969", "1373969",
"1373969", "1373969", "1373969", "1373969", "1373969", "1373969",
"1373969", "1373969"), hzdept = c(0L, 0L, 0L, 0L,
26L, 45L, 77L, 102L, 102L, 102L, 185L, 205L), hzdepb = c(26L,
26L, 26L, 26L, 45L, 77L, 102L, 185L, 185L, 185L, 205L, 220L),
hzname = c("Ap", "Ap", "Ap", "Ap", "Bt1", "Bt2", "BCt", "Cd",
"Cd", "Cd", "2C1", "2C2"), texture = c("L", "L", "L", "L",
"CL", "CL", "CL", "L", "L", "L", "SR- VFSL L", "S"))
depths(x) <- peiid ~ hzdept + hzdepb
test_that("edge case", {
expect_equal(as.logical(flagOverlappingHz(x)),
c(TRUE, TRUE, TRUE, TRUE,
FALSE, FALSE, FALSE,
TRUE, TRUE, TRUE,
FALSE, FALSE))
})
z3 <- data.frame(
id = 'SPC1',
top = c(0, 25, 25, 25, 50, 75, 100, 100),
bottom = c(25, 45, 50, 50, 75, 100, 125, 125)
)
z4 <- data.frame(
id = 'SPC2',
top = c(0, 25, 50, 75, 100),
bottom = c(25, 50, 75, 100, 125)
)
z5 <- rbind(z3, z4)
depths(z5) <- id ~ top + bottom
# test multiple profiles with some depths the same between both profiles
# but only the first profile has overlap (1 imperfect, 2 perfect)
test_that("multiple profiles, with and without overlap", {
.overlapFlag <- flagOverlappingHz(z5)
expect_false(any(.overlapFlag[9:13]))
})
z6 <- data.frame(
id = 'SPC1',
top = 0,
bottom = 100
)
z7 <- data.frame(
id = 'SPC2',
top = c(0, 0, 100),
bottom = c(100, 100, 200)
)
z8 <- rbind(z6, z7)
depths(z8) <- id ~ top + bottom
test_that("multiple profiles, edge case", {
# first single horizon profile matches depths that overlap in next profile
.overlapFlag <- flagOverlappingHz(z8)
expect_false(.overlapFlag[1])
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.