How to use the limit_test_declaration plugin.

This plugin allows for the naming of goals and what values are needed to pass.

In a test class, define a method register_tests(self). Within this method, for each named goal, select which type of test to register based on how the limits are defined.

	self.register_test_functional(name, description=None, notes=None, requirement_reference=None):
		If the expected result is simply a Pass/Fail.
	self.register_test_exact(name, expect, description=None, notes=None, requirement_reference=None):
		To pass, all results are an exact value.
	self.register_test_abs_limits(name, min_abs=None, max_abs=None, description=None, notes=None, requirement_reference=None):
		To pass, all results are within two given values.
	self.register_test_abs_tol(name, expect, abs_tolerance, description=None, notes=None, requirement_reference=None)
		To pass, all results are within a given absolute distance from an expected value. (e.g. expect=5, abs_tolerance=2, pass window of 3 to 7)
	self.register_test_rel_tol(name, expect, rel_tolerance, description=None, notes=None, requirement_reference=None):
		To pass, all results are within a given relative distance from an expected value. (e.g. expect=8, rel_tolerance=0.5, pass window of 4 to 12)
	self.register_test_abs_tol_asym(name, expect, min_abs_tolerance=None, max_abs_tolerance=None, description=None, notes=None, requirement_reference=None):
		To pass, all results are within a given absolute distance from an expected value. (e.g. expect=5, min_abs_tolerance=2, max_abs_tolerance=3, pass window of 3 to 8)
	self.register_test_rel_tol_asym(name, expect, min_rel_tolerance=None, max_rel_tolerance=None, description=None, notes=None, requirement_reference=None):
		To pass, all results are within a given relative distance from an expected value. (e.g. expect=8, min_rel_tolerance=0.5, max_rel_tolerance=0.25, pass window of 4 to 10)

Also in the test class, define a method compile_test_results(self, database, table_name). Within this method, prepare the data from the database that will be submitted to a named goal and submit the data using the function:

	self.register_test_result(name, data)

For example, say for a dut the output voltage of channel 2 needs to stay within 3% of 5V and the output current needs to stay under 500mA. In the test class, it would look something like this:

	def register_tests(self):
		self.register_test_rel_tol(name='DUT_CH2_VOUT', expect=5, rel_tolerance=0.03)
		self.register_test_abs_limits(name='DUT_CH2_IOUT', max_abs=0.5)

	def compile_test_results(self, database, table_name):
		vout_data = database.query(f'SELECT vout2_meas FROM {table_name})
		self.register_test_result(name='DUT_CH2_VOUT', data=vout_data)
		
		iout_data = database.query(f'SELECT iout2_meas FROM {table_name})
		self.register_test_result(name='DUT_CH2_IOUT', data=iout_data)