@@ -29,34 +29,11 @@ void translatesMeaningfulCodenameOneCoreSliceWithoutUncategorizedNativeGaps() th
2929 assertTrue (CompilerHelper .isJavaApiCompatible (config ),
3030 "JDK " + config .jdkVersion + " must target matching bytecode level for JavaAPI" );
3131
32- Path sourceDir = Files .createTempDirectory ("js-cn1-core-src" );
33- Path classesDir = Files .createTempDirectory ("js-cn1-core-classes" );
34- Path javaApiDir = Files .createTempDirectory ("js-cn1-core-javaapi" );
35-
36- Files .write (sourceDir .resolve ("JsCodenameOneCoreSliceApp.java" ),
37- JavascriptTargetIntegrationTest .loadFixture ("JsCodenameOneCoreSliceApp.java" ).getBytes (StandardCharsets .UTF_8 ));
38-
39- Path coreJar = findDependencyJar ("codenameone-core" );
40- assertNotNull (coreJar , "codenameone-core dependency jar should be available in target/benchmark-dependencies" );
41-
42- CompilerHelper .compileJavaAPI (javaApiDir , config );
43- compileFixtureAgainstJavaApiAndCore (config , sourceDir , classesDir , javaApiDir , coreJar );
44-
45- CompilerHelper .copyDirectory (javaApiDir , classesDir );
46- unzipMatching (coreJar , classesDir ,
47- "com/codename1/io/" ,
48- "com/codename1/util/" ,
49- "com/codename1/compat/java/" ,
50- "com/codename1/l10n/" ,
51- "com/codename1/ui/events/" ,
52- "com/codename1/xml/" );
53-
54- Path outputDir = Files .createTempDirectory ("js-cn1-core-output" );
55- JavascriptTargetIntegrationTest .runJavascriptTranslator (classesDir , outputDir , "JsCodenameOneCoreSliceApp" );
56-
57- Path distDir = outputDir .resolve ("dist" ).resolve ("JsCodenameOneCoreSliceApp-js" );
32+ Path distDir = translateCn1CoreSlice (config );
5833 assertTrue (Files .exists (distDir .resolve ("translated_app.js" )),
5934 "Translator should emit translated JS for the Codename One core slice" );
35+ assertTrue (Files .exists (distDir .resolve ("vm_protocol.md" )),
36+ "Translator should emit the VM protocol artifact for the Codename One core slice" );
6037
6138 String translatedApp = new String (Files .readAllBytes (distDir .resolve ("translated_app.js" )), StandardCharsets .UTF_8 );
6239 assertTrue (translatedApp .contains ("JsCodenameOneCoreSliceApp" ),
@@ -65,6 +42,21 @@ void translatesMeaningfulCodenameOneCoreSliceWithoutUncategorizedNativeGaps() th
6542 "CN1 core slice translation should not retain uncategorized javascript native fallback stubs" );
6643 }
6744
45+ @ Test
46+ void executesMeaningfulCodenameOneCoreSliceInWorkerRuntime () throws Exception {
47+ Parser .cleanup ();
48+
49+ CompilerHelper .CompilerConfig config = selectRepresentativeCompiler ();
50+ Path distDir = translateCn1CoreSlice (config );
51+
52+ JavascriptRuntimeSemanticsTest .WorkerRunResult result = JavascriptRuntimeSemanticsTest .runGeneratedWorkerBundle (distDir );
53+ assertEquals ("result" , result .type ,
54+ "CN1 core slice should complete through the generated worker protocol. Raw worker payload: " + result .rawMessage );
55+ assertEquals (7 , result .result , "CN1 core slice should execute JSON and StringUtil behavior correctly" );
56+ assertTrue (result .errorMessage == null || result .errorMessage .isEmpty (),
57+ "CN1 core slice should not emit a worker error. Raw worker payload: " + result .rawMessage );
58+ }
59+
6860 private static CompilerHelper .CompilerConfig selectRepresentativeCompiler () {
6961 String [] preferredTargets = new String [] {"11" , "17" , "21" };
7062 for (String target : preferredTargets ) {
@@ -105,6 +97,34 @@ private static void compileFixtureAgainstJavaApiAndCore(CompilerHelper.CompilerC
10597 "Compilation failed for Codename One core slice fixture with " + config + ": " + CompilerHelper .getLastErrorLog ());
10698 }
10799
100+ private static Path translateCn1CoreSlice (CompilerHelper .CompilerConfig config ) throws Exception {
101+ Path sourceDir = Files .createTempDirectory ("js-cn1-core-src" );
102+ Path classesDir = Files .createTempDirectory ("js-cn1-core-classes" );
103+ Path javaApiDir = Files .createTempDirectory ("js-cn1-core-javaapi" );
104+
105+ Files .write (sourceDir .resolve ("JsCodenameOneCoreSliceApp.java" ),
106+ JavascriptTargetIntegrationTest .loadFixture ("JsCodenameOneCoreSliceApp.java" ).getBytes (StandardCharsets .UTF_8 ));
107+
108+ Path coreJar = findDependencyJar ("codenameone-core" );
109+ assertNotNull (coreJar , "codenameone-core dependency jar should be available in target/benchmark-dependencies" );
110+
111+ CompilerHelper .compileJavaAPI (javaApiDir , config );
112+ compileFixtureAgainstJavaApiAndCore (config , sourceDir , classesDir , javaApiDir , coreJar );
113+
114+ CompilerHelper .copyDirectory (javaApiDir , classesDir );
115+ unzipMatching (coreJar , classesDir ,
116+ "com/codename1/io/" ,
117+ "com/codename1/util/" ,
118+ "com/codename1/compat/java/" ,
119+ "com/codename1/l10n/" ,
120+ "com/codename1/ui/events/" ,
121+ "com/codename1/xml/" );
122+
123+ Path outputDir = Files .createTempDirectory ("js-cn1-core-output" );
124+ JavascriptTargetIntegrationTest .runJavascriptTranslator (classesDir , outputDir , "JsCodenameOneCoreSliceApp" );
125+ return outputDir .resolve ("dist" ).resolve ("JsCodenameOneCoreSliceApp-js" );
126+ }
127+
108128 private static Path findDependencyJar (String namePart ) throws IOException {
109129 Path depsDir = Paths .get ("target" , "benchmark-dependencies" );
110130 if (!Files .exists (depsDir )) {
0 commit comments