Nothing
test_that("line segments get merged", {
# two connected line segments get merged
z <- matrix(c(0, 0, 1, 1, 1, 1), ncol = 3, nrow = 2, byrow = TRUE)
out <- isolines(x = 1:3, y = 2:1, z, levels = 0.5)
expect_setequal(
10000 * out[[1]]$x + out[[1]]$y,
10000 * c(1, 2, 2.5) + c(1.5, 1.5, 2.0)
)
expect_equal(out[[1]]$id, rep(1, 3))
# two unconnected line segments don't get merged
z <- matrix(c(0, 1, 0, 0, 1, 1), ncol = 3, nrow = 2, byrow = TRUE)
out <- isolines(x = 1:3, y = 2:1, z, levels = 0.5)
expect_setequal(
10000 * out[[1]]$x + out[[1]]$y,
10000 * c(2.5, 3.0, 1.5, 1.5) + c(2.0, 1.5, 2.0, 1.0)
)
expect_setequal(out[[1]]$id, c(1:2))
expect_equal(length(out[[1]]$id), 4)
# two separate lines get merged in second row
z <- matrix(c(0, 1, 0, 0, 1, 0, 0, 0, 0), ncol = 3, nrow = 3, byrow = TRUE)
out <- isolines(x = 1:3, y = 3:1, z, levels = 0.5)
expect_setequal(
10000 * out[[1]]$x + out[[1]]$y,
10000 * c(2.5, 2.5, 2.0, 1.5, 1.5) + c(3.0, 2.0, 1.5, 2.0, 3.0)
)
expect_equal(out[[1]]$id, rep(1, 5))
# circle gets closed
z <- matrix(c(0, 0, 0, 0, 1, 0, 0, 0, 0), ncol = 3, nrow = 3, byrow = TRUE)
out <- isolines(x = 1:3, y = 3:1, z, levels = 0.5)
# circle is closed
expect_equal(out[[1]]$x[1], out[[1]]$x[5])
expect_equal(out[[1]]$y[1], out[[1]]$y[5])
# coords are correct
expect_setequal(
10000 * out[[1]]$x + out[[1]]$y,
10000 * c(2.5, 2.0, 1.5, 2.0, 2.5) + c(2.0, 2.5, 2.0, 1.5, 2.0)
)
expect_equal(out[[1]]$id, rep(1, 5))
})
test_that("NAs are handled correctly", {
z <- matrix(c(NA, 0, 0, 0, 1, 1, 0, 1, 1), ncol = 3, nrow = 3, byrow = TRUE)
out <- isolines(x = 1:3, y = 3:1, z, levels = 0.5)
expect_setequal(
10000 * out[[1]]$x + out[[1]]$y,
10000 * c(1.5, 1.5, 2.0, 3.0) + c(2.0, 1.0, 2.5, 2.5)
)
expect_setequal(out[[1]]$id, c(1:2))
expect_equal(length(out[[1]]$id), 4)
})
test_that("All elementary segments are calculated correctly", {
# a matrix that requires all elementary segments for isolines
z <- matrix(
c(
0,
0,
0,
1,
1,
0,
1,
1,
0,
0,
0,
1,
1,
0,
1,
1,
0,
1,
1,
0,
1,
1,
0,
0,
1,
1,
0,
0,
0,
1,
1,
0,
1,
0,
1,
1,
0,
0,
0,
1
),
ncol = 8,
nrow = 5,
byrow = TRUE
)
out <- isolines(x = 1:8, y = 5:1, z, levels = 0.5)
expect_setequal(
10000 * out[[1]]$x + out[[1]]$y,
10000 *
c(
7.5,
7.0,
6.0,
5.5,
5.0,
4.5,
4.0,
3.5,
3.0,
2.5,
3.0,
4.0,
4.5,
2.5,
2.0,
1.5,
8.0,
7.0,
6.5,
7.0,
7.5,
8.0,
6.5,
6.5,
6.0,
5.5,
5.5,
3.5,
3.5,
3.0,
2.0,
1.5,
1.0
) +
c(
1.0,
1.5,
1.5,
2.0,
2.5,
3.0,
3.5,
3.0,
2.5,
2.0,
1.5,
1.5,
1.0,
1.0,
1.5,
1.0,
3.5,
3.5,
3.0,
2.5,
2.0,
1.5,
5.0,
4.0,
3.5,
4.0,
5.0,
5.0,
4.0,
3.5,
3.5,
3.0,
2.5
)
)
expect_setequal(out[[1]]$id, c(1:5))
expect_equal(length(out[[1]]$id), 33)
})
test_that("Saddles", {
# a matrix that contains all saddles (there are only two)
z <- matrix(c(0, 1, 0, 1, 0, 1), ncol = 3, nrow = 2, byrow = TRUE)
out <- isolines(x = 1:3, y = 2:1, z, levels = 0.5)
expect_setequal(
10000 * out[[1]]$x + out[[1]]$y,
10000 *
c(2.5, 3.0, 2.5, 2.0, 1.5, 1.5, 1.0) +
c(2.0, 1.5, 1.0, 1.5, 1.0, 2.0, 1.5)
)
expect_setequal(out[[1]]$id, c(1:3))
expect_equal(length(out[[1]]$id), 7)
out <- isolines(x = 1:3, y = 2:1, z, levels = 0.6)
expect_setequal(
10000 * out[[1]]$x + out[[1]]$y,
10000 *
c(1.6, 2.0, 2.4, 3.0, 2.6, 1.0, 1.4) +
c(2.0, 1.6, 2.0, 1.4, 1.0, 1.4, 1.0)
)
expect_setequal(out[[1]]$id, c(1:3))
expect_equal(length(out[[1]]$id), 7)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.