diff --git a/aidge_core/unit_tests/test_tensor_scalar.py b/aidge_core/unit_tests/test_tensor_scalar.py new file mode 100644 index 0000000000000000000000000000000000000000..c054d3b877877c01b84b20983699758087bf05d8 --- /dev/null +++ b/aidge_core/unit_tests/test_tensor_scalar.py @@ -0,0 +1,136 @@ +""" +Copyright (c) 2023 CEA-List + +This program and the accompanying materials are made available under the +terms of the Eclipse Public License 2.0 which is available at +http://www.eclipse.org/legal/epl-2.0. + +SPDX-License-Identifier: EPL-2.0 +""" + +import unittest +import numpy as np + +import aidge_core + +class test_tensor_scalar(unittest.TestCase): + """Test tensor binding for scalar (0-rank) tensors + """ + def setUp(self): + pass + def tearDown(self): + pass + + def _scalar_np_array(self, dtype=None): + return np.array(1, dtype=dtype) + + def _scalar_np(self, dtype=None): + return np.int32(1).astype(dtype) + + def test_np_array_int_to_tensor(self): + np_array = self._scalar_np_array(dtype="int8") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.int8) + + np_array = self._scalar_np_array(dtype="int16") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.int16) + + np_array = self._scalar_np_array(dtype="int32") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.int32) + + np_array = self._scalar_np_array(dtype="int64") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.int64) + + def test_np_array_uint_to_tensor(self): + np_array = self._scalar_np_array(dtype="uint8") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.uint8) + + np_array = self._scalar_np_array(dtype="uint16") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.uint16) + + np_array = self._scalar_np_array(dtype="uint32") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.uint32) + + np_array = self._scalar_np_array(dtype="uint64") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.uint64) + + def test_np_scalar_int_to_tensor(self): + np_array = self._scalar_np(dtype="int8") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.int8) + + np_array = self._scalar_np(dtype="int16") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.int16) + + np_array = self._scalar_np(dtype="int32") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.int32) + + np_array = self._scalar_np(dtype="int64") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.int64) + + def test_np_scalar_uint_to_tensor(self): + np_array = self._scalar_np(dtype="uint8") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.uint8) + + np_array = self._scalar_np(dtype="uint16") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.uint16) + + np_array = self._scalar_np(dtype="uint32") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.uint32) + + np_array = self._scalar_np(dtype="uint64") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.uint64) + + def test_np_array_float_to_tensor(self): + np_array = self._scalar_np_array(dtype="float32") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.float32) + np_array = self._scalar_np_array(dtype="float64") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.float64) + + def test_np_scalar_float_to_tensor(self): + np_array = self._scalar_np(dtype="float32") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.float32) + np_array = self._scalar_np(dtype="float64") + t = aidge_core.Tensor(np_array) + self.assertEqual(t.dtype(), aidge_core.dtype.float64) + + def test_getcoord_getidx_scalar(self): + np_array = self._scalar_np_array() + t = aidge_core.Tensor(np_array) + coord = t.get_coord(0) + self.assertEqual(tuple(coord), ()) + idx = t.get_idx(coord) + self.assertEqual(idx, 0) + + def test_indexing_scalar(self): + np_array = self._scalar_np_array() + t = aidge_core.Tensor(np_array) + val = t[0] + self.assertEqual(val, np_array[()]) + + def test_coord_indexing_scalar(self): + np_array = self._scalar_np_array() + t = aidge_core.Tensor(np_array) + val = t[()] + self.assertEqual(val, np_array[()]) + + +if __name__ == '__main__': + unittest.main()