tests/testthat/test_random.R

test_that("default bedrock_random seed is 5489", {
    state_default <- bedrock_random_state()

    bedrock_random_seed(5489L)
    state_5489 <- bedrock_random_state()

    expect_equal(state_default, state_5489)
})

test_that("the 10,000th value of default bedrock_random is 4123659995", {
    bedrock_random_seed(5489L)

    values <- bedrock_random_get_uint(10000)
    expect_equal(values[10000], 4123659995)
})

test_that("bedrock_random_state() restores state", {
    bedrock_random_seed(5490L)

    saved_state <- bedrock_random_state()
    values1 <- bedrock_random_get_uint(10000)
    state1 <- bedrock_random_state(saved_state)

    values2 <- bedrock_random_get_uint(10000)
    state2 <- bedrock_random_state()

    expect_equal(values1, values2)
    expect_equal(state1, state2)
})

test_that("bedrock_random_uint32 works", {
    bedrock_random_seed(5489L)

    values <- bedrock_random_get_uint(10000)
    expect_equal(values[10000], 4123659995)
})

test_that("bedrock_random_uint32 works with a maximum value", {
    bedrock_random_seed(5489L)

    values <- bedrock_random_get_uint(10000, 17)
    expect_equal(values[10000], 4123659995 %% 17)
})

test_that("bedrock_random_int32 works", {
    bedrock_random_seed(5489L)

    values <- bedrock_random_get_int(10000)
    expect_equal(values[10000], 4123659995 %/% 2)
})

test_that("bedrock_random_int32 works with a maximum value", {
    bedrock_random_seed(5489L)

    values <- bedrock_random_get_int(10000, 17)
    expect_equal(values[10000], 4123659995 %% 17)

    values <- bedrock_random_get_int(10, 0)
    expect_equal(values, rep(0, 10L))
})

test_that("bedrock_random_int32 works with a minimum and a maximum value", {
    bedrock_random_seed(5489L)

    values <- bedrock_random_get_int(10000, 10, 17)
    expect_equal(values[10000], (4123659995 %% 7) + 10)

    values <- bedrock_random_get_int(10, 20, 20)
    expect_equal(values, rep(20, 10L))

    values <- bedrock_random_get_int(10, 20, 10)
    expect_equal(values, rep(20, 10L))
})

test_that("bedrock_random_double works", {
    bedrock_random_seed(5489L)

    values <- bedrock_random_get_double(10000)
    expect_equal(values[10000], 4123659995 / 4294967296.0, tolerance = 2^-23)
})

test_that("bedrock_random_float works", {
    bedrock_random_seed(5489L)

    values <- bedrock_random_get_float(10000)
    expect_equal(values[10000], 4123659995 / 4294967296.0, tolerance = 2^-23)
})

test_that("bedrock_random_float works with a maximum value", {
    bedrock_random_seed(5489L)

    values <- bedrock_random_get_float(10000, 10)
    expect_equal(values[10000], 9.60114383697509765625, tolerance = 2^-23)
})

test_that("bedrock_random_float works with a minimum and a maximum value", {
    bedrock_random_seed(5489L)

    values <- bedrock_random_get_float(10000, 10, 20)
    expect_equal(values[10000], 19.60114288330078125, tolerance = 2^-23)
})

test_that("bedrock_random_create_seed1 finds slime chunks", {
    is_slime_chunk <- function(x, z) {
        seed <- bedrock_random_create_seed(x, z, 0x1f1f1f1f, 1, 0, type = 1)
        bedrock_random_seed(seed)
        bedrock_random_get_uint(1, 10) == 0
    }

    expect_equal(is_slime_chunk(0, 0), FALSE)
    expect_equal(is_slime_chunk(3, 1), TRUE)
    expect_equal(is_slime_chunk(-61, -59), TRUE)
    expect_equal(is_slime_chunk(-61, -60), FALSE)
})

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.