Completed
Push — master ( c5c112...117b26 )
by Ramon
14s queued 10s
created

NPTypingTestSuite.test_instantiation()   A

Complexity

Conditions 2

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 3
nop 1
dl 0
loc 3
rs 10
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))
14
        self.assertTrue(isinstance(arr, Array[int, 4, ...]))
15
        self.assertTrue(isinstance(arr, Array[int, 4]))
16
        self.assertTrue(isinstance(arr, Array[int, 4, None]))
17
        self.assertTrue(isinstance(arr, Array[int]))
18
        self.assertTrue(isinstance(arr, Array[int, ...]))
19
        self.assertTrue(isinstance(arr, Array[int, ..., 3]))
20
        self.assertTrue(isinstance(arr, Array[int, ..., ...]))
21
        self.assertTrue(not isinstance(arr, Array[int, 5, ...]))
22
        self.assertTrue(not isinstance(arr, Array[int, ..., 5]))
23
        self.assertTrue(not isinstance(arr, Array[int, 5, 5]))
24
25
        self.assertTrue(isinstance(np.array([1.0, 2.0, 3.0]), Array[float]))
26
        self.assertTrue(not isinstance(np.array([1.0, 2.0, 3.0]), Array[int]))
27
        self.assertTrue(isinstance(np.array([1.0, 2.0, 3.0]), Array))
28
        self.assertTrue(isinstance(np.array([]), Array[int]))
29
30
        self.assertTrue(isinstance(np.array(['1', '22', '333']), Array[str]))
31
32
    def test_heterogeneous_array(self):
33
        dtype = [('a', float), ('b', float), ('c', int), ('d', str)]
34
        a = np.array(
35
            [
36
                (1.0, 2.0, 3, '4'),
37
                (5.0, 6.0, 7, '8')
38
            ],
39
            dtype=dtype)
40
41
        self.assertTrue(isinstance(a, Array[float, float, int, str, 2]))
42
        self.assertTrue(isinstance(a, Array[float, float, int, str, ...]))
43
        self.assertTrue(isinstance(a, Array[float, float, int, str]))
44
        self.assertTrue(not isinstance(a, Array[float, int, int, str, 2]))
45
        self.assertTrue(not isinstance(a, Array[float, float, str, 2]))
46
        self.assertTrue(not isinstance(a, Array[float, float, str, 3]))
47
        with self.assertRaises(TypeError):
48
            Array[float, float, int, 'should be an int']
49
50
        dtype = [('a', int), ('b', int), ('c', int), ('d', int)]
51
        a = np.array(
52
            [
53
                (1, 2, 3, 4),
54
                (11, 22, 33, 44)
55
            ],
56
            dtype=dtype)
57
58
    def test_identity(self):
59
        self.assertTrue(Array is Array)
60
        self.assertTrue(Array[int] is Array[int])
61
        self.assertTrue(Array[int, 1, 1] is Array[int, 1, 1])
62
63
    def test_empty_arg(self):
64
        with self.assertRaises(TypeError):
65
            Array[tuple()]
66
67
    def test_instantiation(self):
68
        with self.assertRaises(TypeError):
69
            Array()
70