# tests/testthat/test-ctx.R In lfl: Linguistic Fuzzy Logic

```test_that("ctx3", {
ex <- function(x1, x2, x3) {
structure(c(low=x1, center=x2, high=x3),
class=c('ctx3', 'numeric'))
}

context <- ctx3()
expect_true(is.ctx3(context))
expect_false(is.ctx3bilat(context))
expect_false(is.ctx5(context))
expect_false(is.ctx5bilat(context))

context <- ctx3(1, 2, 4)
expect_true(is.ctx3(context))
expect_false(is.ctx3bilat(context))
expect_false(is.ctx5(context))
expect_false(is.ctx5bilat(context))

expect_equal(ctx3(),
ex(0, 0.5, 1))
expect_equal(ctx3(high=5),
ex(0, 2.5, 5))
expect_equal(ctx3(high=5, relCenter=0.8),
ex(0, 4, 5))
expect_equal(ctx3(low=3, high=5),
ex(3, 4, 5))
expect_equal(ctx3(low=3, high=5, relCenter=0.75),
ex(3, 4.5, 5))
expect_equal(ctx3(low=3, center=3.1, high=5),
ex(3, 3.1, 5))

expect_error(ctx3(0, 0, 1))
expect_error(ctx3(0, 1, 1))
expect_error(ctx3(2, 1, 0))
expect_error(ctx3(low=-10, high=10, relCenter=0))
expect_error(ctx3(low=-10, high=10, relCenter=1))
expect_error(ctx3(low=-10, high=10, relCenter=-0.5))
expect_error(ctx3(low=-10, high=10, relCenter=1.5))

expect_equal(as.ctx3(ctx3(1, 2, 4)),
ex(1, 2, 4))
expect_equal(as.ctx3(ctx5(1, 2, 4, 8, 16)),
ex(1, 4, 16))
expect_equal(as.ctx3(ctx5bilat(1, 2, 4, 8, 16, 32, 64, 128, 256)),
ex(16, 64, 256))
expect_equal(as.ctx3(ctx3bilat(1, 2, 4, 8, 16)),
ex(4, 8, 16))

expect_equal(as.ctx3(c(1, 2, 3)),
ex(1, 2, 3))
expect_error(as.ctx3(runif(100)))
})

test_that("ctx5", {
ex <- function(x1, x2, x3, x4, x5) {
structure(c(low=x1, lowerCenter=x2, center=x3, upperCenter=x4, high=x5),
class=c('ctx5', 'numeric'))
}

context <- ctx5()
expect_false(is.ctx3(context))
expect_false(is.ctx3bilat(context))
expect_true(is.ctx5(context))
expect_false(is.ctx5bilat(context))

context <- ctx5(1, 2, 4, 5, 8)
expect_false(is.ctx3(context))
expect_false(is.ctx3bilat(context))
expect_true(is.ctx5(context))
expect_false(is.ctx5bilat(context))

expect_equal(ctx5(),
ex(0, 0.25, 0.5, 0.75, 1))
expect_equal(ctx5(high=5),
ex(0, 1.25, 2.5, 3.75, 5))
expect_equal(ctx5(high=5, relCenter=0.8),
ex(0, 2, 4, 4.5, 5))
expect_equal(ctx5(low=3, high=5),
ex(3, 3.5, 4, 4.5, 5))
expect_equal(ctx5(low=3, high=5, relCenter=0.75),
ex(3, 3.75, 4.5, 4.75, 5))
expect_equal(ctx5(low=3, center=3.1, high=5),
ex(3, 3.05, 3.1, 4.05, 5))
expect_equal(ctx5(1, 2, 3, 4, 5),
ex(1, 2, 3, 4, 5))

expect_error(ctx5(0, 0, 1, 2, 3))
expect_error(ctx5(0, 1, 1, 2, 3))
expect_error(ctx5(0, 1, 2, 2, 3))
expect_error(ctx5(0, 1, 2, 3, 3))
expect_error(ctx5(low=-10, high=10, relCenter=0))
expect_error(ctx5(low=-10, high=10, relCenter=1))
expect_error(ctx5(low=-10, high=10, relCenter=-0.5))
expect_error(ctx5(low=-10, high=10, relCenter=1.5))

expect_equal(as.ctx5(ctx5(1, 1.5, 2, 3, 4)),
ex(1, 1.5, 2, 3, 4))
expect_equal(as.ctx5(ctx3(1, 2, 4)),
ex(1, 1.5, 2, 3, 4))
expect_equal(as.ctx5(ctx5bilat(1, 2, 4, 8, 16, 32, 64, 128, 256)),
ex(16, 32, 64, 128, 256))
expect_equal(as.ctx5(ctx3bilat(1, 2, 4, 8, 16)),
ex(4, 6, 8, 12, 16))

expect_equal(as.ctx5(c(1, 2, 3, 4, 5)),
ex(1, 2, 3, 4, 5))
expect_error(as.ctx3(runif(100)))
})

test_that("ctx3bilat", {
ex <- function(x1, x2, x3, x4, x5) {
structure(c(negMax=x1, negCenter=x2, origin=x3, center=x4, max=x5),
class=c('ctx3bilat', 'numeric'))
}

context <- ctx3bilat()
expect_false(is.ctx3(context))
expect_true(is.ctx3bilat(context))
expect_false(is.ctx5(context))
expect_false(is.ctx5bilat(context))

context <- ctx3bilat(1, 2, 4, 5, 8)
expect_false(is.ctx3(context))
expect_true(is.ctx3bilat(context))
expect_false(is.ctx5(context))
expect_false(is.ctx5bilat(context))

expect_equal(ctx3bilat(),
ex(-1, -0.5, 0, 0.5, 1))
expect_equal(ctx3bilat(max=5),
ex(-1, -0.5, 0, 2.5, 5))
expect_equal(ctx3bilat(negMax=-5),
ex(-5, -2.5, 0, 0.5, 1))
expect_equal(ctx3bilat(max=5, relCenter=0.8),
ex(-1, -0.8, 0, 4, 5))
expect_equal(ctx3bilat(negMax=-5, relCenter=0.8),
ex(-5, -4, 0, 0.8, 1))
expect_equal(ctx3bilat(origin=3, max=5),
ex(-1, 1, 3, 4, 5))
expect_equal(ctx3bilat(negMax=-5, origin=3, max=5),
ex(-5, -1, 3, 4, 5))
expect_equal(ctx3bilat(negMax=3, negCenter=3.1, origin=4, center=4.1, max=5),
ex(3, 3.1, 4, 4.1, 5))

expect_error(ctx3bilat(0, 0, 1, 2, 3))
expect_error(ctx3bilat(0, 1, 1, 2, 3))
expect_error(ctx3bilat(0, 1, 2, 2, 3))
expect_error(ctx3bilat(0, 1, 2, 3, 3))
expect_error(ctx3bilat(5, 1, 2, 3, 4))
expect_error(ctx3bilat(relCenter=0))
expect_error(ctx3bilat(relCenter=1))
expect_error(ctx3bilat(relCenter=-0.5))
expect_error(ctx3bilat(relCenter=1.5))

expect_equal(as.ctx3bilat(ctx3bilat(-2, 0, 1, 2, 4)),
ex(-2, 0, 1, 2, 4))
expect_equal(as.ctx3bilat(ctx3(1, 2, 4)),
ex(-2, 0, 1, 2, 4))
expect_equal(as.ctx3bilat(ctx5bilat(1, 2, 4, 8, 16, 32, 64, 128, 256)),
ex(1, 4, 16, 64, 256))
expect_equal(as.ctx3bilat(ctx5(16, 32, 64, 128, 256)),
ex(-224, -32, 16, 64, 256))

expect_equal(as.ctx3bilat(c(1, 2, 3, 4, 5)),
ex(1, 2, 3, 4, 5))
expect_error(as.ctx3bilat(runif(100)))
})

test_that("ctx5bilat", {
ex <- function(x1, x2, x3, x4, x5, x6, x7, x8, x9) {
structure(c(negMax=x1, negUpperCenter=x2, negCenter=x3, negLowerCenter=x4, origin=x5,
lowerCenter=x6, center=x7, upperCenter=x8, max=x9),
class=c('ctx5bilat', 'numeric'))
}

context <- ctx5bilat()
expect_false(is.ctx3(context))
expect_false(is.ctx3bilat(context))
expect_false(is.ctx5(context))
expect_true(is.ctx5bilat(context))

context <- ctx5bilat(1, 2, 4, 5, 8, 9, 10, 11, 12)
expect_false(is.ctx3(context))
expect_false(is.ctx3bilat(context))
expect_false(is.ctx5(context))
expect_true(is.ctx5bilat(context))

expect_equal(ctx5bilat(),
ex(-1, -0.75, -0.5, -0.25, 0, 0.25, 0.5, 0.75, 1))
expect_equal(ctx5bilat(max=5),
ex(-1, -0.75, -0.5, -0.25, 0, 1.25, 2.5, 3.75, 5))
expect_equal(ctx5bilat(negMax=-5),
ex(-5, -3.75, -2.5, -1.25, 0, 0.25, 0.5, 0.75, 1))
expect_equal(ctx5bilat(max=5, relCenter=0.8),
ex(-1, -0.9, -0.8, -0.4, 0, 2, 4, 4.5, 5))
expect_equal(ctx5bilat(negMax=-5, relCenter=0.8),
ex(-5, -4.5, -4, -2, 0, 0.4, 0.8, 0.9, 1))
expect_equal(ctx5bilat(origin=3, max=5),
ex(-1, 0, 1, 2, 3, 3.5, 4, 4.5, 5))
expect_equal(ctx5bilat(negMax=-5, origin=3, max=5),
ex(-5, -3, -1, 1, 3, 3.5, 4, 4.5, 5))
expect_equal(ctx5bilat(negMax=1, negUpperCenter=1.5, negCenter=2,
negLowerCenter=2.5, origin=4, lowerCenter=4.2,
center=4.5, upperCenter=4.8, max=5),
ex(1, 1.5, 2, 2.5, 4, 4.2, 4.5, 4.8, 5))

expect_error(ctx5bilat(0, 0, 1, 2, 3, 4, 5, 6, 7))
expect_error(ctx5bilat(0, 1, 1, 2, 3, 4, 5, 6, 7))
expect_error(ctx5bilat(0, 1, 2, 2, 3, 4, 5, 6, 7))
expect_error(ctx5bilat(0, 1, 2, 3, 3, 4, 5, 6, 7))
expect_error(ctx5bilat(0, 1, 2, 3, 4, 4, 5, 6, 7))
expect_error(ctx5bilat(0, 1, 2, 3, 4, 5, 5, 6, 7))
expect_error(ctx5bilat(0, 1, 2, 3, 4, 5, 6, 6, 7))
expect_error(ctx5bilat(0, 1, 2, 3, 4, 5, 6, 7, 7))
expect_error(ctx5bilat(relCenter=0))
expect_error(ctx5bilat(relCenter=1))
expect_error(ctx5bilat(relCenter=-0.5))
expect_error(ctx5bilat(relCenter=1.5))

expect_equal(as.ctx5bilat(ctx5bilat(1, 2, 4, 8, 16, 32, 64, 128, 256)),
ex(1, 2, 4, 8, 16, 32, 64, 128, 256))
expect_equal(as.ctx5bilat(ctx3(1, 2, 4)),
ex(-2, -1, 0, 0.5, 1, 1.5, 2, 3, 4))
expect_equal(as.ctx5bilat(ctx3bilat(1, 2, 4, 8, 16)),
ex(1, 1.5, 2, 3, 4, 6, 8, 12, 16))
expect_equal(as.ctx5bilat(ctx5(16, 32, 64, 128, 256)),
ex(-224, -96, -32, 0, 16, 32, 64, 128, 256))

expect_equal(as.ctx5bilat(c(1, 2, 3, 4, 5, 6, 7, 8, 9)),
ex(1, 2, 3, 4, 5, 6, 7, 8, 9))
expect_error(as.ctx5bilat(runif(100)))
})
```

## Try the lfl package in your browser

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

lfl documentation built on Sept. 8, 2022, 5:08 p.m.