tests/testthat/test-56-modify-languages.R

test_that('LANGUAGE modified', {
  x <-
    'BEXSTA' %>%
    get_data_path() %>%
    readRDS() %>%
    px()

  expect_true(is.null(px_language(x)))
  expect_identical(px_languages(x), NULL)

  x2 <- px_language(x, "sv")
  expect_identical(px_language(x2), "sv")
  expect_identical(px_languages(x2), NULL)

  x3 <- px_languages(x2, "sv")
  expect_identical(px_language(x3), "sv")
  expect_identical(px_languages(x3), c("sv"))

  expect_error(px_languages(x3, "en"), regexp = "LANGUAGE is not in")

  x4 <-
    x3 %>%
    px_language(NULL) %>%
    px_languages("en")

  expect_identical(px_language(x4), NULL)
  expect_identical(px_languages(x4), c("en"))

  x5 <- px_languages(x4, NULL)

  expect_identical(px_languages(x5), NULL)

  # Creates mandatory keywords for all languages
  expect_all_mandatory_keywords_return_non_na_values <- function(x) {
    mandatory_keyword_values <-
      mandatory_keywords() %>%
      sapply(function(keyword) {
        f <- get(keyword_to_function(keyword))
        f(x)
      })

    any_na_values <- function(l) {
      if (is.data.frame(l)) {
        any(is.na(l$value))
      } else {
        is.na(l)
      }
    }

    sapply(mandatory_keyword_values, any_na_values) %>%
      any() %>%
      expect_false()
  }

  x6 <-
    x %>%
    px_language('da')

  x7 <-
    x %>%
    px_languages(c("da", "kl"))

  expect_all_mandatory_keywords_return_non_na_values(x6)
  expect_all_mandatory_keywords_return_non_na_values(x7)

  # Runs without errors
  x %>%
    px_languages(c("en", "kl")) %>%
    px_language("en")

  x %>%
    px_languages(c("en", "kl")) %>%
    px_language("dk")

  # Setting language doesn't interfere with languages
  x_before <-
    population_gl %>%
    px() %>%
    px_languages(c("en", "da", "kl"))

  x_after <-
    x_before %>%
    px_language("en")

  expect_equal(px_languages(x_after), c("en", "da", "kl"))

  expect_identical(x_before$table2, x_after$table2)
})

Try the pxmake package in your browser

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

pxmake documentation built on April 11, 2025, 6:06 p.m.