P-unit_model/unittests/TestStepStimulus.py
2020-05-10 13:55:48 +02:00

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()