tests/testthat/test-hex.R

test_that("read_hex() and write_hex()", {
    font_file <- system.file("fonts/spleen/spleen-8x16.hex.gz", package = "bittermelon")
    font <- read_hex(font_file)
    expect_length(font, 837L)
    expect_true(is_bm_font(font))

    font <- read_hex(font_file, ucp = block2ucp("Basic Latin"))
    expect_length(font, 95L)

    expect_true(any(grepl(" * Spleen is released under the BSD 2-Clause",
                          attr(font, "comments"))))

    f <- tempfile(fileext = ".hex.gz")
    write_hex(font, gzfile(f))
    font2 <- read_hex(f)
    unlink(f)

    plus_sign_code_point <- name2ucp("PLUS SIGN") # code point U+002B
    expect_equal(font[[plus_sign_code_point]], font2[[plus_sign_code_point]])

    # 16x16 hex glyph with a 9 in it
    h32 <- "06DC:0000012809F80900060000000000000000000000000000000000000000000000"
    c32 <- "U+06DC"
    f32 <- read_hex(textConnection(h32))

    f <- tempfile(fileext = ".hex")
    write_hex(f32, f)
    f32_2 <- read_hex(f)
    unlink(f)

    expect_equal(f32[[c32]], f32_2[[c32]])

    expect_equal(length(read_hex(textConnection(""))), 0L)

    skip_if(!cli::is_utf8_output())
    skip_if_not_installed("withr")
    withr::local_options(bm_options(default = TRUE))
    verify_output("txt/glyph32_with_9.txt",
                  print(f32[[c32]]),
                  unicode = TRUE)
})
trevorld/bittermelon documentation built on Dec. 24, 2024, 10:33 p.m.