tests/testthat/test_hsa.R

dbpath <- rbedrock_example_world("example1.mcworld")
db <- bedrockdb(dbpath)

test_that("get_hsa_data() can read HSA data.", {
    hsa <- get_hsa_data(db, x = get_keys(db))
    expected_hsa <- tibble::tibble(
        tag = "PillagerOutpost",
        x1 = c(577, 577, 592, 592), y1 = 65, z1 = c(241, 256, 241, 256),
        x2 = c(591, 591, 592, 592), y2 = 86, z2 = c(255, 256, 255, 256),
        xspot = c(584, 584, 592, 592),
        yspot = c(82, 82, 82, 82),
        zspot = c(248, 256, 248, 256),
        dimension = 0,
        key = c(
            "chunk:36:15:0:57", "chunk:36:16:0:57", "chunk:37:15:0:57",
            "chunk:37:16:0:57"
        )
    )
    expect_equal(hsa, expected_hsa)
})

test_that("get_hsa_data() returns an empty table if no HSA is found.", {
    hsa <- get_hsa_data(db, "chunk:0:0:0:57")
    expected_hsa <- tibble::tibble(
        tag = character(0),
        x1 = integer(0), y1 = integer(0), z1 = integer(0),
        x2 = integer(0), y2 = integer(0), z2 = integer(0),
        xspot = integer(0),
        yspot = integer(0),
        zspot = integer(0),
        dimension = integer(0),
        key = character(0)
    )
    expect_equal(hsa, expected_hsa)
})

test_that("get_hsa_value() can read a single HSA data.", {
    hsa <- get_hsa_value(db, 36, 15, 0)

    expected_hsa <- tibble::tibble(
        tag = "PillagerOutpost",
        x1 = 577, y1 = 65, z1 = 241,
        x2 = 591, y2 = 86, z2 = 255,
        xspot = 584,
        yspot = 82,
        zspot = 248,
        dimension = 0,
        key = "chunk:36:15:0:57"
    )
    expect_equal(hsa, expected_hsa)

    expect_error(get_hsa_value(db, c("chunk:36:15:0:57", "chunk:36:16:0:57")))
})

test_that("get_hsa_value() returns an empty table if no HSA is found.", {
    hsa <- get_hsa_value(db, "chunk:0:0:0:57")
    expected_hsa <- tibble::tibble(
        tag = character(0),
        x1 = integer(0), y1 = integer(0), z1 = integer(0),
        x2 = integer(0), y2 = integer(0), z2 = integer(0),
        xspot = integer(0),
        yspot = integer(0),
        zspot = integer(0),
        dimension = integer(0),
        key = character(0)
    )
    expect_equal(hsa, expected_hsa)
})

test_that("put_hsa_data() can write HSA data.", {
    dat <- data.frame(
        x1 = 295, x2 = 300, z1 = 100, z2 = 110, y1 = 64, y2 = 70,
        tag = 2L, dimension = 0L
    )
    hsa <- put_hsa_data(db, dat, merge = FALSE)
    expected_hsa <- tibble::tibble(
        tag = "SwampHut",
        x1 = 295L, y1 = 64L, z1 = 100L,
        x2 = 300L, y2 = 70L, z2 = 110L,
        key = "chunk:18:6:0:57"
    )
    expect_equal(hsa, expected_hsa)

    expected_hsa <- tibble::tibble(
        tag = "SwampHut",
        x1 = 295L, y1 = 64L, z1 = 100L,
        x2 = 300L, y2 = 70L, z2 = 110L,
        xspot = (295 + 300 + 1) %/% 2,
        yspot = 70 - 4,
        zspot = (110 + 100 + 1) %/% 2,
        dimension = 0L,
        key = "chunk:18:6:0:57"
    )

    new_hsa <- get_hsa_data(db, "chunk:18:6:0:57")
    expect_equal(new_hsa, expected_hsa)

    dat1 <- data.frame(
        x1 = 0, x2 = 15, z1 = 0, z2 = 15, y1 = 64, y2 = 70,
        tag = "NetherFortress"
    )
    dat2 <- data.frame(
        x1 = 0, x2 = 16, z1 = 0, z2 = 15, y1 = 64, y2 = 70,
        tag = "SwampHut"
    )
    dat <- dplyr::bind_rows(dat1, dat2)
    hsa <- put_hsa_data(db, dat, merge = FALSE)

    expected_hsa <- tibble::tibble(
        tag = c("NetherFortress", "SwampHut", "SwampHut"),
        x1 = c(0, 0, 16), y1 = 64, z1 = c(0, 0, 0),
        x2 = c(15, 15, 16), y2 = 70, z2 = c(15, 15, 15),
        xspot = c(8, 8, 16),
        yspot = c(69, 66, 66),
        zspot = c(8, 8, 8),
        dimension = c(1, 0, 0),
        key = c("chunk:0:0:1:57", "chunk:0:0:0:57", "chunk:1:0:0:57")
    )

    new_hsa <- get_hsa_data(db, c(
        "chunk:0:0:1:57", "chunk:0:0:0:57",
        "chunk:1:0:0:57"
    ))
    expect_equal(new_hsa, expected_hsa)
})

test_that("put_hsa_data() can merge HSA data.", {
    dat <- data.frame(
        x1 = 295, x2 = 300,
        z1 = 100, z2 = 120,
        y1 = 64, y2 = 70,
        tag = 3L, dimension = 0L
    )
    hsa <- put_hsa_data(db, dat)

    expected_hsa <- tibble::tibble(
        tag = c("OceanMonument", "OceanMonument"),
        x1 = c(295, 295), y1 = c(64, 64), z1 = c(100, 112),
        x2 = c(300, 300), y2 = c(70, 70), z2 = c(111, 120),
        key = c("chunk:18:6:0:57", "chunk:18:7:0:57")
    )

    expect_equal(hsa, expected_hsa)

    new_hsa <- get_hsa_data(db, c("chunk:18:6:0:57", "chunk:18:7:0:57"))

    expected_hsa <- tibble::tibble(
        tag = c("SwampHut", "OceanMonument", "OceanMonument"),
        x1 = c(295, 295, 295), y1 = c(64, 64, 64), z1 = c(100, 100, 112),
        x2 = c(300, 300, 300), y2 = c(70, 70, 70), z2 = c(110, 111, 120),
        xspot = c(298, 298, 298),
        yspot = c(66, 69, 69),
        zspot = c(105, 106, 116),
        dimension = c(0, 0, 0),
        key = c("chunk:18:6:0:57", "chunk:18:6:0:57", "chunk:18:7:0:57")
    )

    expect_equal(new_hsa, expected_hsa)
})

test_that("put_hsa_value() can write HSA data.", {
    dat <- data.frame(
        x1 = 0, x2 = 15,
        z1 = 0, z2 = 15,
        y1 = 100, y2 = 110,
        tag = "SwampHut", dimension = 2
    )
    put_hsa_value(db, 0, 0, 2, dat)

    hsa <- get_hsa_value(db, "chunk:0:0:2:57")

    expected_hsa <- tibble::tibble(
        tag = "SwampHut",
        x1 = 0, y1 = 100, z1 = 0,
        x2 = 15, y2 = 110, z2 = 15,
        xspot = 8,
        yspot = 106,
        zspot = 8,
        dimension = 2,
        key = "chunk:0:0:2:57"
    )
    expect_equal(hsa, expected_hsa)
})

test_that("put_hsa_values() can write HSA data.", {
    dat1 <- data.frame(
        x1 = 0, x2 = 15, z1 = 0, z2 = 15, y1 = 40, y2 = 60,
        tag = 1
    )
    dat2 <- data.frame(
        x1 = 0, x2 = 15, z1 = 0, z2 = 15, y1 = 40, y2 = 60,
        tag = 2
    )

    dat <- list(dat1, dat2)

    put_hsa_values(db, c("chunk:0:0:1:57", "chunk:0:0:0:57"), values = dat)

    hsa <- get_hsa_data(db, c("chunk:0:0:1:57", "chunk:0:0:0:57"))

    expected_hsa <- tibble::tibble(
        tag = c("NetherFortress", "SwampHut"),
        x1 = 0, y1 = 40, z1 = 0,
        x2 = 15, y2 = 60, z2 = 15,
        xspot = 8,
        yspot = c(59, 56),
        zspot = 8,
        dimension = c(1, 0),
        key = c("chunk:0:0:1:57", "chunk:0:0:0:57")
    )
    expect_equal(hsa, expected_hsa)
})

# clean up
close(db)
fs::dir_delete(dbpath)

Try the rbedrock package in your browser

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

rbedrock documentation built on Oct. 7, 2023, 1:07 a.m.