tests/testthat/test-pc_set_type.R

library(testthat)
library(magrittr)

context("pc_set_type")

test_that("examples", {
  expect_equal(
    pc_set_type(c(0, 4, 7)) %>% as.integer,
    c(0, 4, 7)
  )
  expect_equal(
    pc_set_type(c(3, 6, 7, 10)) %>% as.integer,
    c(0, 3, 4, 7)
  )
  expect_equal(
    pc_set_type(c(0, 3, 6, 7, 8, 10)) %>% as.integer,
    c(0, 1, 2, 4, 6, 9)
  )
  expect_equal(
    pc_set_type(pc_set(0)) %>% as.integer,
    0
  )
  expect_equal(
    pc_set_type(pc_set(5)) %>% as.integer,
    0
  )
})

test_that("transposition", {
  for (i in 0:11) {
    expect_equal(
      c(0, 4, 7) %>% pc_set %>% tp(i) %>%
        pc_set_type %>%
         transposition,
      - i
    )
  }
})

test_that("transpositions of a pitch-class set all get the same normal form", {
  n <- 30
  for (i in seq_len(n)) {
    pc_set <- sample(4e3, 1) %>% coded_vec("pc_set") %>% decode %>% extract2(1)
    expect_true(
      0:11 %>%
        lapply(function(x) tp(pc_set, x)) %>%
        lapply(pc_set_type) %>%
        lapply(as.integer) %>%
        unique %>%
        (function(x) length(x) == 1L)
    )
  }
})
pmcharrison/hrep documentation built on Feb. 18, 2024, 2:33 a.m.