import unittest from evaluate import evaluate_case, evaluate_run class EvaluationTests(unittest.TestCase): def test_repeated_employer_date_ranges_keep_their_own_achievements(self): jobs = [{"company": "A", "title": "Engineer", "start": "2020", "end": "2021", "bullets": ["First role"]}, {"company": "A", "title": "Engineer", "start": "2022", "end": "2023", "bullets": ["Second role"]}] swapped = [{**jobs[0], "bullets": jobs[1]["bullets"]}, {**jobs[1], "bullets": jobs[0]["bullets"]}] result = evaluate_case({"jobs": jobs}, {"jobs": swapped}) self.assertFalse(result["employmentExact"]) self.assertLess(result["recall"], 1) def test_extra_employment_is_an_unsupported_claim(self): truth = {"jobs": [{"company": "Example AS", "title": "Engineer", "start": "2020"}]} actual = {"jobs": truth["jobs"] + [{"company": "Invented AS", "title": "Director"}]} result = evaluate_case(truth, actual) self.assertEqual(result["falsePositive"], 2) self.assertEqual(result["falseNegative"], 0) self.assertEqual(result["employmentExact"], False) def test_year_to_month_is_not_an_acceptable_normalisation(self): result = evaluate_case({"jobs": [{"company": "A", "start": "2020"}]}, {"jobs": [{"company": "A", "start": "2020-01"}]}) self.assertLess(result["dateRecall"], 1) def test_reordered_records_keep_associations(self): jobs = [{"company": "A", "title": "Developer"}, {"company": "B", "title": "Designer"}] self.assertEqual(evaluate_case({"jobs": jobs}, {"jobs": jobs[::-1]})["recall"], 1) swapped = [{"company": "A", "title": "Designer"}, {"company": "B", "title": "Developer"}] self.assertLess(evaluate_case({"jobs": jobs}, {"jobs": swapped})["recall"], 1) def test_unicode_whitespace_only_normalisation_preserves_technical_skills(self): result = evaluate_case({"skills": ["C++", "C#", " Blåbær "]}, {"skills": ["c++", "c#", "Blåbær"]}) self.assertEqual(result["precision"], 1) self.assertEqual(result["recall"], 1) self.assertLess(evaluate_case({"skills": ["C++"]}, {"skills": ["C"]})["precision"], 1) def test_missing_case_counts_against_completion(self): corpus = [{"id": "a", "expected": {"skills": ["Python"]}}, {"id": "b", "expected": {"skills": ["C#"]}}] result = evaluate_run(corpus, {"a": {"profile": {"skills": ["Python"]}}}) self.assertEqual(result["completion"], .5) self.assertEqual(result["microRecall"], .5) self.assertEqual(result["realAiAccuracy"], "BLOCKED") if __name__ == "__main__": unittest.main()