tests/testthat/test_import_export.R

context('import/export functions')

# all in import_export.R

# 1. n38_import
test_that(
  'read from binary works as it should',
  c(
    n38_mat <- n38_import(system.file("extdata", "em38_demo.N38", package = "em38")),
    expect_is(n38_mat, 'matrix'),
    expect_type(n38_mat, 'raw'),
    expect_equal(ncol(n38_mat), 25L),
    expect_equal(nrow(n38_mat), 20028L),
    expect_equal(rawToChar(n38_mat[1,1]), "E"),
    expect_equal(rawToBits(n38_mat[1,1]), as.raw(c(1, 0, 1, 0, 0, 0, 1, 0)))
  )
)

# 2. n38_chunk
test_that(
  'chunking works correctly',
  c(
    data('n38_demo'),
    n38_chunks <- n38_chunk(n38_demo),
    expect_is(n38_chunks, 'list'),
    expect_equal(length(n38_chunks), 2L),
    expect_is(n38_chunks[[1]], 'matrix'),
    expect_type(n38_chunks[[1]], 'raw'),
    expect_equal(ncol(n38_chunks[[1]]), 25L),
    expect_equal(nrow(n38_chunks[[1]]), 2L),
    expect_is(n38_chunks[[2]], 'list'),
    expect_equal(length(n38_chunks[[2]]), 7L)
  )
)

# 3. n38_decode
test_that(
  'decode works correctly',
  c(
    data('n38_demo'),
    n38_chunks <- n38_chunk(n38_demo),
    n38_decoded <- n38_decode(n38_chunks),
    expect_is(n38_decoded, 'list'),
    expect_equal(length(n38_decoded), 2L),
    # file header
    expect_is(n38_decoded[[1]], 'list'),
    expect_equal(length(n38_decoded[[1]]), 9L),
    # survey line 1
    expect_is(n38_decoded[[2]], 'list'),
    expect_equal(length(n38_decoded[[2]]), 7L),
    # sl1 header
    expect_is(n38_decoded[[2]][[1]], 'list'),
    expect_equal(length(n38_decoded[[2]][[1]]), 5L),
    # sl1 cal_data
    expect_is(n38_decoded[[2]][[2]], 'data.frame'),
    expect_equal(nrow(n38_decoded[[2]][[2]]), 6L),
    expect_equal(ncol(n38_decoded[[2]][[2]]), 3L),
    # sl1 timer data
    expect_is(n38_decoded[[2]][[3]], 'list'),
    expect_equal(length(n38_decoded[[2]][[3]]), 2L),
    expect_equal(n38_decoded[[2]][[1]]$timestamp,
                 n38_decoded[[2]][[3]]$computer_time),
    # reading data
    expect_is(n38_decoded[[2]][[4]], 'data.frame'),
    expect_equal(nrow(n38_decoded[[2]][[4]]), 3164L),
    expect_equal(ncol(n38_decoded[[2]][[4]]), 10L),
    expect_equal(n38_decoded[[2]][[4]]$marker[1], 'no marker'),
    expect_equal(n38_decoded[[2]][[4]]$mode[1], 'Vertical'),
    # location data
    expect_is(n38_decoded[[2]][[5]], 'data.frame'),
    expect_equal(nrow(n38_decoded[[2]][[5]]), 4214L),
    expect_equal(ncol(n38_decoded[[2]][[5]]), 4L),
    # and the rest
    expect_is(n38_decoded[[2]][[6]], 'logical'),
    expect_is(n38_decoded[[2]][[7]], 'logical')
    )
)

# 3. n38_to_m38
test_that(
  'm38 conversion works correctly',
  c(
    n38_chunks <- n38_chunk(n38_demo),
    n38_decoded <- n38_decode(n38_chunks),
    m38_example <- n38_to_m38(n38_decoded),
    expect_is(m38_example, 'character'),
    expect_equal(length(m38_example), 4370L),
    expect_equal(m38_example[1], "EM38-MK2 V2.07 e       "),
    expect_equal(m38_example[2],
                 "L   1        BB100 W A0.200 e          16/03/2018 12:57:52"),
    expect_equal(m38_example[3],
                 "$GPGGA,015905.00,2726.53680,S,15126.05280,E,1,07,1.2,366.3,M,39.5,M,,*75,                  13:00:22.881"),
    expect_equal(m38_example[4],
                 "$GPGSA,M,3,05,12,15,20,21,25,29,,,,,,1.8,1.2,1.3*39,                                       13:00:22.917"),
    expect_equal(m38_example[5],
                 "SV01,        1.000,    204.401,      0.639,    146.900,      0.287,     34.299,     34.620,13:00:23.073")
  )
  )
obrl-soil/em38 documentation built on July 9, 2018, 3:26 a.m.