skip_if_not_installed("kernlab")

data(hgsc)
hgsc <- hgsc[1:40, 1:30]
E <- consensus_cluster(hgsc, nk = 4, reps = 5,
                       algorithms = c("hc", "km", "sc"), progress = FALSE)
E_imputed <- impute_missing(E, hgsc, nk = 4)

test_that("adding majority vote elimnates all missing values", {
  E_complete <- E_imputed
  expect_equal(sum(is.na(E_complete)), 0)
  expect_equal(nrow(E_complete), dim(E)[1])
  expect_equal(ncol(E_complete), prod(dim(E)[2], dim(E)[3]))
})

test_that("errors thrown with incorrect inputs", {
  expect_error(impute_missing(E, hgsc[-1, ]))
  expect_error(impute_missing(E = sample(1:489), data = hgsc))
  expect_error(impute_missing(E = E, data = as.data.frame(hgsc)))
})

test_that("majority completion not performed for a single assignment", {
  E1 <- consensus_cluster(hgsc, nk = 4, reps = 1, algorithms = "hc",
                          progress = FALSE)
  expect_equal(ncol(impute_missing(E1, hgsc, nk = 4)), 1)
})
