1context("s4-sort")
2
3suppressMessages(load_all("testS4sort"))
4classes <- methods::getClasses(ns_env('testS4sort'))
5
6
7test_that("Example classes are not topologically sorted", {
8  ## there are some superclasses of the first class
9  ## later in the list
10  superclasses <- extends(getClass(classes[1]))[-1]
11  expect_true(any(superclasses %in% classes[-1]))
12})
13
14test_that("topological sorting s4 classes", {
15
16  sorted_classes <- sort_s4classes(classes, 'testS4sort')
17
18  for (idx in seq_along(classes)) {
19    ## for each class in the sorted list
20    ## all its superclasses are before
21    superclasses <- extends(getClass(sorted_classes[idx]))
22    expect_true(all(superclasses %in% head(sorted_classes, idx)))
23  }
24
25})
26
27test_that("sorting extreme cases", {
28
29  ## no classes to sort
30  classes <- vector('character', 0)
31  expect_identical(classes, sort_s4classes(classes, 'testS4sort'))
32
33  ## only one class to sort
34  classes <- "A"
35  expect_identical(classes, sort_s4classes(classes, 'testS4sort'))
36})
37
38# cleanup
39unload('testS4sort')
40