# imports import numpy as np import unittest # objects to test from bsfs.triple_store.sparql import distance ## code ## class TestDistance(unittest.TestCase): def test_euclid(self): # self-distance is zero self.assertEqual(distance.euclid([1,2,3,4], [1,2,3,4]), 0.0) # accepts list-like arguments self.assertAlmostEqual(distance.euclid([1,2,3,4], [2,3,4,5]), 2.0, 3) self.assertAlmostEqual(distance.euclid((1,2,3,4), (2,3,4,5)), 2.0, 3) # dimension can vary self.assertAlmostEqual(distance.euclid([1,2,3], [2,3,4]), 1.732, 3) self.assertAlmostEqual(distance.euclid([1,2,3,4,5], [2,3,4,5,6]), 2.236, 3) # vector can be zero self.assertAlmostEqual(distance.euclid([0,0,0], [1,2,3]), 3.742, 3) def test_cosine(self): # self-distance is zero self.assertEqual(distance.cosine([1,2,3,4], [1,2,3,4]), 0.0) # accepts list-like arguments self.assertAlmostEqual(distance.cosine([1,2,3,4], [4,3,2,1]), 0.333, 3) self.assertAlmostEqual(distance.cosine((1,2,3,4), (4,3,2,1)), 0.333, 3) # dimension can vary self.assertAlmostEqual(distance.cosine([1,2,3], [3,2,1]), 0.286, 3) self.assertAlmostEqual(distance.cosine([1,2,3,4,5], [5,4,3,2,1]), 0.364, 3) # vector can be zero self.assertAlmostEqual(distance.cosine([0,0,0], [1,2,3]), 1.0, 3) def test_manhatten(self): # self-distance is zero self.assertEqual(distance.manhatten([1,2,3,4], [1,2,3,4]), 0.0) # accepts list-like arguments self.assertAlmostEqual(distance.manhatten([1,2,3,4], [2,3,4,5]), 4.0, 3) self.assertAlmostEqual(distance.manhatten((1,2,3,4), (2,3,4,5)), 4.0, 3) # dimension can vary self.assertAlmostEqual(distance.manhatten([1,2,3], [2,3,4]), 3.0, 3) self.assertAlmostEqual(distance.manhatten([1,2,3,4,5], [2,3,4,5,6]), 5.0, 3) # vector can be zero self.assertAlmostEqual(distance.manhatten([0,0,0], [1,2,3]), 6.0, 3) ## main ## if __name__ == '__main__': unittest.main() ## EOF ##