tests/testthat/test-greedySetCover.R

test_that("greedySetCover returns expected coverage", {
    df <- data.frame(
        set = c("A", "A", "B", "B", "C"),
        element = c(1L, 2L, 2L, 3L, 3L),
        stringsAsFactors = FALSE
    )

    result <- greedySetCover(df, data.table = FALSE)

    expect_s3_class(result, "data.frame")
    expect_identical(names(result), c("set", "element"))
    expect_true(all(result$set %in% c("A", "B")))
    expect_identical(sort(unique(result$element)), sort(unique(df$element)))
})

test_that("greedySetCover validates two-column inputs", {
    df <- data.frame(set = c("A", "B"), stringsAsFactors = FALSE)
    expect_error(greedySetCover(df), "ncol")
})

test_that("greedySetCover computes a valid cover when several sets are required", {
    df <- data.frame(
        set = c("S1", "S1", "S2", "S2", "S3", "S3", "S4"),
        element = c(1L, 2L, 2L, 3L, 3L, 4L, 5L),
        stringsAsFactors = FALSE
    )

    cover <- greedySetCover(df) # returns data.table by default
    expect_s3_class(cover, "data.table")

    covered_elements <- sort(unique(cover$element))
    universe <- sort(unique(df$element))

    expect_identical(covered_elements, universe)
    expect_true(length(unique(cover$set)) >= 2)
})

Try the RcppGreedySetCover package in your browser

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

RcppGreedySetCover documentation built on Dec. 18, 2025, 1:07 a.m.