Add public Cloudy profile matching sample
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
"""Tests for the public profile-matching code sample."""
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
|
||||
from profile_matching import (
|
||||
INTEREST_WEIGHT,
|
||||
LOCATION_WEIGHT,
|
||||
PROJECT_TAG_WEIGHT,
|
||||
SKILL_WEIGHT,
|
||||
haversine_distance_km,
|
||||
jaccard_similarity,
|
||||
location_similarity,
|
||||
recommendation_score,
|
||||
weighted_jaccard_similarity,
|
||||
)
|
||||
|
||||
|
||||
class ProfileMatchingTests(unittest.TestCase):
|
||||
def test_component_weights_add_up_to_one(self) -> None:
|
||||
self.assertAlmostEqual(
|
||||
SKILL_WEIGHT + INTEREST_WEIGHT + LOCATION_WEIGHT + PROJECT_TAG_WEIGHT,
|
||||
1.0,
|
||||
)
|
||||
|
||||
def test_similarity_normalises_case_whitespace_and_duplicates(self) -> None:
|
||||
self.assertEqual(
|
||||
jaccard_similarity([" Python ", "python", ""], ["PYTHON"]), 1.0
|
||||
)
|
||||
|
||||
def test_empty_profiles_do_not_create_a_match(self) -> None:
|
||||
self.assertEqual(jaccard_similarity([], []), 0.0)
|
||||
self.assertEqual(location_similarity(None, (51.34, 12.37)), 0.0)
|
||||
|
||||
def test_unweighted_mode_is_backwards_compatible(self) -> None:
|
||||
left, right = ["Python", "Rust"], ["Rust", "TypeScript"]
|
||||
self.assertAlmostEqual(
|
||||
weighted_jaccard_similarity(left, right),
|
||||
jaccard_similarity(left, right),
|
||||
)
|
||||
|
||||
def test_shared_high_affinity_interest_increases_match_score(self) -> None:
|
||||
neutral = weighted_jaccard_similarity(
|
||||
["Hiking", "Opera"], ["Opera", "Cooking"]
|
||||
)
|
||||
personalised = weighted_jaccard_similarity(
|
||||
["Hiking", "Opera"], ["Opera", "Cooking"], {"opera": 3.0}
|
||||
)
|
||||
self.assertGreater(personalised, neutral)
|
||||
|
||||
def test_distance_is_symmetric_and_decays_to_zero(self) -> None:
|
||||
leipzig = (51.3397, 12.3731)
|
||||
berlin = (52.52, 13.405)
|
||||
self.assertAlmostEqual(
|
||||
haversine_distance_km(*leipzig, *berlin),
|
||||
haversine_distance_km(*berlin, *leipzig),
|
||||
)
|
||||
self.assertEqual(location_similarity(leipzig, berlin), 0.0)
|
||||
|
||||
def test_final_score_is_explainable_weighted_sum(self) -> None:
|
||||
self.assertAlmostEqual(
|
||||
recommendation_score(0.5, 0.5, 1.0, 0.0),
|
||||
0.475,
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user