tests/testthat/test-pulse.R

test_that("pulse rejects unknown types", {
  expect_error(pulse("nightshade"), "pulse type not recognised.")
  expect_silent(pulse("dirac"))

  expect_error(pulse(output="nile crocodile"), "output format not recognised.")
})

test_that("pulse is correct length", {
  expect_error(pulse(duration=24, samp.rate=230), "sum of leading and pulse.length cannot be greater than duration.")
  expect_equal(length(pulse(duration=23, leading=0)), 23)
  expect_equal(pulse(duration=23, leading=1, samp.rate=5)@samp.rate, 5)
})

test_that("pulse is correct type", {
  p <- pulse(bit=8, pcm=TRUE)
  expect_equal(p@bit, 8)
  expect_equal(p@pcm, TRUE)

  p <- pulse(bit=32, pcm=FALSE)
  expect_equal(p@bit, 32)
  expect_equal(p@pcm, FALSE)
})

test_that("dirac pulse works", {
  expect_equal(2 * 2, 4)
})

test_that("dirac pulse works as expected", {
  p <- pulse("dirac", leading=0)
  expect_equal(p@left[1], 2^p@bit - 1)
  expect_true(all(p@left[2:length(p@left)] == 0))

  p <- pulse("dirac", leading=1)
  expect_equal(p@left[1], 0)
  expect_equal(p@left[2], 2^p@bit)
  expect_true(all(p@left[3:length(p@left)] == 0))

  p <- pulse("dirac", leading=1, stereo=TRUE)
  expect_equal(p@right[1], 0)
  expect_equal(p@right[2], 2^p@bit)
  expect_true(all(p@right[3:length(p@right)] == 0))
})

test_that("square pulse works as expected", {
  p <- pulse("square", leading=0)
  expect_equal(p@left[1], 2^p@bit - 1)
  expect_true(all(p@left[2:length(p@left)] == 0))

  p <- pulse("square", leading=1, pulse.length=2, stereo=TRUE)
  expect_equal(p@left[1], 0)
  expect_true(all(p@left[2:3] == 2^p@bit))
  expect_true(all(p@left[4:length(p@left)] == 0))
  expect_equal(p@right[1], 0)
  expect_true(all(p@right[2:3] == 2^p@bit))
  expect_true(all(p@right[4:length(p@left)] == 0))
})

test_that("invert pulse works as expected", {
  p <- pulse(leading=0, invert=TRUE)
  expect_equal(p@left[1], -2^p@bit - 1)
  expect_true(all(p@left[2:length(p@left)] == 0))
})

test_that("output types are correct for TaggedWave", {
  p <- pulse(output="TaggedWave")
  expect_s4_class(p, "TaggedWave")
  expect_equal(p@origin, "pulse-dirac")

  p <- pulse("square", output="TaggedWave")
  expect_equal(p@origin, "pulse-square")
})

Try the sonicscrewdriver package in your browser

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

sonicscrewdriver documentation built on May 29, 2024, 3:39 a.m.