tests/testthat/testSubstValue.R

context("Value substitution")

test_that("value substitution for numerical data",{
    E <- editmatrix(c("x+y==z","x-u==1"))
    expect_true(
        sum(abs(
            getAb(substValue(E,c('x','y'),c(1,2)))-
            matrix(c(
                0, 0,-1, 0,-3,
                0, 0, 0,-1, 0),nrow=2,byrow=TRUE)
        )) == 0
    )
    expect_true(
        sum(abs(
            getAb(substValue(E,c('x','y'),c(1,2),reduce=TRUE))-
            matrix(c(
                -1, 0,-3,
                 0,-1, 0),nrow=2,byrow=TRUE)
        )) == 0
    )
})


test_that("value substitution for categorical data",{

    E <- editarray(c(
        "v %in% letters[1:3]",
        "w %in% letters[4:6]",
        "x %in% letters[7:9]",
        "if ( v=='a' ) w !='d'",
        "if ( w %in% c('d','e')) x != 'g'"
    ))
    expect_true(
        all(
            getArr(substValue(E,c('v','w'),c('a','d')))
            ==
            matrix(c(
                TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,  TRUE,  TRUE,
                TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE
            ),nrow=c(2),byrow=TRUE)
        )
    )
    expect_true(
        all(
            getArr(substValue(E,c('v','w'),c('a','d'),reduce=TRUE))
            ==
            matrix(c(
                TRUE, TRUE, TRUE,  TRUE,  TRUE,
                TRUE, TRUE, TRUE, FALSE, FALSE
            ),nrow=c(2),byrow=TRUE)
        )
    )
    

})

test_that("value substitution works for boolean data",{
    E <- editarray(c(
    "g %in% c('m','f')",
    "p %in% c(TRUE, FALSE)"))
   expect_true(nrow(getArr(substValue(E,'p',TRUE)))==0)
})

test_that("Bug reported by Sander Scholtus is fixed",{
  # this used to cause a crash after upgrading to R>=3.x.x
  E1 <- editset(expression(
    A %in% letters[1:2],
    B %in% letters[2:3],
    if ( (A == 'a') ) x > y
  ))
  E1 <- substValue(E1, var = "x", val = 1)
})

Try the editrules package in your browser

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

editrules documentation built on June 22, 2024, 12:21 p.m.