def test_load(self): """Test dump_to_array() can load data.""" # Load UnitTestMessageA data. data = [msg for msg in log_data if msg['name'] == 'UnitTestMessageA'] # Load logged data into a list. pth = os.path.join(LOG_PATH, 'UnitTestMessageA.log') arr = dump_to_array(pth, ['timestamp', 'data']) # Ensure loaded data is valid. self.assertEqual(arr.ndim, 2) self.assertEqual(len(arr), len(data)) for i, item in enumerate(data): self.assertAlmostEqual(arr[i, 0], item['data']) self.assertAlmostEqual(arr[i, 1], item['timestamp'])
def test_load_time(self): """Test dump_to_array() can load a time range of data.""" # Load UnitTestMessageB. data = [msg for msg in log_data if msg['name'] == 'UnitTestMessageB'] # Load logged data into a list. pth = os.path.join(LOG_PATH, 'UnitTestMessageB.log') min_time = 0.15 max_time = 0.95 arr = dump_to_array(pth, ['timestamp'], min_time=min_time, max_time=max_time) # Ensure loaded data is valid. self.assertEqual(arr.ndim, 2) self.assertEqual(len(arr), 8) for i, item in enumerate(arr): self.assertAlmostEqual(arr[i], data[i + 1]['timestamp'])
def test_bad_input(self): """Test dump_to_array() bad input.""" bad_path = os.path.join(LOG_PATH, 'UnitTestMessageC.log') log_file = os.path.join(LOG_PATH, 'UnitTestMessageA.log') # Catch invalid paths. with self.assertRaises(IOError): dump_to_array(bad_path, ['data']) # Catch non iterable keys. with self.assertRaises(TypeError): dump_to_array(log_file, 5) # Catch non-string key. with self.assertRaises(TypeError): dump_to_array(log_file, ['data', 5]) # Catch non-existent key with self.assertRaises(KeyError): dump_to_array(log_file, ['error'])
def test_no_data(self): """Test dump_to_array() no data.""" log_path = os.path.join(LOG_PATH, 'UnitTestMessageA.log') array = dump_to_array(log_path, ['timestamp'], min_time=30.0) self.assertEqual(array, None)
def test_non_numeric(self): """Test dump_to_array() throws an exception on non-numeric types.""" with self.assertRaises(TypeError): dump_to_array(os.path.join(LOG_PATH, 'UnitTestMessageA.log'), ['name'])
def test_mixed_type(self): """Test dump_to_array() mixed types.""" with self.assertRaises(TypeError): dump_to_array(LOG_PATH, ['timestamp', 'data'])