Esempio n. 1
0
class TestKNN(unittest.TestCase):
    def setUp(self):
        np.genfromtxt = mock.MagicMock(return_value=np.empty([2, 2]))
        self.target = KNN("", "")

    def test_distinct(self):
        input = [
            1, 2, 3, 2, 2, 1, 5, 4, 4, 5, 4, 3, 2, 2, 1, 2, 5, 4, 6, 5, 4, 4,
            3, 2, 3, 4, 3, 1, 5, 2, 6, 4, 6
        ]
        expected = [1, 2, 3, 5, 4, 6]

        self.assertEqual(self.target._distinct(input), expected)

    def test_calculateDistance(self):
        instance1 = np.array([3, 104])
        instance2 = np.array([18, 90])

        self.assertEqual(self.target.calculateDistance(instance1, instance2),
                         20.518284528683193)

    def test_calculateDistances(self):
        magicMock = mock.MagicMock()
        magicMock.side_effect = [1, 0.3, 2, 0.15, 3, 2, 6, 99, 0.015, 0.191]
        self.target.calculateDistance = magicMock

        result = self.target.calculateDistances(np.empty(10),
                                                np.empty([10, 10]))

        self.assertEqual(result[0],
                         [1, 0.3, 2, 0.15, 3, 2, 6, 99, 0.015, 0.191])
        self.assertTrue((result[1] == np.array([8, 3, 9, 1, 0, 2, 5, 4, 6,
                                                7])).all())
Esempio n. 2
0
    def test_distance_calculation(self):
        knn = KNN(None) #params not needed to test this functionality
        vector1 = [0,0,0,0,0]
        vector2 = [5,5,5,5,5]

        expectedDistance = (5**2 + 5**2 + 5**2 + 5**2 + 5**2) ** 0.5

        self.assertAlmostEqual(knn.calculateDistance(vector1, vector2), expectedDistance)