Skip to content

Commit 7864f77

Browse files
committed
improve unit test for NamedItemList class
Signed-off-by: Andreas Lauser <[email protected]> Signed-off-by: Katja Köhler <[email protected]>
1 parent abcd8eb commit 7864f77

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

tests/test_odxtools.py

+16-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# SPDX-License-Identifier: MIT
22
import unittest
33
from dataclasses import dataclass
4+
from typing import List
45

56
import odxtools
67
from odxtools.exceptions import OdxError
@@ -97,7 +98,7 @@ class X:
9798
value: int
9899

99100
foo = NamedItemList([X("hello", 0), X("world", 1)])
100-
self.assertEqual(foo.hello, X("hello", 0)) # type: ignore[attr-defined]
101+
self.assertEqual(foo.hello, X("hello", 0))
101102
self.assertEqual(foo[0], X("hello", 0))
102103
self.assertEqual(foo[1], X("world", 1))
103104
self.assertEqual(foo[:1], [X("hello", 0)])
@@ -106,31 +107,31 @@ class X:
106107
foo[2]
107108
self.assertEqual(foo["hello"], X("hello", 0))
108109
self.assertEqual(foo["world"], X("world", 1))
109-
self.assertEqual(foo.hello, X("hello", 0)) # type: ignore[attr-defined]
110-
self.assertEqual(foo.world, X("world", 1)) # type: ignore[attr-defined]
110+
self.assertEqual(foo.hello, X("hello", 0))
111+
self.assertEqual(foo.world, X("world", 1))
111112

112113
foo.append(X("hello", 2))
113114
self.assertEqual(foo[2], X("hello", 2))
114115
self.assertEqual(foo["hello"], X("hello", 0))
115116
self.assertEqual(foo["hello_2"], X("hello", 2))
116-
self.assertEqual(foo.hello, X("hello", 0)) # type: ignore[attr-defined]
117-
self.assertEqual(foo.hello_2, X("hello", 2)) # type: ignore[attr-defined]
117+
self.assertEqual(foo.hello, X("hello", 0))
118+
self.assertEqual(foo.hello_2, X("hello", 2))
118119

119120
# try to append an item that cannot be mapped to a name
120121
with self.assertRaises(OdxError):
121-
foo.append((0, 3)) # type: ignore[arg-type]
122+
foo.append((0, 3)) # type: ignore[arg-type]
122123

123124
# add a keyword identifier
124125
foo.append(X("as", 3))
125126
self.assertEqual(foo[3], X("as", 3))
126127
self.assertEqual(foo["_as"], X("as", 3))
127-
self.assertEqual(foo._as, X("as", 3)) # type: ignore[attr-defined]
128+
self.assertEqual(foo._as, X("as", 3))
128129

129130
# add an object which's name conflicts with a method of the class
130131
foo.append(X("sort", 4))
131132
self.assertEqual(foo[4], X("sort", 4))
132133
self.assertEqual(foo["sort_2"], X("sort", 4))
133-
self.assertEqual(foo.sort_2, X("sort", 4)) # type: ignore[attr-defined]
134+
self.assertEqual(foo.sort_2, X("sort", 4))
134135

135136
# test the get() function
136137
self.assertEqual(foo.get(0), X("hello", 0))
@@ -150,6 +151,13 @@ class X:
150151
self.assertEqual(len(foo.items()), len(foo))
151152
self.assertEqual(len(foo.values()), len(foo))
152153

154+
# ensure that mypy accepts NamedItemList objecs where List
155+
# objects are expected
156+
def bar(x: List[X]) -> None:
157+
pass
158+
159+
bar(foo)
160+
153161

154162
class TestNavigation(unittest.TestCase):
155163

0 commit comments

Comments
 (0)