tests/testthat/test_zzz.R

# modelled on mvp/tests/testthat/test_aad.R which tests specific
# identities.

test_that("Test suite zzz, specific identities and miscellaneous checks",{

  expect_true(is_ok_free(list(),coeffs=1))
  expect_true(
      freealg(list(1,c(1,2)),c(4,5))==freealg(list(1,c(1,0,2)),c(4,5))
  )

  expect_silent(x <- as.freealg(list(list(1,1:2),1:2)))
  expect_silent(x <- as.freealg(1:6))
  expect_silent(x <- freealg(list(1,c(1,0,2)),c(4,5)))

  expect_true(is.constant(as.freealg("7")))
  expect_true(is.constant(as.freealg("0")))

  expect_true(is.constant(3))
  expect_true(is.constant(0))

  expect_error(as.freealg(sin))
  

  x <- as.freealg("1+x+2ax")
  y <- as.freealg("2+x+2ax")
  expect_false(is.constant(x))
  expect_error(coeffs(x) <- seq_along(coeffs(x)))
  expect_silent(coeffs(x) <- coeffs(x) + 3)
  expect_error(coeffs(x) <- coeffs(y))


  expect_true(horner("x+y",1:3) == as.freealg("1 + 2x + 2y + 3xy + 3xx  + 3yx + 3yy"))



  expect_true(all(coeffs(freealg(as.list(seq_len(1000))))==1))

  expect_output(print(deriv(as.freealg("aaaabcdaaa"),1)))
  expect_output(print(deriv(as.freealg("aaxAAAxaabcdaaaabXbaa"),1)))
  expect_output(print(deriv(as.freealg("aaxAAAxaabcdaaaabXbaa"),-1)))


  expect_true(deriv(as.freealg("aaaabcdaaxAAxa"), 1) == deriv(as.freealg("aaaabcdaaxAAxa"),"a"))
  expect_true(deriv(as.freealg("aaaabcdaaxAAxa"),-1) == deriv(as.freealg("aaaabcdaaxAAxa"),"A"))

  expect_true(all(grades(grade(horner("1+x+2y",1:7),5))==5))

  a <- horner("1+x+2y",1:7)
  b <- a
  grade(a,5) <- grade(a,5) *100
  expect_true(grade(a,5) == grade(b,5)*100)

  expect_error(grade(b))

  expect_true(nterms(horner("1+x+2y",seq_len(7))) == 2^7-1)
  expect_true(inv(as.freealg("aaaaabcaaabAAA")) == as.freealg("aaaBAAACBAAAAA"))
  expect_error(inv(as.freealg("3+aaaaabcaaabAAA")))
  expect_true(is.numeric(drop(as.freealg("9"))))

  expect_true(keep_pos(as.freealg("a+ 5asAbc+ abc+ A")) == as.freealg("abc + a"))

  A <- matrix(0,3,3)
  B <- A
  diag(A) <- c(1,-1,0)
  diag(B) <- c(0,1,-1)
  expect_true(all(.[A,B] == 0))

  lhs <- .[tan,sin](0.1)
  rhs <- tan(sin(0.1)) - sin(tan(0.1))
  expect_true(abs(lhs-rhs) < 1e-10)

  expect_false(all_pos(as.freealg("1+x+y+X")))
  expect_true (all_pos(as.freealg("1+x+y+z")))
  
  })

  
RobinHankin/freealg documentation built on Dec. 24, 2024, 3:16 a.m.