def test_cosine_similarity_similar_vectors_2d(self): """Should return 1 for vectors pointing in same directions""" v1 = (1, 1) v2 = (2, 2) self.assertAlmostEqual(cosine_similarity(v1, v2), 1, 9)
def test_cosine_similarity_similar_vectors_3d_lists(self): """Should compute cosine similarity regardless vector representation or dimension""" v1 = [1, 1, 1] v2 = [2, 2, 2] self.assertAlmostEqual(cosine_similarity(v1, v2), 1, 9)
def test_cosine_similarity_opposite_vectors_2d(self): """Should return -1 for vectors pointing in opposite directions""" v1 = (1, 1) v2 = (-2, -2) self.assertAlmostEqual(cosine_similarity(v1, v2), -1, 9)
def test_cosine_similarity_floating_point_rounding_error_negative(self): """Should return -1 as minimum in case of floating point rounding errors""" v1 = (0.0000015006504264572506635033732891315594, 0.0000006050474740115774352489097509533167) v2 = (-0.0000015006504264503117695994660607539117, -0.0000006050474739005551327863940969109535) self.assertTrue(cosine_similarity(v1, v2) >= -1)
def test_cosine_similarity_orthogonal_vectors_2d(self): """Should return 0 for orthogonal vectors""" v1 = (1, 1) v2 = (2, -2) self.assertAlmostEqual(cosine_similarity(v1, v2), 0, 9)