test_field_similarity.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import unittest
  2. from field_similarity import analyze_fields
  3. class TestAnalyzeFields(unittest.TestCase):
  4. def test_full_match(self):
  5. result = analyze_fields("hello world", "hello@@world")
  6. self.assertEqual(result["field_count"], 2)
  7. self.assertEqual(result["non_zero_count"], 2)
  8. self.assertAlmostEqual(result["avg_ratio"], 1.0)
  9. self.assertAlmostEqual(result["max_ratio"], 1.0)
  10. def test_partial_match(self):
  11. result = analyze_fields("abc", "zab")
  12. self.assertEqual(result["field_count"], 1)
  13. self.assertEqual(result["non_zero_count"], 1)
  14. self.assertAlmostEqual(result["avg_ratio"], 2 / 3)
  15. self.assertAlmostEqual(result["max_ratio"], 2 / 3)
  16. def test_zero_match(self):
  17. result = analyze_fields("abc", "xyz")
  18. self.assertEqual(result["field_count"], 1)
  19. self.assertEqual(result["non_zero_count"], 0)
  20. self.assertAlmostEqual(result["avg_ratio"], 0.0)
  21. self.assertAlmostEqual(result["max_ratio"], 0.0)
  22. def test_empty_fields_are_skipped(self):
  23. result = analyze_fields("abc", "ab@@@@bc")
  24. self.assertEqual(result["field_count"], 2)
  25. self.assertEqual(result["non_zero_count"], 2)
  26. self.assertAlmostEqual(result["avg_ratio"], (1 + 1) / 2)
  27. self.assertAlmostEqual(result["max_ratio"], 1.0)
  28. def test_all_empty_fields(self):
  29. result = analyze_fields("abc", "@@")
  30. self.assertEqual(result, {})
  31. def test_empty_field_list_string(self):
  32. result = analyze_fields("abc", "")
  33. self.assertEqual(result, {})
  34. def test_empty_question(self):
  35. result = analyze_fields("", "a@@bb")
  36. self.assertEqual(result["field_count"], 2)
  37. self.assertEqual(result["non_zero_count"], 0)
  38. self.assertAlmostEqual(result["avg_ratio"], 0.0)
  39. self.assertAlmostEqual(result["max_ratio"], 0.0)
  40. if __name__ == "__main__":
  41. unittest.main()