56 lines
2.1 KiB
Python
56 lines
2.1 KiB
Python
import unittest
|
|
from stimuli.StepStimulus import StepStimulus
|
|
import numpy as np
|
|
|
|
|
|
class TestStepStimulus(unittest.TestCase):
|
|
|
|
def test_time_getters(self):
|
|
starts = [2, -5, 0, 10]
|
|
durations = [2, 1000, 0.5]
|
|
value = 10
|
|
|
|
for start in starts:
|
|
for duration in durations:
|
|
stimulus = StepStimulus(start, duration, value)
|
|
|
|
self.assertEqual(start, stimulus.get_stimulus_start_s(), "reported start (s) was wrong")
|
|
self.assertEqual(duration, stimulus.get_stimulus_duration_s(), "reported duration (s) was wrong")
|
|
self.assertEqual(start + duration, stimulus.get_stimulus_end_s(), "reported end (s) was wrong")
|
|
|
|
self.assertEqual(start * 1000, stimulus.get_stimulus_start_ms(), "reported start (ms) was wrong")
|
|
self.assertEqual(duration * 1000, stimulus.get_stimulus_duration_ms(), "reported duration (ms) was wrong")
|
|
self.assertEqual((start + duration)*1000, stimulus.get_stimulus_end_ms(), "reported end (ms) was wrong")
|
|
|
|
def test_duration_must_be_positive(self):
|
|
self.assertRaises(ValueError, StepStimulus, 1, -1, 3)
|
|
|
|
def test_value_at(self):
|
|
start = 0
|
|
duration = 2
|
|
value = 5
|
|
base_value = -1
|
|
stimulus = StepStimulus(start, duration, value, base_value)
|
|
|
|
for i in np.arange(start-1, start+duration+1, 0.1):
|
|
if i < start or i > start+duration:
|
|
self.assertEqual(stimulus.value_at_time_in_s(i), base_value)
|
|
self.assertEqual(stimulus.value_at_time_in_ms(i*1000), base_value)
|
|
else:
|
|
self.assertEqual(stimulus.value_at_time_in_s(i), value)
|
|
self.assertEqual(stimulus.value_at_time_in_ms(i * 1000), value)
|
|
|
|
def test_amplitude(self):
|
|
stim_values = [-10, -5, 0, 15, 20]
|
|
base_values = [-10, -5, -2, 0, 1, 15]
|
|
|
|
for s_value in stim_values:
|
|
for b_value in base_values:
|
|
stimulus = StepStimulus(0, 1, s_value, b_value)
|
|
|
|
self.assertEqual(stimulus.get_amplitude(), s_value-b_value)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|