|
1 | 1 | import unittest |
| 2 | +import os |
| 3 | +from hed.schema import load_schema_version |
| 4 | +from hed.models.definition_entry import DefinitionEntry |
| 5 | +from hed.models.hed_string import HedString |
2 | 6 |
|
3 | 7 |
|
4 | 8 | class Test(unittest.TestCase): |
5 | 9 |
|
6 | 10 | @classmethod |
7 | 11 | def setUpClass(cls): |
8 | | - pass |
| 12 | + cls.base_data_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), '../data/') |
| 13 | + hed_xml_file = os.path.join(cls.base_data_dir, "schema_tests/HED8.0.0t.xml") |
| 14 | + hed_schema = load_schema_version("8.4.0") |
| 15 | + cls.contents1 = HedString("(Sensory-event)", hed_schema) |
| 16 | + cls.contents2 = HedString("(Agent-action)", hed_schema) |
| 17 | + cls.contents3 = HedString("(Sensory-event)", hed_schema) |
| 18 | + cls.hed_schema = hed_schema |
| 19 | + |
| 20 | + def test_definition_entry_init(self): |
| 21 | + """Test basic initialization of DefinitionEntry.""" |
| 22 | + name = "TestDef" |
| 23 | + takes_value = True |
| 24 | + source_context = [{"line": 1}] |
| 25 | + |
| 26 | + entry = DefinitionEntry(name, self.contents1, True, source_context) |
| 27 | + self.assertEqual(entry.name, name.casefold()) |
| 28 | + self.assertIsNotNone(entry.contents) |
| 29 | + self.assertEqual(entry.takes_value, takes_value) |
| 30 | + self.assertEqual(entry.source_context, source_context) |
| 31 | + self.assertEqual(str(entry), str(self.contents1)) |
| 32 | + |
| 33 | + def test_none_contents(self): |
| 34 | + """Test with None contents.""" |
| 35 | + entry = DefinitionEntry("TestDef", None, False, None) |
| 36 | + self.assertIsNone(entry.contents) |
| 37 | + self.assertFalse(entry.takes_value) |
| 38 | + self.assertEqual(str(entry), "None") |
| 39 | + |
| 40 | + def test_eq_method(self): |
| 41 | + """Test __eq__ method""" |
| 42 | + name = "TestDef" |
| 43 | + takes_value = True |
| 44 | + source_context1 = [{"line": 1}] |
| 45 | + source_context2 = [{"line": 2}] # Different source context |
| 46 | + |
| 47 | + entry1 = DefinitionEntry(name, self.contents1, takes_value, source_context1) |
| 48 | + entry2 = DefinitionEntry(name, self.contents1, takes_value, source_context2) |
| 49 | + entry3 = DefinitionEntry(name, self.contents3, takes_value, source_context2) |
| 50 | + entry4 = DefinitionEntry("TESTDEF", self.contents3, takes_value, source_context1) |
| 51 | + # Should be equal despite different source contexts |
| 52 | + self.assertEqual(entry1, entry2) |
| 53 | + self.assertTrue(entry1 == entry2) |
| 54 | + # Should be equal as contents are the same |
| 55 | + self.assertEqual(entry1, entry3) |
| 56 | + self.assertTrue(entry1 == entry3) |
| 57 | + # Should be equal with different cased names |
| 58 | + self.assertEqual(entry1, entry4) |
| 59 | + self.assertTrue(entry1 == entry4) |
| 60 | + |
| 61 | + # Not equal with different contents |
| 62 | + entry5 = DefinitionEntry(name, self.contents2, takes_value, None) |
| 63 | + self.assertNotEqual(entry1, entry5) |
| 64 | + self.assertFalse(entry1 == entry5) |
| 65 | + |
| 66 | + # Not equal with different takes value |
| 67 | + entry6 = DefinitionEntry(name, self.contents2, True, None) |
| 68 | + self.assertNotEqual(entry1, entry6) |
| 69 | + self.assertFalse(entry1 == entry6) |
| 70 | + |
| 71 | + # Not equal with different contents |
| 72 | + entry7 = DefinitionEntry(name, None, False, None) |
| 73 | + self.assertNotEqual(entry1, entry7) |
| 74 | + self.assertFalse(entry1 == entry7) |
9 | 75 |
|
10 | 76 |
|
11 | 77 | if __name__ == '__main__': |
|
0 commit comments