def test_various_data(self): """Test alert logic against data in the specified fixture. Note that the input data is actually divided by 100 before being input to the function under test. This slightly unfortunate design comes from wanting to exercise a couple of interesting edge cases without making the tests less readable by introducing extra floating points to the test input fixture. """ with open( settings.SITE_ROOT + '/frontend/tests/fixtures/' 'alert_test_cases.txt', 'rb') as expected: test_cases = expected.readlines() for test in each_cusum_test(test_cases): cusum = bookmark_utils.CUSUM(test['data'], window_size=3, sensitivity=5) cusum.work() new_result_formatted = extract_percentiles_for_alerts( cusum.as_dict()) error_message = "In test '%s':\n" % test['name'] error_message += " Input values: %s\n" % test['data'] error_message += "Expected alerts: %s\n" % test['expected'] self.assertEqual( new_result_formatted, test['expected'], error_message + " Got: %s" % new_result_formatted) info = cusum.get_last_alert_info() if info: change = deltawords(info['to'] * 100.0, info['from'] * 100.0) self.assertEqual(test['deltawords'], change) else: self.assertEqual(test['deltawords'], 'not at all')
def test_deltawords_negative(self): self.assertEqual(t.deltawords(29, 0), "considerably")
def test_deltawords_positive_all_sizes(self): self.assertEqual(t.deltawords(0, 100), "massively") self.assertEqual(t.deltawords(0, 29), "considerably") self.assertEqual(t.deltawords(0, 19), "moderately") self.assertEqual(t.deltawords(0, 1), "slightly") self.assertEqual(t.deltawords(0, 0), "not at all")