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 } |