class TestEEGTableData(unittest.TestCase): def setUp(self): self.header = ["Timestamp", "X", "Y", "Z"] self.data = np.array([ [1456820379.00, 1, 2, 3], [1456820379.25, 1, 2, 4], [1456820379.50, 1, 2, 5], [1456820379.75, 1, 2, 6], [1456820380.00, 1, 2, 7], [1456820380.25, 1, 2, 8], [1456820380.50, 1, 2, 9], [1456820380.75, 1, 2, 10], [1456820381.00, 1, 2, 11] ]) self.eegData = EEGTableUtil(self.header, self.data) def test_getSamplingRate(self): # 9 values within 2 seconds = sampling rate 4.5 self.assertTrue(self.eegData.getSamplingRate() == 4.5) def test_getColumn(self): for i, header in enumerate(self.header[1:3]): column = self.eegData.getColumn(header) # make sure data columns only contain X:1, Y:2 self.assertTrue(countOcc(column, i+1) == len(self.data)) def test_getColumn_withOffset(self): offset = 3 column = self.eegData.getColumn("Z", offset) self.assertTrue(len(column) == len(self.data)-offset) self.assertTrue(sameEntries(column, [6, 7, 8, 9, 10, 11])) def test_getColumn_withOffsetAndLimit(self): offset = 3 limit = 7 column = self.eegData.getColumn("Z", offset, limit) self.assertTrue(len(column) == limit-offset) self.assertTrue(sameEntries(column, [6, 7, 8, 9])) def test_getColumn_withOffsetAndLength(self): offset = 2 length = 5 column = self.eegData.getColumn("Z", offset, length=length) self.assertTrue(len(column) == length) self.assertTrue(sameEntries(column, [5, 6, 7, 8, 9])) def test_getColumn_withOffsetAndLimitAndLength(self): offset = 1 limit = 7 # length is ignored in this case length = 3 column = self.eegData.getColumn("Z", offset, limit, length=length) self.assertTrue(len(column) == limit-offset) self.assertTrue(sameEntries(column, [4, 5, 6, 7, 8, 9])) def test_getTimeIndex(self): self.assertTrue(self.eegData.getTimeIndex(1456820379.00) == 0) self.assertTrue(self.eegData.getTimeIndex(1456820379.75) == 3) self.assertTrue(self.eegData.getTimeIndex(1456820381) == 8) def test_getTimeIndex_notExactly(self): self.assertTrue(self.eegData.getTimeIndex(1456820379.00) == 0) self.assertTrue(self.eegData.getTimeIndex(1456820379.01) == 1) self.assertTrue(self.eegData.getTimeIndex(1456820379.5) == 2) self.assertTrue(self.eegData.getTimeIndex(1456820379.51) == 3) self.assertTrue(self.eegData.getTimeIndex(1456820379.74) == 3) self.assertTrue(self.eegData.getTimeIndex(1456820379.75) == 3) self.assertTrue(self.eegData.getTimeIndex(1456820379.76) == 4) self.assertTrue(self.eegData.getTimeIndex(1456820381) == 8) def test_getTimeIndex_outOfRange(self): with self.assertRaises(ValueError): self.eegData.getTimeIndex(1456820378.00) with self.assertRaises(ValueError): self.eegData.getTimeIndex(1456820382.00) def test_getColumnByTime(self): column = self.eegData.getColumnByTime("Z", 1456820379.00, 1456820379.75) self.assertTrue(sameEntries(column, [3, 4, 5])) column2 = self.eegData.getColumnByTime("Z", 1456820379.00, 1456820381) self.assertTrue(sameEntries(column2, [3, 4, 5, 6, 8, 8, 9, 10])) def test_getColumnByTime_notExactly(self): column = self.eegData.getColumnByTime("Z", 1456820379.00, 1456820379.75) self.assertTrue(sameEntries(column, [3, 4, 5])) column2 = self.eegData.getColumnByTime("Z", 1456820379.01, 1456820379.75) self.assertTrue(sameEntries(column2, [4, 5])) column3 = self.eegData.getColumnByTime("Z", 1456820379.00, 1456820379.74) self.assertTrue(sameEntries(column3, [3, 4, 5])) column4 = self.eegData.getColumnByTime("Z", 1456820379.00, 1456820379.76) self.assertTrue(sameEntries(column4, [3, 4, 5, 6])) def test_getColumnByTime_outOfRange(self): with self.assertRaises(ValueError): self.eegData.getColumnByTime("Z", 1456820378.00, 1456820379.75) with self.assertRaises(ValueError): self.eegData.getColumnByTime("Z", 1456820379.00, 1456820382.0) def test__switchTime(self): x, y = 1, 2 a, b = self.eegData._switchTime(x, y) self.assertEqual(x, b) self.assertEqual(y, a) def test__timeInData(self): data = self.eegData.getColumn("Timestamp") self.assertTrue(self.eegData._timeInData(data, 1456820379.75)) self.assertFalse(self.eegData._timeInData(data, 1456820378)) self.assertFalse(self.eegData._timeInData(data, 1456820382)) def test_getValueCount(self): count = self.eegData.getValueCount() self.assertEquals(count, 9)