tests/testthat/test-acceptance.R

library(testthat)
library(xegaSelectGene)
library(xegaGaGene)
library(xegaPopulation)

lFxegaGaGene$ReportEvalErrors<-function() {TRUE}

test_that("AcceptNewGene OK",
          {
	  id<-function(x, lF){x}
	  g1<-InitGene(lFxegaGaGene)
	  g2<-InitGene(lFxegaGaGene)
	  g2$evalFail<-TRUE
          expect_identical(AcceptNewGene(id, g1, lFxegaGaGene), g1)
          # Raises error and ignores it!
          expect_identical(AcceptNewGene(id, g2, lFxegaGaGene), g2)
          }
)

test_that("AcceptBest OK",
          {
	  OPpipe1<-function(g, lF){InitGene(lF)}
	  set.seed(1)
	  g1<-lFxegaGaGene$EvalGene(InitGene(lFxegaGaGene), lFxegaGaGene)
          lFfail<-lFxegaGaGene
          lFfail$penv$f<-function(parm, gene=0, lF=0) { "a"+sum(parm^{2})/0} 
          lFfail$CWorstFitness<-function() {-1000}
          # Raises error and ignores it!
	  g2<-AcceptBest(OPpipe1, g1, lFfail)
	  g3<-AcceptBest(OPpipe1, g1, lFxegaGaGene)
	  g4<-AcceptBest(OPpipe1, g1, lFxegaGaGene)
	  g5<-AcceptBest(OPpipe1, g1, lFxegaGaGene)
	  g6<-AcceptBest(OPpipe1, g1, lFxegaGaGene)
          expect_identical(g1$fit, g2$fit)
          expect_identical(g1, g3)
          expect_identical(g1, g4)
          expect_identical(g1, g5)
          expect_identical(g6$fit>g1$fit, TRUE)
          }
)

test_that("AcceptMetropolis OK",
          {
          parm<-function(x){function() {return(x)}}
          lFxegaGaGene$Beta<-parm(1)
          lFxegaGaGene$TempK<-parm(10)
	  OPpipe1<-function(g, lF){InitGene(lF)}
	  set.seed(2)
	  g1<-lFxegaGaGene$EvalGene(InitGene(lFxegaGaGene), lFxegaGaGene)
          lFfail<-lFxegaGaGene
          lFfail$penv$f<-function(parm, gene=0, lF=0) { "a"+sum(parm^{2})/0}
          lFfail$CWorstFitness<-function() {-1000}
          # Raises error and ignores it!
          g2<-AcceptMetropolis(OPpipe1, g1, lFfail)
	  g3<-AcceptMetropolis(OPpipe1, g1, lFxegaGaGene)
	  g4<-AcceptMetropolis(OPpipe1, g1, lFxegaGaGene)
	  g5<-AcceptMetropolis(OPpipe1, g4, lFxegaGaGene)
          expect_identical(g1$fit, g2$fit)
          expect_identical(g1, g3)
          expect_identical((g1$fit>g4$fit), TRUE)
          expect_identical((g5$fit>g4$fit), TRUE)
          }
)

test_that("AcceptIVMetropolis OK",
          {
          parm<-function(x){function() {return(x)}}
          lFxegaGaGene$Beta<-parm(1)
          lFxegaGaGene$TempK<-parm(10)
          lFxegaGaGene$CBestFitness<-parm(20.39447)
          OPpipe1<-function(g, lF){InitGene(lF)}
          set.seed(2)
          g1<-lFxegaGaGene$EvalGene(InitGene(lFxegaGaGene), lFxegaGaGene)
          lFfail<-lFxegaGaGene
          lFfail$penv$f<-function(parm, gene=0, lF=0) { "a"+sum(parm^{2})/0}
          lFfail$CWorstFitness<-function() {-1000}
          # Raises error and ignores it!
          g2<-AcceptIVMetropolis(OPpipe1, g1, lFfail)
          g3<-AcceptIVMetropolis(OPpipe1, g1, lFxegaGaGene)
          g4<-AcceptIVMetropolis(OPpipe1, g1, lFxegaGaGene)
          g5<-AcceptIVMetropolis(OPpipe1, g4, lFxegaGaGene)
          expect_identical(g1$fit, g2$fit)
          expect_identical(g1, g3)
          expect_identical((g1$fit>g4$fit), TRUE)
          expect_identical((g5$fit>g4$fit), TRUE)
          }
)

test_that("MetropolisAcceptanceProbability OK",
          {
          expect_equal(MetropolisAcceptanceProbability(0, 1, 20), 1)
          expect_equal(MetropolisAcceptanceProbability(1, 1, 20), 0.9512294,
	  tolerance=0.0001)
          expect_equal(MetropolisAcceptanceProbability(0, 5, 30), 1)
          expect_equal(MetropolisAcceptanceProbability(0, 0.5, 1000), 1)
          expect_equal(MetropolisAcceptanceProbability(1, 1, 20), 0.9512294,
	  tolerance=0.0001)
          expect_equal(MetropolisAcceptanceProbability(1, 2, 20), 0.9048374,
	  tolerance=0.0001)
          }
)

test_that("MetropolisTable OK",
          {
	  b<-c(0.6703200, 0.6676171, 0.6648980, 
	       0.6621626, 0.6594111, 0.6566433, 0.6538594,
               0.6510594, 0.6482432, 0.6454110)	       
	  a<-MetropolisTable(d=2, beta=2, temperature=10, alpha=0.99, steps=10)
          expect_equal(a[,5], b,
	  tolerance=0.0001)
          }
)

test_that("AcceptFactory OK",
          {
          Fun<-AcceptFactory()
          expect_identical(body(Fun), body(AcceptNewGene))
          Fun<-AcceptFactory("All")
          expect_identical(body(Fun), body(AcceptNewGene))
          Fun<-AcceptFactory("Best")
          expect_identical(body(Fun), body(AcceptBest))
          Fun<-AcceptFactory("Metropolis")
          expect_identical(body(Fun), body(AcceptMetropolis))
          Fun<-AcceptFactory("IVMetropolis")
          expect_identical(body(Fun), body(AcceptIVMetropolis))
          expect_error(AcceptFactory("Stchastic"))
          }
)

Try the xegaPopulation package in your browser

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

xegaPopulation documentation built on Aug. 22, 2025, 5:14 p.m.