# Copyright (c) IMToolkit Development Team
# This toolkit is released under the MIT License, see LICENSE.txt
import unittest
import numpy as np
import imtoolkit.IMUtil as imu
[docs]class IMUtilTest(unittest.TestCase):
[docs] def test_convertIndsToVector(self):
ret = imu.convertIndsToVector([[0, 1], [0, 2]], M = 4)
np.testing.assert_array_almost_equal(ret, [np.array([[1], [1], [0], [0]]), np.array([[1], [0], [1], [0]])])
[docs] def test_convertIndsToMatrix(self):
ret = imu.convertIndsToMatrix([[0, 1], [0, 2]], M = 4)
np.testing.assert_array_almost_equal(ret, [np.array([[1., 0.], [0., 1.], [0., 0.], [0., 0.]]), np.array([[1., 0.], [0., 0.], [0., 1.], [0., 0.]])])
[docs] def test_convertIndsToIndsDec(self):
ret = imu.convertIndsToIndsDec([[0, 1], [0, 2]], M = 4)
self.assertEqual(ret, [3, 5])
[docs] def test_convertIndsDecToInds(self):
ret = imu.convertIndsDecToInds(indsdecs = [3,5,10,12], M = 4)
self.assertEqual(ret, [[0, 1], [0, 2], [1, 3], [2, 3]])
[docs] def test_getIndexes(self):
self.assertEqual(imu.getIndexes("opt", 4, 2, 4), [[0, 1], [0, 3], [1, 2], [2, 3]])
self.assertEqual(imu.getIndexes("dic", 4, 2, 4), [[0, 1], [0, 2], [0, 3], [1, 2]])
self.assertEqual(imu.getIndexes("mes", 4, 2, 4), [[2, 3], [1, 3], [1, 2], [0, 3]])
self.assertEqual(imu.getIndexes("wen", 4, 2, 4), [[0, 1], [1, 2], [2, 3], [0, 3]])
[docs] def test_getProbabilityOfActivation(self):
ret = imu.getProbabilityOfActivation([[0], [1], [2], [3]], 4)
np.testing.assert_array_almost_equal(ret, np.ones(4) / 4)
ret = imu.getProbabilityOfActivation([[0, 1], [0, 3], [1, 2], [2, 3]], 4)
np.testing.assert_array_almost_equal(ret, np.ones(4) / 2)
[docs] def test_getHammingDistance(self):
self.assertEqual(imu.getHammingDistance([0,1], [1,0]), 2)
self.assertEqual(imu.getHammingDistance([1,1,0,0], [0,0,1,1]), 4)
[docs] def test_getMinimumHammingDistance(self):
minh = imu.getMinimumHammingDistance(imu.getIndexes("opt", 16, 8, 16), 16)
self.assertEqual(minh, 8)
minh = imu.getMinimumHammingDistance(imu.getIndexes("dic", 16, 8, 16), 16)
self.assertEqual(minh, 2)
[docs] def test_getSumHamming(self):
ret = imu.getSumHamming(inds = [[0,1],[2,3],[1,2],[0,3]], M = 4)
self.assertEqual(ret, 16)
[docs] def test_checkConflict(self):
self.assertFalse(imu.checkConflict([[0, 1], [0, 2]]))
self.assertTrue(imu.checkConflict([[0, 1], [0, 1]]))
[docs] def test_getDictionaryIndexesList(self):
ret = imu.getDictionaryIndexesList(4, 2, 4)
self.assertTrue(ret == [[0, 1], [0, 2], [0, 3], [1, 2]])
[docs] def test_wen2016EquiprobableSubcarrierActivation(self):
ret = imu.wen2016EquiprobableSubcarrierActivation(M = 2, K = 1)
np.testing.assert_array_equal(ret, [[0], [1]])
ret = imu.wen2016EquiprobableSubcarrierActivation(M = 4, K = 1)
np.testing.assert_array_equal(ret, [[0], [1], [2], [3]])
ret = imu.wen2016EquiprobableSubcarrierActivation(M = 4, K = 2)
np.testing.assert_array_equal(ret, [[0, 1], [1, 2], [2, 3], [0, 3]])
[docs] def test_getIMParameters(self):
np.testing.assert_array_equal(imu.getIMParameters(4, 2), [[4, 2, 2], [4, 2, 4]])
if __name__ == '__main__':
unittest.main()