context("linear")
describe("is_lin_",{
it("can detect linear expressions",{
e <- quote(x>1)
expect_true(is_lin_(e))
})
it("can detect non-linear expressions",{
e <- quote(if(x>1) y < 1)
expect_false(is_lin_(e))
})
})
describe("is_linear",{
it("can detect linear rules",{
v <- validator(x > 1, y + 2*x <= 3, A == "a", A == TRUE)
expect_equal(is_linear(v), c(TRUE, TRUE, FALSE, FALSE))
})
it("can detect negative coefficients",{
v <- validator(x > -3*y)
expect_true(is_linear(v))
})
})
describe("lin_mip_rule",{
it("can create a linear mip_rule object",{
e <- quote(x > 1)
mr <- lin_mip_rule_(e, name="H")
expect_equal(mr$a, c(x=1))
expect_equal(mr$b, 1)
})
it("handles unary operators",{
e <- quote(-x > 1)
mr <- lin_mip_rule_(e, name="H")
expect_equal(mr$a, c(x=-1))
expect_equal(mr$b, 1)
})
it("handles permutation of factors",{
e <- quote(x*2 > 1)
mr <- lin_mip_rule_(e, name="H")
expect_equal(mr$a, c(x=2))
expect_equal(mr$b, 1)
})
it("errors on invalid input", {
e <- quote(if (x < 1) y > 1)
expect_error(lin_mip_rule_(e))
})
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.