tests/testthat/test-createDummies.R

test_that("createDummies returns a data.frame", {
  out <- createDummies(
    group.id = "groupId",
    act.id   = "actId",
    part.id  = "partId",
    d        = sampleDyadData
  )
  expect_s3_class(out, "data.frame")
})

test_that("createDummies excludes self-ratings by default", {
  out <- createDummies(
    group.id = "groupId",
    act.id   = "actId",
    part.id  = "partId",
    d        = sampleDyadData
  )
  expect_true(all(out$actId != out$partId))
})

test_that("createDummies includes self-ratings when requested", {
  out <- createDummies(
    group.id     = "groupId",
    act.id       = "actId",
    part.id      = "partId",
    d            = sampleDyadData,
    include.self = TRUE
  )
  expect_true(any(out$actId == out$partId))
})

test_that("createDummies actor dummy rows sum to 1", {
  out <- createDummies(
    group.id = "groupId",
    act.id   = "actId",
    part.id  = "partId",
    d        = sampleDyadData
  )
  a_cols   <- grep("^a[0-9]+$", names(out), value = TRUE)
  row_sums <- rowSums(out[, a_cols])
  expect_true(all(row_sums == 1))
})

test_that("createDummies partner dummy rows sum to 1", {
  out <- createDummies(
    group.id = "groupId",
    act.id   = "actId",
    part.id  = "partId",
    d        = sampleDyadData
  )
  p_cols   <- grep("^p[0-9]+$", names(out), value = TRUE)
  row_sums <- rowSums(out[, p_cols])
  expect_true(all(row_sums == 1))
})

test_that("createDummies dyad IDs are symmetric", {
  out <- createDummies(
    group.id = "groupId",
    act.id   = "actId",
    part.id  = "partId",
    d        = sampleDyadData
  )
  # i->j and j->i should share the same pdSRM_dyad_id
  merged <- merge(
    out[, c("groupId", "actId", "partId", "pdSRM_dyad_id")],
    out[, c("groupId", "actId", "partId", "pdSRM_dyad_id")],
    by.x = c("groupId", "actId", "partId"),
    by.y = c("groupId", "partId", "actId")
  )
  expect_true(all(merged$pdSRM_dyad_id.x == merged$pdSRM_dyad_id.y))
})

test_that("createDummies merge.original returns all original columns", {
  out <- createDummies(
    group.id       = "groupId",
    act.id         = "actId",
    part.id        = "partId",
    d              = sampleDyadData,
    merge.original = TRUE
  )
  original_cols <- names(sampleDyadData)
  expect_true(all(original_cols %in% names(out)))
})

test_that("createDummies produces correct number of rows (no self)", {
  # For a group of size n, expect n*(n-1) directed dyads
  d1 <- sampleDyadData[sampleDyadData$groupId == 1 &
                         sampleDyadData$timeId  == 1, ]
  n  <- length(unique(c(d1$actId, d1$partId)))
  out <- createDummies(
    group.id = "groupId",
    act.id   = "actId",
    part.id  = "partId",
    d        = d1
  )
  expect_equal(nrow(out), n * (n - 1))
})

Try the roundRobinR package in your browser

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

roundRobinR documentation built on Sept. 18, 2026, 1:06 a.m.