tests/testthat/test-ordinalBanzhaf.R

test_that("banz ranking", {
  pr <- as.PowerRelation('12 > 1 > 2')
  ranking <- evaluate_promise(ordinalBanzhafRanking(pr), print = TRUE)
  expect_equal(ranking$output, "1 ~ 2")
  expect_true(pr %:% 1 %>=banz% 2)
  expect_true(pr %:% 2 %>=banz% 1)
  expect_false(pr %:% 1 %>banz% 2)
  expect_false(pr %:% 2 %>banz% 1)

  pr <- as.PowerRelation('1 > 2 > 12')
  ranking <- evaluate_promise(ordinalBanzhafRanking(pr), print = TRUE)
  expect_equal(ranking$output, "1 ~ 2")

  pr <- as.PowerRelation('12 > 1 > {} > 2')
  ranking <- evaluate_promise(ordinalBanzhafRanking(pr), print = TRUE)
  expect_equal(ranking$output, "1 > 2")
  expect_true(pr %:% 1 %>=banz% 2)
  expect_false(pr %:% 2 %>=banz% 1)
  expect_true(pr %:% 1 %>banz% 2)
  expect_false(pr %:% 2 %>banz% 1)
  expect_false(pr %:% 1 %>banz% 1)

  pr <- as.PowerRelation('12 > 1 ~ {} > 2')
  ranking <- evaluate_promise(ordinalBanzhafRanking(pr), print = TRUE)
  expect_equal(ranking$output, "1 > 2")

  pr <- as.PowerRelation('12 > 1 > {} ~ 2')
  ranking <- evaluate_promise(ordinalBanzhafRanking(pr), print = TRUE)
  expect_equal(ranking$output, "1 > 2")

  pr <- as.PowerRelation('12 > 1 ~ {} ~ 2')
  ranking <- evaluate_promise(ordinalBanzhafRanking(pr), print = TRUE)
  expect_equal(ranking$output, "1 ~ 2")



  pr <- as.PowerRelation('12 > 2 > 1')
  ranking <- evaluate_promise(ordinalBanzhafRanking(pr), print = TRUE)
  expect_equal(ranking$output, "1 ~ 2")

  pr <- as.PowerRelation('2 > 1 > 12')
  ranking <- evaluate_promise(ordinalBanzhafRanking(pr), print = TRUE)
  expect_equal(ranking$output, "1 ~ 2")

  pr <- as.PowerRelation('12 > 2 > {} > 1')
  ranking <- evaluate_promise(ordinalBanzhafRanking(pr), print = TRUE)
  expect_equal(ranking$output, "2 > 1")

  pr <- as.PowerRelation('12 > 2 ~ {} > 1')
  ranking <- evaluate_promise(ordinalBanzhafRanking(pr), print = TRUE)
  expect_equal(ranking$output, "2 > 1")

  pr <- as.PowerRelation('12 > 2 > {} ~ 1')
  ranking <- evaluate_promise(ordinalBanzhafRanking(pr), print = TRUE)
  expect_equal(ranking$output, "2 > 1")

  pr <- as.PowerRelation('12 > 2 ~ {} ~ 1')
  ranking <- evaluate_promise(ordinalBanzhafRanking(pr), print = TRUE)
  expect_equal(ranking$output, "1 ~ 2")
})

test_that("banz scores", {
  pr <- as.PowerRelation('12 > 1 > 2')
  expect_equal(ordinalBanzhafScores(pr), structure(list(
    `1` = c(1,0,1),
    `2` = c(1,0,1)
  ), class = "OrdinalBanzhafScores"))

  pr <- as.PowerRelation('12 > 2 > {} > 1')
  expect_equal(ordinalBanzhafScores(pr), structure(list(
    `1` = c(1,-1,0),
    `2` = c(2,0,0)
  ), class = "OrdinalBanzhafScores"))

  pr <- as.PowerRelation('12 > 2 ~ {} > 1')
  expect_equal(ordinalBanzhafScores(pr), structure(list(
    `1` = c(1,-1,0),
    `2` = c(1,0,0)
  ), class = "OrdinalBanzhafScores"))
})

test_that('banz named', {
  pr <- as.PowerRelation('abc > bc > ac > a > b > c > ab > {}')
  ranking <- evaluate_promise(ordinalBanzhafRanking(pr), print = TRUE)
  expect_equal(ranking$output, 'c > a ~ b')

  # abc~ab~a~c > b~bc > ac
  pr <- PowerRelation(list(
    list(c("Apple","Banana","Citrus"), c("Apple","Banana"), c("Citrus"), c("Apple")),
    list(c("Banana"), c("Banana","Citrus")),
    list(c("Apple","Citrus"))
  ))
  ranking <- evaluate_promise(lexcelRanking(pr), print = TRUE)
  expect_equal(ranking$output, 'Apple > Banana > Citrus')
})

Try the socialranking package in your browser

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

socialranking documentation built on May 29, 2024, 2:10 a.m.