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