1- package com .metaobjects .loader . simple ;
1+ package com .metaobjects .loader ;
22
3- import com .metaobjects .loader .MetaDataLoader ;
43import com .metaobjects .loader .uri .URIHelper ;
54import org .junit .Test ;
65import org .slf4j .Logger ;
1312/**
1413 * Basic test suite for vehicle metadata parsing with new inline attribute support
1514 * and array-only format. Focus on verifying the parsing works correctly.
15+ *
16+ * <p>H3a Task 6: moved from package {@code com.metaobjects.loader.simple} to
17+ * {@code com.metaobjects.loader}; base class updated to {@link MetaDataLoaderTestBase}.</p>
1618 */
17- public class VehicleMetadataTest extends SimpleLoaderTestBase {
18-
19+ public class VehicleMetadataTest extends MetaDataLoaderTestBase {
20+
1921 private static final Logger log = LoggerFactory .getLogger (VehicleMetadataTest .class );
20-
21- @ Test
22+
23+ @ Test
2224 public void testBasicCommonMetadataLoading () throws Exception {
2325 log .debug ("Testing basic common metadata loading" );
24-
26+
2527 // Simple test to verify the parser works at all
2628 MetaDataLoader loader = initLoader (Arrays .asList (
2729 URIHelper .toURI ("model:resource:com/metaobjects/loader/simple/acme-common-metadata.json" )
2830 ));
29-
31+
3032 assertNotNull ("Loader should be created" , loader );
3133 assertTrue ("Should load some children" , loader .getChildren ().size () > 0 );
32-
33- log .debug ("✅ Basic common metadata loading successful - {} children loaded" , loader .getChildren ().size ());
34+
35+ log .debug ("Basic common metadata loading successful - {} children loaded" , loader .getChildren ().size ());
3436 }
35-
36- @ Test
37+
38+ @ Test
3739 public void testBasicVehicleMetadataLoading () throws Exception {
3840 log .debug ("Testing basic vehicle metadata loading" );
39-
41+
4042 // Load common first, then vehicle
4143 MetaDataLoader loader = initLoader (Arrays .asList (
4244 URIHelper .toURI ("model:resource:com/metaobjects/loader/simple/acme-common-metadata.json" ),
4345 URIHelper .toURI ("model:resource:com/metaobjects/loader/simple/acme-vehicle-metadata.json" )
4446 ));
45-
47+
4648 assertNotNull ("Loader should be created" , loader );
4749 assertTrue ("Should load some children" , loader .getChildren ().size () > 0 );
48-
49- log .debug ("✅ Basic vehicle metadata loading successful - {} children loaded" , loader .getChildren ().size ());
50+
51+ log .debug ("Basic vehicle metadata loading successful - {} children loaded" , loader .getChildren ().size ());
5052 }
51-
52- @ Test
53+
54+ @ Test
5355 public void testCompleteMetadataLoading () throws Exception {
5456 log .debug ("Testing complete metadata loading with overlay" );
55-
57+
5658 // Load all three files
5759 MetaDataLoader loader = initLoader (Arrays .asList (
5860 URIHelper .toURI ("model:resource:com/metaobjects/loader/simple/acme-common-metadata.json" ),
5961 URIHelper .toURI ("model:resource:com/metaobjects/loader/simple/acme-vehicle-metadata.json" ),
6062 URIHelper .toURI ("model:resource:com/metaobjects/loader/simple/acme-vehicle-overlay-metadata.json" )
6163 ));
62-
64+
6365 assertNotNull ("Loader should be created" , loader );
6466 assertTrue ("Should load some children" , loader .getChildren ().size () > 0 );
65-
67+
6668 // Try to find some basic objects by name to verify structure
6769 try {
6870 assertNotNull ("Should find garage object" , loader .getMetaObjectByName ("acme::garage::Garage" ));
69- log .debug ("✅ Found Garage object" );
71+ log .debug ("Found Garage object" );
7072 } catch (Exception e ) {
7173 log .warn ("Could not find Garage object: {}" , e .getMessage ());
7274 }
73-
75+
7476 try {
7577 assertNotNull ("Should find vehicle object" , loader .getMetaObjectByName ("acme::vehicle::Vehicle" ));
76- log .debug ("✅ Found Vehicle object" );
78+ log .debug ("Found Vehicle object" );
7779 } catch (Exception e ) {
7880 log .warn ("Could not find Vehicle object: {}" , e .getMessage ());
7981 }
80-
82+
8183 try {
8284 assertNotNull ("Should find car object" , loader .getMetaObjectByName ("acme::vehicle::car::Car" ));
83- log .debug ("✅ Found Car object" );
85+ log .debug ("Found Car object" );
8486 } catch (Exception e ) {
8587 log .warn ("Could not find Car object: {}" , e .getMessage ());
8688 }
87-
89+
8890 try {
8991 assertNotNull ("Should find porsche object" , loader .getMetaObjectByName ("acme::vehicle::car::luxury::Porsche" ));
90- log .debug ("✅ Found Porsche object" );
92+ log .debug ("Found Porsche object" );
9193 } catch (Exception e ) {
9294 log .warn ("Could not find Porsche object: {}" , e .getMessage ());
9395 }
94-
95- log .debug ("✅ Complete metadata loading successful - {} total children loaded" , loader .getChildren ().size ());
96+
97+ log .debug ("Complete metadata loading successful - {} total children loaded" , loader .getChildren ().size ());
9698 }
97-
99+
98100 @ Test
99101 public void testArrayOnlyFormat () throws Exception {
100102 log .debug ("Testing array-only format (no 'children' key required)" );
101-
103+
102104 // The metadata files use [...] directly instead of "children": [...]
103105 // If they load successfully, the array-only format is working
104106 MetaDataLoader loader = initLoader (Arrays .asList (
105107 URIHelper .toURI ("model:resource:com/metaobjects/loader/simple/acme-common-metadata.json" )
106108 ));
107-
109+
108110 assertNotNull ("Array-only format should parse successfully" , loader );
109111 assertTrue ("Should load children using array-only format" , loader .getChildren ().size () > 0 );
110-
111- log .debug ("✅ Array-only format test successful" );
112+
113+ log .debug ("Array-only format test successful" );
112114 }
113-
115+
114116 @ Test
115117 public void testInlineAttributeFormat () throws Exception {
116118 log .debug ("Testing inline attribute format (@attribute: 'value')" );
117-
119+
118120 // The metadata files use @attribute: "value" inline format
119121 // Need to load common metadata first for cross-file references to work
120122 MetaDataLoader loader = initLoader (Arrays .asList (
121123 URIHelper .toURI ("model:resource:com/metaobjects/loader/simple/acme-common-metadata.json" ),
122124 URIHelper .toURI ("model:resource:com/metaobjects/loader/simple/acme-vehicle-metadata.json" )
123125 ));
124-
126+
125127 assertNotNull ("Inline attribute format should parse successfully" , loader );
126128 assertTrue ("Should load children with inline attributes" , loader .getChildren ().size () > 0 );
127-
128- log .debug ("✅ Inline attribute format test successful" );
129+
130+ log .debug ("Inline attribute format test successful" );
129131 }
130-
131- @ Test
132+
133+ @ Test
132134 public void testMinimalCrossFileReference () throws Exception {
133135 log .debug ("Testing minimal cross-file reference" );
134-
136+
135137 // Load common first, then concrete
136138 MetaDataLoader loader = initLoader (Arrays .asList (
137139 URIHelper .toURI ("model:resource:com/metaobjects/loader/simple/test-common.json" ),
138140 URIHelper .toURI ("model:resource:com/metaobjects/loader/simple/test-concrete.json" )
139141 ));
140-
142+
141143 assertNotNull ("Loader should be created" , loader );
142144 assertTrue ("Should load some children" , loader .getChildren ().size () > 0 );
143-
144- log .debug ("✅ Minimal cross-file reference successful - {} children loaded" , loader .getChildren ().size ());
145+
146+ log .debug ("Minimal cross-file reference successful - {} children loaded" , loader .getChildren ().size ());
145147 }
146- }
148+ }
0 commit comments