Skip to content

Commit 1f9e726

Browse files
authored
Merge pull request #426 from vladistan/convert-test-walker-utils-to-pytest
Convert test walker utils to pytest
2 parents 6eb81aa + 972e4ee commit 1f9e726

File tree

1 file changed

+70
-78
lines changed

1 file changed

+70
-78
lines changed
Lines changed: 70 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import os
2-
import unittest
32
from copy import deepcopy
43

54
from jsonasobj2 import as_dict
@@ -33,83 +32,76 @@ def collect(in_obj: YAMLRoot):
3332
return n_classes
3433

3534

36-
class WalkerUtilsTestCase(unittest.TestCase):
35+
def test_collector():
3736
"""
38-
Tests for linkml_runtime.utils.inference_utils
37+
Tests using a transformer to collect statistics on an object
3938
"""
39+
# use the schema as a data object
40+
obj = yaml_loader.load(SCHEMA, target_class=SchemaDefinition)
41+
orig = deepcopy(obj)
42+
n_classes = 0
43+
44+
def collect(in_obj: YAMLRoot):
45+
nonlocal n_classes
46+
if isinstance(in_obj, ClassDefinition):
47+
n_classes += 1
48+
return in_obj
49+
50+
obj_tr = traverse_object_tree(obj, collect)
51+
assert n_classes > 1
52+
# test object is not mutated
53+
assert orig == obj
54+
# test transformed object is same as input
55+
assert obj_tr == obj
56+
assert count_classes(obj) == n_classes
57+
58+
59+
def test_mutating_transformer():
60+
"""
61+
Tests using transform_object_tree to apply changes
62+
"""
63+
# use the schema as a data object
64+
obj = yaml_loader.load(SCHEMA, target_class=SchemaDefinition)
65+
orig = deepcopy(obj)
66+
n_changes = 0
67+
68+
def tr(in_obj: YAMLRoot):
69+
nonlocal n_changes
70+
if isinstance(in_obj, ClassDefinition):
71+
in_obj.comments.append(INSERTED_COMMENT)
72+
n_changes += 1
73+
return in_obj
74+
75+
obj_tr = traverse_object_tree(obj, tr)
76+
assert n_changes > 1
77+
assert orig != obj
78+
assert obj_tr == obj
79+
obj = SchemaDefinition(**as_dict(obj))
80+
assert INSERTED_COMMENT in obj.classes["Person"].comments
81+
82+
83+
def test_non_mutating_transformer():
84+
"""
85+
Tests using transform_object_tree to apply changes
86+
"""
87+
# use the schema as a data object
88+
obj = yaml_loader.load(SCHEMA, target_class=SchemaDefinition)
89+
orig = deepcopy(obj)
90+
n_changes = 0
91+
92+
def tr(in_obj: YAMLRoot):
93+
nonlocal n_changes
94+
if isinstance(in_obj, ClassDefinition):
95+
in_obj.comments.append(INSERTED_COMMENT)
96+
n_changes += 1
97+
return in_obj
4098

41-
def test_collector(self):
42-
"""
43-
Tests using a transformer to collect statistics on an object
44-
"""
45-
# use the schema as a data object
46-
obj = yaml_loader.load(SCHEMA, target_class=SchemaDefinition)
47-
orig = deepcopy(obj)
48-
n_classes = 0
49-
50-
def collect(in_obj: YAMLRoot):
51-
nonlocal n_classes
52-
if isinstance(in_obj, ClassDefinition):
53-
n_classes += 1
54-
return in_obj
55-
56-
obj_tr = traverse_object_tree(obj, collect)
57-
self.assertGreater(n_classes, 1)
58-
# test object is not mutated
59-
self.assertEqual(orig, obj)
60-
# test transformed object is same as input
61-
self.assertEqual(obj_tr, obj)
62-
self.assertEqual(count_classes(obj), n_classes)
63-
64-
def test_mutating_transformer(self):
65-
"""
66-
Tests using transform_object_tree to apply changes
67-
"""
68-
# use the schema as a data object
69-
obj = yaml_loader.load(SCHEMA, target_class=SchemaDefinition)
70-
orig = deepcopy(obj)
71-
n_changes = 0
72-
73-
def tr(in_obj: YAMLRoot):
74-
nonlocal n_changes
75-
if isinstance(in_obj, ClassDefinition):
76-
in_obj.comments.append(INSERTED_COMMENT)
77-
n_changes += 1
78-
return in_obj
79-
80-
obj_tr = traverse_object_tree(obj, tr)
81-
self.assertGreater(n_changes, 1)
82-
self.assertNotEqual(orig, obj)
83-
self.assertEqual(obj_tr, obj)
84-
obj = SchemaDefinition(**as_dict(obj))
85-
assert INSERTED_COMMENT in obj.classes["Person"].comments
86-
87-
def test_non_mutating_transformer(self):
88-
"""
89-
Tests using transform_object_tree to apply changes
90-
"""
91-
# use the schema as a data object
92-
obj = yaml_loader.load(SCHEMA, target_class=SchemaDefinition)
93-
orig = deepcopy(obj)
94-
n_changes = 0
95-
96-
def tr(in_obj: YAMLRoot):
97-
nonlocal n_changes
98-
if isinstance(in_obj, ClassDefinition):
99-
in_obj.comments.append(INSERTED_COMMENT)
100-
n_changes += 1
101-
return in_obj
102-
103-
obj_tr = traverse_object_tree(obj, tr, mutate=False)
104-
self.assertGreater(n_changes, 1)
105-
# check does not mutate
106-
self.assertEqual(orig, obj)
107-
# check new object is different
108-
self.assertNotEqual(obj_tr, orig)
109-
self.assertNotEqual(obj_tr, obj)
110-
obj_tr = SchemaDefinition(**as_dict(obj_tr))
111-
assert INSERTED_COMMENT in obj_tr.classes["Person"].comments
112-
113-
114-
if __name__ == "__main__":
115-
unittest.main()
99+
obj_tr = traverse_object_tree(obj, tr, mutate=False)
100+
assert n_changes > 1
101+
# check does not mutate
102+
assert orig == obj
103+
# check new object is different
104+
assert obj_tr != orig
105+
assert obj_tr != obj
106+
obj_tr = SchemaDefinition(**as_dict(obj_tr))
107+
assert INSERTED_COMMENT in obj_tr.classes["Person"].comments

0 commit comments

Comments
 (0)