1context("Munch")
2
3test_that("interp works", {
4    single_interp_test <- function(start, end, n) {
5        i <- interp(start, end, n)
6        info <- paste0("start: ", start, "; end: ", end, "; n: ", n)
7        expect_equal(length(i), n, info = info)
8        expect_true(start %in% i, info = info)
9        expect_false(end %in% i, info = info)
10        expect_true(all(i >= start), info = info)
11        expect_true(all(i <= end), info = info)
12    }
13    single_interp_test(0, 1, 1)
14    single_interp_test(0, 1, 2)
15    single_interp_test(0, 1, 7)
16    single_interp_test(-23, 56, 1)
17    single_interp_test(-23, 56, 4)
18    single_interp_test(31.276, 34.443, 1)
19    single_interp_test(31.276, 34.443, 100)
20})
21
22test_that("munch_data works", {
23    single_munch_test <- function(data, dist=NULL, segment_length = 0.01) {
24        md <- munch_data(data, dist, segment_length)
25        # all rows of dat are in md
26        expect_equal(nrow(merge(md, dat)), nrow(dat))
27        expect_true(nrow(md) >= nrow(dat))
28    }
29    dat <- data_frame(x =     c(0,  60, 30, 20, 40, 45),
30                      y =     c(1,  1,  2,  2,  2,  2),
31                      group = c(1L, 1L, 1L, 2L, 2L, 2L))
32    dist <- dist_euclidean(dat$x, dat$y)
33    dist[dat$group[-1] != dat$group[-nrow(dat)]] <- NA
34    single_munch_test(dat, dist)
35    single_munch_test(dat, dist, segment_length = 10)
36    single_munch_test(dat, dist, segment_length = 100)
37    dist <- coord_polar(theta = "x")$distance(dat$x, dat$y,
38                           list(r.range = range(c(0,dat$y)),
39                                theta.range = range(dat$x)))
40    dist[dat$group[-1] != dat$group[-nrow(dat)]] <- NA
41    single_munch_test(dat, dist)
42    single_munch_test(dat, dist, segment_length = 10)
43    single_munch_test(dat, dist, segment_length = 100)
44    dist <- coord_polar(theta = "y")$distance(dat$x, dat$y,
45                           list(r.range = range(c(0,dat$x)),
46                                theta.range = range(dat$y)))
47    dist[dat$group[-1] != dat$group[-nrow(dat)]] <- NA
48    single_munch_test(dat, dist)
49    single_munch_test(dat, dist, segment_length = 10)
50    single_munch_test(dat, dist, segment_length = 100)
51})
52