test_that("Basic im and export works", { rr <- ruleset( rule(mpg > 10), rule(cyl %in% c(4, 6, 8)) ) file <- tempfile(fileext = ".yml") write_rules(rr, file) expect_equal( readLines(file), c( "meta: ~", "data-columns: []", "data-rules:", "- name: 'Rule for: mpg'", " expr: mpg > 10", " allow_na: no", " negate: no", " index: 1", "- name: 'Rule for: cyl'", " expr: cyl %in% c(4, 6, 8)", " allow_na: no", " negate: no", " index: 2" ) ) rr2 <- read_rules(file) expect_s3_class(rr2, "ruleset") attr(rr2, "data_columns") <- NULL expect_equal(rr, rr2) # additional information is carried along as well rr <- ruleset( rule(mpg > 10, author = "me"), rule(cyl %in% c(4, 6, 8), date = "2020-02-29") ) file <- tempfile(fileext = ".yml") write_rules(rr, file) expect_equal( readLines(file), c( "meta: ~", "data-columns: []", "data-rules:", "- name: 'Rule for: mpg'", " expr: mpg > 10", " allow_na: no", " negate: no", " author: me", " index: 1", "- name: 'Rule for: cyl'", " expr: cyl %in% c(4, 6, 8)", " allow_na: no", " negate: no", " date: '2020-02-29'", " index: 2" ) ) rr2 <- read_rules(file) expect_s3_class(rr2, "ruleset") attr(rr2, "data_columns") <- NULL expect_equal(rr, rr2) }) test_that("Single rule im and export works", { rr <- rule(mpg > 10) file <- tempfile(fileext = ".yml") write_rules(rr, file) expect_equal( readLines(file), c( "meta: ~", "data-columns: []", "data-rules:", "- name: 'Rule for: mpg'", " expr: mpg > 10", " allow_na: no", " negate: no", " index: 1" ) ) rr2 <- read_rules(file) expect_s3_class(rr2, "ruleset") rr$index <- 1 expect_equal(rr, rr2[[1]]) }) test_that("Legacy pre_v1 format remains supported", { rr <- ruleset(rule(mpg > 10)) file <- tempfile(fileext = ".yml") write_rules(rr, file, format = "pre_v1") expect_equal( readLines(file), c( "- name: 'Rule for: mpg'", " expr: mpg > 10", " allow_na: no", " negate: no", " index: 1" ) ) rr2 <- read_rules(file) expect_s3_class(rr2, "rule") expect_equal(rr[[1]], rr2) })