Reorganize and add calibration database
This commit is contained in:
97
python_driver/test.py
Normal file
97
python_driver/test.py
Normal file
@@ -0,0 +1,97 @@
|
||||
"""Test the functions."""
|
||||
|
||||
import unittest
|
||||
import calibration_db as db
|
||||
import sqlite3
|
||||
|
||||
TEST_HEIGHT = 1.0
|
||||
TEST_VOLUME = 1000.0
|
||||
|
||||
|
||||
class TestDatabaseMethods(unittest.TestCase):
|
||||
"""Class for testing database methods."""
|
||||
|
||||
def test_01_setuptable(self):
|
||||
"""Test the setup_calibration_table function."""
|
||||
try:
|
||||
db.setup_calibration_table(drop_first=True)
|
||||
cursor = db.SQLITE_CONN.cursor()
|
||||
cursor.execute("SELECT * FROM cal_data")
|
||||
cursor.fetchone()
|
||||
self.assertTrue(True, msg="Table is accessible.")
|
||||
except sqlite3.OperationalError:
|
||||
self.assertTrue(False, msg="Table is not accessible.")
|
||||
|
||||
def test_02_getemptytable(self):
|
||||
"""Test that an empty table is returned if no entries."""
|
||||
self.assertListEqual(db.get_calibration_data(), [], msg="Calibration table is empty.")
|
||||
|
||||
def test_03_insertcalibrationdata(self):
|
||||
"""Test the insert_calibration_data function."""
|
||||
db.insert_calibration_data(TEST_HEIGHT, TEST_VOLUME)
|
||||
cursor = db.SQLITE_CONN.cursor()
|
||||
cursor.execute("SELECT * FROM cal_data")
|
||||
result = cursor.fetchone()
|
||||
self.assertEqual(result[1], TEST_HEIGHT, msg="Height fetched OK")
|
||||
self.assertEqual(result[2], TEST_VOLUME, msg="Volume fetched OK")
|
||||
|
||||
def test_04_getcaldatasingle(self):
|
||||
"""Test the get_calibration_data function for a single row."""
|
||||
inserted_row = db.insert_calibration_data(TEST_HEIGHT, TEST_VOLUME)
|
||||
fetched_row = db.get_calibration_data(single_entry=inserted_row)
|
||||
self.assertEqual(fetched_row[1], TEST_HEIGHT, msg="Height fetched OK")
|
||||
self.assertEqual(fetched_row[2], TEST_VOLUME, msg="Volume fetched OK")
|
||||
|
||||
def test_05_get_caldataall(self):
|
||||
"""Test the get_calibration_data function for all rows."""
|
||||
db.insert_calibration_data(TEST_HEIGHT, TEST_VOLUME)
|
||||
fetched_data = db.get_calibration_data()
|
||||
self.assertEqual(len(fetched_data), 3, msg="Should have 3 rows of data.")
|
||||
|
||||
def test_06_deletecaldata(self):
|
||||
"""Test the delete_calibration_data function."""
|
||||
cal_data = db.get_calibration_data()
|
||||
start_len = len(cal_data)
|
||||
db.delete_calibration_data(cal_data[-1][0])
|
||||
end_len = len(db.get_calibration_data())
|
||||
self.assertEqual(start_len - 1, end_len, msg="Length of data array is good after delete. {} = {}".format(start_len - 1, end_len))
|
||||
|
||||
def test_07_checkscaledata(self):
|
||||
"""Test the scaling function."""
|
||||
expected = [
|
||||
[0.5, 0.5],
|
||||
[1.5, 1.5],
|
||||
[2.5, 3.0],
|
||||
[3.5, 6.0],
|
||||
[4.5, 12.0],
|
||||
[5.5, 24.0],
|
||||
[6.5, 48.0],
|
||||
[7.5, 96.0],
|
||||
[8.5, 192.0],
|
||||
[9.5, 384.0],
|
||||
[10.5, 640.0],
|
||||
]
|
||||
|
||||
db.setup_calibration_table(drop_first=True)
|
||||
db.insert_calibration_data(1.0, 1.0)
|
||||
db.insert_calibration_data(2.0, 2.0)
|
||||
db.insert_calibration_data(3.0, 4.0)
|
||||
db.insert_calibration_data(4.0, 8.0)
|
||||
db.insert_calibration_data(5.0, 16.0)
|
||||
db.insert_calibration_data(6.0, 32.0)
|
||||
db.insert_calibration_data(7.0, 64.0)
|
||||
db.insert_calibration_data(8.0, 128.0)
|
||||
db.insert_calibration_data(9.0, 256.0)
|
||||
db.insert_calibration_data(10.0, 512.0)
|
||||
|
||||
for i in range(0, len(expected)):
|
||||
self.assertEqual(db.get_volume_for_height(expected[i][0]), expected[i][1], msg="Volume equal. {} == {}".format(db.get_volume_for_height(expected[i][0]), expected[i][1]))
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
"""Tear down function."""
|
||||
db.setup_calibration_table(drop_first=True)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user