Completed
Push — master ( 3261f5...d3f043 )
by Ramon
14s queued 11s
created

NPTypingTestSuite.test_empty_arg()   A

Complexity

Conditions 2

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

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