tests/testthat/test-simulation_functions.R

context("simulation functions")

test_that("init_status returns correct initial status", {

  # params
  N <- 9
  startnodes <- c(1, 3, 5, 7, 9)

  # define test case
  test_case <- rep(0, N)
  test_case[startnodes] <- 1

  # package implementation
  package_imp <- init_status(N, startnodes)

  # equality test
  expect_equal(package_imp, test_case)

})


test_that("sus_contacts_matrix identifies susceptible contacts correctly", {

  N <- 10
  infected <- c(2, 4, 6, 8, 10)
  susceptible <- c(1, 3, 5, 7, 9)
  status <- rep(0, times = N)
  status[infected] <- 1

  # test case 1 (connected to no nodes)
  edge_vector_1 <- rep(0, N)

  # test case 2 (connected to all nodes)
  edge_vector_2 <- rep(1, N)

  # test case 3 (connected to nodes 1:5)
  edge_vector_3 <- rep(0, N)
  edge_vector_3[1:5] <- 1

  # test 1
  package_imp <- sus_contacts_matrix(edge_vector_1, status)
  expected_result <- integer()
  expect_equal(package_imp, expected_result)

  # test 2
  package_imp <- sus_contacts_matrix(edge_vector_2, status)
  expected_result <- susceptible
  expect_equal(package_imp, expected_result)

  # test 3
  package_imp <- sus_contacts_matrix(edge_vector_3, status)
  expected_result <- c(1, 3, 5)
  expect_equal(package_imp, expected_result)

})


test_that("sus_contacts_list identifies susceptible contacts correctly", {

  N <- 10
  infected <- c(2, 4, 6, 8, 10)
  susceptible <- c(1, 3, 5, 7, 9)
  status <- rep(0, times = N)
  status[infected] <- 1

  # test case 1 (connected to no nodes)
  edge_vector_1 <- integer()

  # test case 2 (connected to all nodes)
  edge_vector_2 <- seq_len(N)

  # test case 3 (connected to nodes 1:5)
  edge_vector_3 <- c(1, 2, 3, 4, 5)

  # test 1
  package_imp <- sus_contacts_list(edge_vector_1, status)
  expected_result <- integer()
  expect_equal(package_imp, expected_result)

  # test 2
  package_imp <- sus_contacts_list(edge_vector_2, status)
  expected_result <- susceptible
  expect_equal(package_imp, expected_result)

  # test 3
  package_imp <- sus_contacts_list(edge_vector_3, status)
  expected_result <- c(1, 3, 5)
  expect_equal(package_imp, expected_result)

})



test_that("inf_contacts_matrix identifies susceptible contacts correctly", {

  N <- 10
  infected <- c(2, 4, 6, 8, 10)
  status <- rep(0, times = N)
  status[infected] <- 1

  # test case 1 (connected to no nodes)
  edge_vector_1 <- rep(0, N)
  package_imp <- inf_contacts_matrix(edge_vector_1, status)
  expected_result <- integer()
  expect_equal(package_imp, expected_result)

  # test case 2 (connected to all nodes)
  edge_vector_2 <- rep(1, N)
  package_imp <- inf_contacts_matrix(edge_vector_2, status)
  expected_result <- infected
  expect_equal(package_imp, expected_result)

  # test case 3 (connected to nodes 1:5)
  edge_vector_3 <- rep(0, N)
  edge_vector_3[1:5] <- 1
  package_imp <- inf_contacts_matrix(edge_vector_3, status)
  expected_result <- c(2, 4)
  expect_equal(package_imp, expected_result)

})


test_that("inf_contacts_list identifies susceptible contacts correctly", {

  N <- 10
  infected <- c(2, 4, 6, 8, 10)
  status <- rep(0, times = N)
  status[infected] <- 1

  # test case 1 (connected to no nodes)
  edge_vector_1 <- integer()
  package_imp <- inf_contacts_list(edge_vector_1, status)
  expected_result <- integer()
  expect_equal(package_imp, expected_result)

  # test case 2 (connected to all nodes)
  edge_vector_2 <- seq_len(N)
  package_imp <- inf_contacts_list(edge_vector_2, status)
  expected_result <- infected
  expect_equal(package_imp, expected_result)

  # test case 3 (connected to nodes 1:5)
  edge_vector_3 <- c(1, 2, 3, 4, 5)
  package_imp <- inf_contacts_list(edge_vector_3, status)
  expected_result <- c(2, 4)
  expect_equal(package_imp, expected_result)

})


test_that("init_rates_sis_matrix initialises rates correctly", {

  N <- 10
  graph <- matrix(1, nrow = 10, ncol = 10)
  diag(graph) <- 0
  tau <- 0.5
  gam <- 1

  # test ; all nodes infected
  status <- rep(1, N)
  startnodes <- 1:N
  expected_result <- rep(gam, N)
  package_imp <- init_rates_sis_matrix(graph, startnodes, gam, tau, status)
  expect_equal(package_imp, expected_result)

  # test 2; node 1 infected
  status <- rep(0, N)
  startnodes <- 1
  status[startnodes] <- 1
  expected_result <- c(gam, rep(tau, times = N - 1))
  package_imp <- init_rates_sis_matrix(graph, startnodes, gam, tau, status)
  expect_equal(package_imp, expected_result)

})



test_that("init_rates_sis_list initialises rates correctly", {

  N <- 10
  graph <- vector("list", N)
  for (i in 1:N) {
    graph[[i]] <- seq_len(N)[-i]
  }

  tau <- 0.5
  gam <- 1

  # test ; all nodes infected
  status <- rep(1, N)
  startnodes <- 1:N
  expected_result <- rep(gam, N)
  package_imp <- init_rates_sis_list(graph, startnodes, gam, tau, status)
  expect_equal(package_imp, expected_result)

  # test 2; node 1 infected
  status <- rep(0, N)
  startnodes <- 1
  status[startnodes] <- 1
  expected_result <- c(gam, rep(tau, times = N - 1))
  package_imp <- init_rates_sis_list(graph, startnodes, gam, tau, status)
  expect_equal(package_imp, expected_result)

})
tjtnew/simnetR documentation built on May 12, 2019, 4:20 p.m.