jdk/test/java/lang/module/ModuleReferenceTest.java
changeset 42703 20c39ea4a507
parent 42338 a60f280f803c
child 43712 5dfd0950317c
equal deleted inserted replaced
42666:244b1c27b299 42703:20c39ea4a507
    29 
    29 
    30 import java.lang.module.ModuleDescriptor;
    30 import java.lang.module.ModuleDescriptor;
    31 import java.lang.module.ModuleReader;
    31 import java.lang.module.ModuleReader;
    32 import java.lang.module.ModuleReference;
    32 import java.lang.module.ModuleReference;
    33 import java.net.URI;
    33 import java.net.URI;
    34 import java.util.function.Supplier;
       
    35 
    34 
    36 import org.testng.annotations.Test;
    35 import org.testng.annotations.Test;
    37 import static org.testng.Assert.*;
    36 import static org.testng.Assert.*;
    38 
    37 
    39 @Test
    38 @Test
    40 public class ModuleReferenceTest {
    39 public class ModuleReferenceTest {
    41 
    40 
    42     private Supplier<ModuleReader> makeSupplier() {
    41     private ModuleReference newModuleReference(ModuleDescriptor descriptor, URI uri) {
    43         return () -> { throw new UnsupportedOperationException(); };
    42         return new ModuleReference(descriptor, uri) {
       
    43             @Override
       
    44             public ModuleReader open() {
       
    45                 throw new UnsupportedOperationException();
       
    46             }
       
    47         };
    44     }
    48     }
    45 
    49 
    46     public void testBasic() throws Exception {
    50     public void testBasic() throws Exception {
    47         ModuleDescriptor descriptor
    51         ModuleDescriptor descriptor
    48             = ModuleDescriptor.module("m")
    52             = ModuleDescriptor.module("m")
    51                 .contains("p.internal")
    55                 .contains("p.internal")
    52                 .build();
    56                 .build();
    53 
    57 
    54         URI uri = URI.create("module:/m");
    58         URI uri = URI.create("module:/m");
    55 
    59 
    56         Supplier<ModuleReader> supplier = makeSupplier();
    60         ModuleReference mref = newModuleReference(descriptor, uri);
    57 
       
    58         ModuleReference mref = new ModuleReference(descriptor, uri, supplier);
       
    59 
    61 
    60         assertTrue(mref.descriptor().equals(descriptor));
    62         assertTrue(mref.descriptor().equals(descriptor));
    61         assertTrue(mref.location().get().equals(uri));
    63         assertTrue(mref.location().get().equals(uri));
    62 
       
    63         // check that the supplier is called
       
    64         try {
       
    65             mref.open();
       
    66             assertTrue(false);
       
    67         } catch (UnsupportedOperationException expected) { }
       
    68     }
    64     }
    69 
       
    70 
    65 
    71     @Test(expectedExceptions = { NullPointerException.class })
    66     @Test(expectedExceptions = { NullPointerException.class })
    72     public void testNullDescriptor() throws Exception {
    67     public void testNullDescriptor() throws Exception {
    73         URI location = URI.create("module:/m");
    68         URI location = URI.create("module:/m");
    74         new ModuleReference(null, location, makeSupplier());
    69         newModuleReference(null, location);
    75     }
    70     }
    76 
    71 
    77     public void testNullLocation() {
    72     public void testNullLocation() {
    78         ModuleDescriptor descriptor
    73         ModuleDescriptor descriptor
    79             = ModuleDescriptor.module("m")
    74             = ModuleDescriptor.module("m")
    80                 .exports("p")
    75                 .exports("p")
    81                 .build();
    76                 .build();
    82         Supplier<ModuleReader> supplier = makeSupplier();
    77         ModuleReference mref = newModuleReference(descriptor, null);
    83         ModuleReference mref = new ModuleReference(descriptor, null, supplier);
       
    84         assertTrue(!mref.location().isPresent());
    78         assertTrue(!mref.location().isPresent());
    85     }
    79     }
    86 
    80 
    87     @Test(expectedExceptions = { NullPointerException.class })
       
    88     public void testNullSupplier() throws Exception {
       
    89         ModuleDescriptor descriptor = ModuleDescriptor.module("m").build();
       
    90         URI location = URI.create("module:/m");
       
    91         new ModuleReference(descriptor, location, null);
       
    92     }
       
    93 
       
    94 
       
    95     public void testEqualsAndHashCode() {
       
    96         ModuleDescriptor descriptor1
       
    97             = ModuleDescriptor.module("m1")
       
    98                 .exports("p")
       
    99                 .build();
       
   100         ModuleDescriptor descriptor2
       
   101             = ModuleDescriptor.module("m1")
       
   102                 .exports("p")
       
   103                 .build();
       
   104 
       
   105         URI uri = URI.create("module:/m1");
       
   106         Supplier<ModuleReader> supplier = makeSupplier();
       
   107 
       
   108         ModuleReference mref1 = new ModuleReference(descriptor1, uri, supplier);
       
   109         ModuleReference mref2 = new ModuleReference(descriptor2, uri, supplier);
       
   110         ModuleReference mref3 = new ModuleReference(descriptor1, null, supplier);
       
   111 
       
   112         assertTrue(mref1.equals(mref1));
       
   113         assertTrue(mref1.equals(mref2));
       
   114         assertTrue(mref2.equals(mref1));
       
   115         assertTrue(mref1.hashCode() == mref2.hashCode());
       
   116 
       
   117         assertTrue(mref3.equals(mref3));
       
   118         assertFalse(mref3.equals(mref1));
       
   119         assertFalse(mref1.equals(mref3));
       
   120     }
       
   121 
       
   122 
       
   123     public void testToString() {
       
   124         ModuleDescriptor descriptor = ModuleDescriptor.module("m1").build();
       
   125         URI uri = URI.create("module:/m1");
       
   126         Supplier<ModuleReader> supplier = makeSupplier();
       
   127         ModuleReference mref = new ModuleReference(descriptor, uri, supplier);
       
   128         String s = mref.toString();
       
   129         assertTrue(s.contains("m1"));
       
   130         assertTrue(s.contains(uri.toString()));
       
   131     }
       
   132 
       
   133 }
    81 }