tests/testthat/test_tags.R

test_that("add tags to an object without tags", {
  a <- list()
  tags <- list(foo = "abc", bar = 123, baz = list(qux = "xyz"))
  b <- tag_add(a, tags)
  expect_equal(tag_get(b, "foo"), "abc")
  expect_equal(tag_get(b, "bar"), 123)
  expect_equal(tag_get(b, "baz"), list(qux = "xyz"))
  expect_equal(tag_get_all(b), tags)
})

test_that("add tags to an object with tags", {
  a <- list()
  b <- tag_add(a, list(foo = "abc", bar = 123, baz = list(qux = "xyz")))
  c <- tag_add(b, list(bar = 456))
  expect_equal(tag_get(c, "foo"), "abc")
  expect_equal(tag_get(c, "bar"), 456)
  expect_equal(tag_get(c, "baz"), list(qux = "xyz"))
})

test_that("delete all tags", {
  inner1 <- list(foo = 1)
  inner1 <- tag_add(inner1, list(test = "list_item_tag"))
  inner2 <- list(foo = 2)
  inner2 <- tag_add(inner2, list(test = "list_item_tag"))
  inner3 <- list(foo = 3)
  inner3 <- tag_add(inner3, list(test = "list_item_tag"))
  inner <- list(inner1, inner2, inner3)
  inner <- tag_add(inner, list(test = "list_tag"))

  outer <- list(inner = inner)
  outer <- tag_add(outer, list(test = "structure_tag"))

  expect_equal(tag_get(outer, "test"), "structure_tag")
  expect_equal(tag_get(outer$inner, "test"), "list_tag")

  result <- tag_del(outer)

  expect_equal(tag_get(result, "test"), "")
  expect_equal(tag_get(result$inner, "test"), "")
  expect_equal(tag_get(result$inner[[1]], "test"), "")
  expect_equal(result$inner[[2]]$foo, 2)
})

test_that("delete some tags", {
  inner1 <- list(foo = 1)
  inner1 <- tag_add(inner1, list(foo1 = "list_item_tag"))
  inner2 <- list(foo = 2)
  inner2 <- tag_add(inner2, list(foo2 = "list_item_tag"))
  inner3 <- list(foo = 3)
  inner3 <- tag_add(inner3, list(foo2 = "list_item_tag"))
  inner <- list(inner1, inner2, inner3)
  inner <- tag_add(inner, list(bar1 = "list_tag"))

  outer <- list(inner = inner)
  outer <- tag_add(outer, list(bar1 = "structure_tag"))

  expect_equal(tag_get(outer, "bar1"), "structure_tag")
  expect_equal(tag_get(outer$inner, "bar1"), "list_tag")
  expect_equal(tag_get(outer$inner[[1]], "foo1"), "list_item_tag")
  expect_equal(tag_get(outer$inner[[2]], "foo1"), "")
  expect_equal(tag_get(outer$inner[[3]], "foo1"), "")
  expect_equal(tag_get(outer$inner[[1]], "foo2"), "")
  expect_equal(tag_get(outer$inner[[2]], "foo2"), "list_item_tag")
  expect_equal(tag_get(outer$inner[[3]], "foo2"), "list_item_tag")

  result <- tag_del(outer, "foo2")

  expect_equal(tag_get(outer, "bar1"), "structure_tag")
  expect_equal(tag_get(outer$inner, "bar1"), "list_tag")
  expect_equal(tag_get(result$inner[[1]], "foo1"), "list_item_tag")
  expect_equal(tag_get(result$inner[[2]], "foo1"), "")
  expect_equal(tag_get(result$inner[[3]], "foo1"), "")
  expect_equal(tag_get(result$inner[[1]], "foo2"), "")
  expect_equal(tag_get(result$inner[[2]], "foo2"), "")
  expect_equal(tag_get(result$inner[[3]], "foo2"), "")
})

#-------------------------------------------------------------------------------

test_that("types", {
  expect_equal(type(List()), "list")
  expect_equal(type(Map()), "map")
  expect_equal(type(Scalar()), "scalar")
  expect_equal(type(Structure(Foo = logical(0))), "structure")

  expect_equal(type(c(1, 2)), "list")
  expect_equal(type(list(1, 2, 3)), "list")
  expect_equal(type(1), "scalar")
  expect_equal(type(c(a = 1, b = 2, c = 3)), "structure")
  expect_equal(type(list(a = 1, b = 2, c = 3)), "structure")
})

Try the paws.common package in your browser

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

paws.common documentation built on Nov. 12, 2023, 1:08 a.m.