tests/testthat/test_version.R

#---TESTS
test_that("rSOILWAT2 object versions", {
  #--- Check for object classes "swInputData" and "swOutput"
  # Check version tag of input object
  sw_in <- rSOILWAT2::sw_exampleData
  expect_true(check_version(sw_in, level = "minor"))
  expect_true(
    check_version(sw_in, expected_version = "1.0.0", level = "minor")
  )

  # Check version tag of output object
  sw_out <- sw_exec(inputData = sw_in, echo = FALSE, quiet = TRUE)
  expect_true(check_version(sw_out, level = "patch"))
  expect_true(
    check_version(sw_out, expected_version = "1.0.0", level = "patch")
  )


  #--- devel: dash and dot are equivalent
  sw_in@version <- as.character(numeric_version("1.1.1-9000"))

  # devel level
  expect_true(
    check_version(sw_in, expected_version = "1.1.1.9000", level = "devel")
  )
  expect_true(
    check_version(sw_in, expected_version = "1.1.1-9000", level = "devel")
  )

  #--- Check each level of a version
  sw_in@version <- as.character(numeric_version("1.1.1-900.1"))

  # devel level
  expect_true(
    check_version(sw_in, expected_version = "1.1.1-900.1", level = "devel")
  )
  expect_false(
    check_version(sw_in, expected_version = "1.1.1-900.2", level = "devel")
  )

  # patch level
  expect_true(
    check_version(sw_in, expected_version = "1.1.1-900.1", level = "patch")
  )
  expect_true(
    check_version(sw_in, expected_version = "1.1.1-900.2", level = "patch")
  )
  expect_true(
    check_version(sw_in, expected_version = "1.1.1", level = "patch")
  )
  expect_false(
    check_version(sw_in, expected_version = "1.1.2", level = "patch")
  )

  # minor level
  expect_true(
    check_version(sw_in, expected_version = "1.1.1-900.1", level = "minor")
  )
  expect_true(
    check_version(sw_in, expected_version = "1.1.1-900.2", level = "minor")
  )
  expect_true(
    check_version(sw_in, expected_version = "1.1.1", level = "minor")
  )
  expect_true(
    check_version(sw_in, expected_version = "1.1.2", level = "minor")
  )
  expect_false(
    check_version(sw_in, expected_version = "1.2.0", level = "minor")
  )

  # major level
  expect_true(
    check_version(sw_in, expected_version = "1.1.1-900.1", level = "major")
  )
  expect_true(
    check_version(sw_in, expected_version = "1.1.1-900.2", level = "major")
  )
  expect_true(
    check_version(sw_in, expected_version = "1.1.1", level = "major")
  )
  expect_true(
    check_version(sw_in, expected_version = "1.1.2", level = "major")
  )
  expect_true(
    check_version(sw_in, expected_version = "1.2.0", level = "major")
  )
  expect_false(
    check_version(sw_in, expected_version = "2.0.0", level = "major")
  )


  #--- Check that numeric versions are passed through
  v <- as.numeric_version(getNamespaceVersion("rSOILWAT2"))
  expect_identical(get_version(v), as.character(v))
  v <- packageVersion("base")
  expect_identical(get_version(v), as.character(v))


  #--- Check for other object classes (ANY-method): return `NA_character_`
  expect_identical(get_version(), NA_character_)
  expect_identical(get_version(NA), NA_character_)
  expect_identical(get_version(NULL), NA_character_)
  expect_identical(get_version(1), NA_character_)
  expect_identical(get_version(list()), NA_character_)
  expect_identical(
    get_version(try(stop("error"), silent = TRUE)),
    NA_character_
  )
  expect_identical(get_version(swSoils_Layers(sw_in)), NA_character_)

  expect_false(check_version(NA))
})


test_that("rSOILWAT2 object timestamps", {
  #--- Check for object classes "swInputData" and "swOutput"
  # Check time stamp of input object
  sw_in <- rSOILWAT2::sw_exampleData
  expect_type(get_timestamp(sw_in), "double")
  expect_s3_class(format_timestamp(sw_in), "POSIXct")

  # Check version tag of output object
  t <- Sys.time()
  sw_out <- sw_exec(inputData = sw_in, echo = FALSE, quiet = TRUE)
  expect_type(get_timestamp(sw_out), "double")
  expect_s3_class(format_timestamp(sw_out), "POSIXct")
  expect_gt(format_timestamp(sw_out), t)


  #--- Check for other object classes (ANY-method): return `NA_real_`
  expect_equal(get_timestamp(), NA_real_)
  expect_equal(get_timestamp(NA), NA_real_)
  expect_equal(get_timestamp(NULL), NA_real_)
  expect_equal(get_timestamp(1), NA_real_)
  expect_equal(get_timestamp(list()), NA_real_)
  expect_equal(get_timestamp(try(stop("error"), silent = TRUE)), NA_real_)
  expect_equal(get_timestamp(swSoils_Layers(sw_in)), NA_real_)

  expect_equal(format_timestamp(NA), as.POSIXct(NA))
})
Burke-Lauenroth-Lab/rSOILWAT2 documentation built on Dec. 9, 2023, 1:46 a.m.