Completed
Push — master ( e240c9...6ac358 )
by Ramon
02:34
created

NPTypingTestSuite.test_heterogeneous_array()   A

Complexity

Conditions 2

Size

Total Lines 25
Code Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 21
nop 1
dl 0
loc 25
rs 9.376
c 0
b 0
f 0
1
from unittest import TestCase
2
import numpy as np
3
from nptyping import Array
4
5
6
class NPTypingTestSuite(TestCase):
7
    def test_isinstance(self):
8
        arr = np.array([[1, 2, 3],
9
                        [4, 5, 6],
10
                        [7, 8, 9],
11
                        [8, 7, 6]])
12
13
        self.assertTrue(isinstance(arr, Array[int, 4, ...]))
14
        self.assertTrue(isinstance(arr, Array[int, 4]))
15
        self.assertTrue(isinstance(arr, Array[int, 4, None]))
16
        self.assertTrue(isinstance(arr, Array[int]))
17
        self.assertTrue(isinstance(arr, Array[int, ...]))
18
        self.assertTrue(isinstance(arr, Array[int, ..., 3]))
19
        self.assertTrue(isinstance(arr, Array[int, ..., ...]))
20
        self.assertTrue(not isinstance(arr, Array[int, 5, ...]))
21
        self.assertTrue(not isinstance(arr, Array[int, ..., 5]))
22
        self.assertTrue(not isinstance(arr, Array[int, 5, 5]))
23
24
        self.assertTrue(isinstance(np.array([1.0, 2.0, 3.0]), Array[float]))
25
        self.assertTrue(not isinstance(np.array([1.0, 2.0, 3.0]), Array[int]))
26
        self.assertTrue(isinstance(np.array([1.0, 2.0, 3.0]), Array))
27
        self.assertTrue(isinstance(np.array([]), Array[int]))
28
29
        self.assertTrue(isinstance(np.array(['1', '22', '333']), Array[str]))
30
31
    def test_heterogeneous_array(self):
32
        dtype = [('a', float), ('b', float), ('c', int), ('d', str)]
33
        a = np.array(
34
            [
35
                (1.0, 2.0, 3, '4'),
36
                (5.0, 6.0, 7, '8')
37
            ],
38
            dtype=dtype)
39
40
        self.assertTrue(isinstance(a, Array[float, float, int, str, 2]))
41
        self.assertTrue(isinstance(a, Array[float, float, int, str, ...]))
42
        self.assertTrue(isinstance(a, Array[float, float, int, str]))
43
        self.assertTrue(not isinstance(a, Array[float, int, int, str, 2]))
44
        self.assertTrue(not isinstance(a, Array[float, float, str, 2]))
45
        self.assertTrue(not isinstance(a, Array[float, float, str, 3]))
46
        with self.assertRaises(TypeError):
47
            Array[float, float, int, 'should be an int']
48
49
        dtype = [('a', int), ('b', int), ('c', int), ('d', int)]
50
        a = np.array(
51
            [
52
                (1, 2, 3, 4),
53
                (11, 22, 33, 44)
54
            ],
55
            dtype=dtype)
56
57
    def test_identity(self):
58
        self.assertTrue(Array is Array)
59
        self.assertTrue(Array[int] is Array[int])
60
        self.assertTrue(Array[int, 1, 1] is Array[int, 1, 1])
61
62
    def test_empty_arg(self):
63
        with self.assertRaises(TypeError):
64
            Array[tuple()]
65