tests/testthat/test-PseudoWave.R

test_that("PseudoWave creation", {
  expect_error(inherits(pseudoWave(), "Either type or url must be specified"))
  expect_true(inherits(pseudoWave("noise", "white"), "PseudoWave"))
  expect_equal(pseudoWave("noise", "white")@type, "noise")
  expect_equal(pseudoWave("noise", "white")@subtype, "white")
  expect_equal(pseudoWave("noise", "white", scale=2)@scale, 2)
  expect_equal(pseudoWave("noise", "white", offset=3)@offset, 3)
  expect_equal(pseudoWave("noise", "white", seed=5)@seed, 5)
})

test_that("depseduoWave tests", {
  # Generate mono and stero sine waves
  m <- tuneR::sine(440, duration=44100, samp.rate=44100)
  s <- tuneR::sine(440, duration=44100, samp.rate=44100, stereo=TRUE)

  # Generate a white noise PseudoWave
  pw <- pseudoWave("noise", "white")

  # Add PseudoWave to sine
  mpw <- m + pw
  spw <- s + pw

  rmpw <- pw + m
  rspw <- pw + s

  # Should return a Wave object
  expect_true(inherits(mpw, "Wave"))
  expect_true(inherits(spw, "Wave"))
  expect_true(inherits(rmpw, "Wave"))
  expect_true(inherits(rspw, "Wave"))
  expect_equal(length(mpw@left), 44100)
  expect_equal(length(spw@left), 44100)
  expect_equal(length(rmpw@left), 44100)
  expect_equal(length(spw@right), 44100)
  expect_equal(length(rspw@right), 44100)

  # Generate mono and stereo silence
  mq <- tuneR::silence(44100, samp.rate=44100)
  sq <- tuneR::silence(44100, samp.rate=44100, stereo=TRUE)

  # Multiply PseudoWave by silence
  mqw <- mq * pw
  sqw <- sq * pw

  # Should return a silent Wave object
  expect_true(inherits(mqw, "Wave"))
  expect_true(inherits(sqw, "Wave"))
  expect_equal(sum(mqw@left), 0)
  expect_equal(sum(sqw@right), 0)

  # Generate sum of silence and sine PseudoWave
  spw1 <- tuneR::silence(duration=44100) + pseudoWave("sine", params=list(f0=440))
  expect_lte(max(spw1@left), 1)
  expect_lte(mean(spw1@left), 0.001)

  # Test scale parameter and multiplication / division
  spw2 <- tuneR::silence(duration=44100) + pseudoWave("sine", scale=0.5, params=list(f0=440))
  expect_lte(max(spw2@left), 0.5)
  expect_lte(mean(spw2@left), 0.001)

  spw4 <- tuneR::silence(duration=44100) + pseudoWave("sine", params=list(f0=440)) * 0.5
  expect_lte(max(spw4@left), 0.5)
  expect_lte(mean(spw4@left), 0.001)

  spw6 <- tuneR::silence(duration=44100) + 0.5 * pseudoWave("sine", params=list(f0=440))
  expect_lte(max(spw4@left), 0.5)
  expect_lte(mean(spw4@left), 0.001)

  spw8 <- tuneR::silence(duration=44100) + pseudoWave("sine", params=list(f0=440)) / 2
  expect_lte(max(spw8@left), 0.5)
  expect_lte(mean(spw8@left), 0.001)

  # Test offset parameter and addition / subtraction
  spw3 <- tuneR::silence(duration=44100) + pseudoWave("sine", offset=1, params=list(f0=440))
  expect_lte(max(spw3@left), 2)
  expect_gte(min(spw3@left), 0)
  expect_lte(mean(spw3@left), 1.001)
  expect_gte(mean(spw3@left), 0.999)

  spw5 <- tuneR::silence(duration=44100) + (pseudoWave("sine", params=list(f0=440)) + 1)
  expect_lte(max(spw5@left), 2)
  expect_gte(min(spw5@left), 0)
  expect_lte(mean(spw5@left), 1.001)
  expect_gte(mean(spw5@left), 0.999)

  spw7 <- tuneR::silence(duration=44100) + (1 + pseudoWave("sine", params=list(f0=440)))
  expect_lte(max(spw7@left), 2)
  expect_gte(min(spw7@left), 0)
  expect_lte(mean(spw7@left), 1.001)
  expect_gte(mean(spw7@left), 0.999)

  spw9 <- tuneR::silence(duration=44100) + (pseudoWave("sine", params=list(f0=440)) - 0.50)
  expect_lte(max(spw9@left), 0.5)
  expect_lte(mean(spw9@left), 0.001)
})

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.