import static org.junit.jupiter.api.Assertions.assertEquals;

import java.lang.module.ModuleDescriptor;
import java.util.Set;
import org.junit.jupiter.api.Test;

class ModulesParseTextBlockDeclarationTest {

  @Test
  void parseDeclaration() {
    var descriptor = Bach.Modules.parseDeclaration("""
        module foo.bar { // 3.3-ALPHA
          requires foo.bax; // @1.3
          requires foo.bay/*342*/;
          requires foo.baz; // 47.11
        }
        """);

    assertEquals("foo.bar", descriptor.name(), descriptor.toString());
    assertEquals(
        ModuleDescriptor.newModule("x")
            .requires("foo.bax")
            .requires(Set.of(), "foo.bay", ModuleDescriptor.Version.parse("342"))
            .requires("foo.baz")
            .build()
            .requires(),
        descriptor.requires(),
        descriptor.toString());
  }
}

@@ -97,16 +97,66 @@
 riptor;%0A
+import java.lang.module.ModuleDescriptor.Version;%0A
 import j
@@ -169,16 +169,16 @@
 il.Set;%0A
-
 import o
@@ -370,21 +370,8 @@
 ar %7B
- // 3.3-ALPHA
 %0A   
@@ -398,16 +398,8 @@
 bax;
- // @1.3
 %0A   
@@ -423,19 +423,17 @@
 oo.bay/*
-342
+1
 */;%0A    
@@ -458,18 +458,22 @@
 .baz
-;
  /
-/ 47.11
+* 2.3-ea */;
 %0A   
@@ -699,33 +699,16 @@
 o.bay%22, 
-ModuleDescriptor.
 Version.
@@ -718,11 +718,9 @@
 se(%22
-342
+1
 %22))%0A
@@ -745,17 +745,52 @@
 res(
-%22foo.baz%22
+Set.of(), %22foo.baz%22, Version.parse(%222.3-ea%22)
 )%0A  

Check for spaces being ignored in inline versions