tests/testthat/test-utils.R

library(testthat)

test_that("average_similarity works with same_text objects", {
  fruits1 <- list("apple", "banana", "orange")
  fruits2 <- list("appel", "banana", "orange")
  fruits3 <- list("appels", "bananas", "oranges")

  result <- same_text(fruits1, fruits2, fruits3, method = c("jw", "lv"))

  avg <- average_similarity(result)
  expect_type(avg, "double")
  expect_true(all(avg >= 0 & avg <= 1))

  avg_jw <- average_similarity(result, method = "jw")
  expect_type(avg_jw, "double")
  expect_true(length(avg_jw) > 0)
  expect_true(all(avg_jw >= 0 & avg_jw <= 1))
})

test_that("average_similarity works with same_factor objects", {
  fruits1 <- list("apple", "orange", "unknown")
  fruits2 <- list("apple", "orange", "unknown")
  fruits3 <- list("apple", "pineapple", "banana")

  result <- same_factor(fruits1, fruits2, fruits3,
    levels = c("apple", "orange", "banana")
  )

  avg <- average_similarity(result)
  expect_type(avg, "double")
  expect_true(all(avg >= 0 & avg <= 1))
})

test_that("average_similarity works with same_number objects", {
  nums1 <- list(0.95, 1, 0.60)
  nums2 <- list(1, 1, 0.65)
  nums3 <- list(0.90, 1, 0.55)

  result <- same_number(nums1, nums2, nums3)

  avg <- average_similarity(result)
  expect_type(avg, "double")
  expect_true(all(avg >= 0 & avg <= 1))
})

test_that("pair_averages works with same_text objects", {
  fruits1 <- list("apple", "banana", "orange")
  fruits2 <- list("appel", "banana", "orange")
  fruits3 <- list("appels", "bananas", "oranges")

  result <- same_text(fruits1, fruits2, fruits3, method = c("jw", "lv"))

  pairs <- pair_averages(result)
  expect_s3_class(pairs, "data.frame")
  expect_named(pairs, c("method", "pair", "avg_score"))
  expect_true(all(pairs$avg_score >= 0 & pairs$avg_score <= 1))

  pairs_jw <- pair_averages(result, method = "jw")
  expect_s3_class(pairs_jw, "data.frame")
  expect_true(all(pairs_jw$method == "jw"))
})

test_that("pair_averages works with same_factor objects", {
  fruits1 <- list("apple", "orange", "unknown")
  fruits2 <- list("apple", "orange", "unknown")
  fruits3 <- list("apple", "pineapple", "banana")

  result <- same_factor(fruits1, fruits2, fruits3,
    levels = c("apple", "orange", "banana")
  )

  pairs <- pair_averages(result)
  expect_s3_class(pairs, "data.frame")
  expect_named(pairs, c("method", "pair", "avg_score"))
  expect_true(all(pairs$avg_score >= 0 & pairs$avg_score <= 1))
})

test_that("pair_averages works with same_number objects", {
  nums1 <- list(0.95, 1, 0.60)
  nums2 <- list(1, 1, 0.65)
  nums3 <- list(0.90, 1, 0.55)

  result <- same_number(nums1, nums2, nums3)

  pairs <- pair_averages(result)
  expect_s3_class(pairs, "data.frame")
  expect_named(pairs, c("method", "pair", "avg_score"))
  expect_true(all(pairs$avg_score >= 0 & pairs$avg_score <= 1))
})

Try the samesies package in your browser

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

samesies documentation built on April 4, 2025, 2:08 a.m.