88
99import java .util .HashSet ;
1010import java .util .Set ;
11+ import java .util .function .IntPredicate ;
1112import org .junit .jupiter .api .Test ;
1213
1314class ClassInfoCacheTest {
@@ -19,6 +20,11 @@ void basicOperation() {
1920 ClassLoader myCL = newCL ();
2021 ClassLoader notMyCL = newCL ();
2122
23+ int myCLKey = ClassLoaderIndex .getClassLoaderKeyId (myCL );
24+
25+ IntPredicate myCLFilter = sameCLKey (myCLKey );
26+ IntPredicate notMyCLFilter = myCLFilter .negate ();
27+
2228 assertNull (cache .find ("example.test.MyGlobalClass" ));
2329 assertNull (cache .find ("example.test.MyLocalClass" ));
2430 assertNull (cache .find ("example.test.NotMyClass" ));
@@ -31,6 +37,14 @@ void basicOperation() {
3137 assertNull (cache .find ("example.test.MyLocalClass" , notMyCL ));
3238 assertNull (cache .find ("example.test.NotMyClass" , notMyCL ));
3339
40+ assertNull (cache .find ("example.test.MyGlobalClass" , myCLFilter ));
41+ assertNull (cache .find ("example.test.MyLocalClass" , myCLFilter ));
42+ assertNull (cache .find ("example.test.NotMyClass" , myCLFilter ));
43+
44+ assertNull (cache .find ("example.test.MyGlobalClass" , notMyCLFilter ));
45+ assertNull (cache .find ("example.test.MyLocalClass" , notMyCLFilter ));
46+ assertNull (cache .find ("example.test.NotMyClass" , notMyCLFilter ));
47+
3448 cache .share ("example.test.MyGlobalClass" , "my global data" );
3549 cache .share ("example.test.MyLocalClass" , "my local data" , myCL );
3650
@@ -46,6 +60,14 @@ void basicOperation() {
4660 assertNull (cache .find ("example.test.MyLocalClass" , notMyCL ));
4761 assertNull (cache .find ("example.test.NotMyClass" , notMyCL ));
4862
63+ assertEquals ("my global data" , cache .find ("example.test.MyGlobalClass" , myCLFilter ));
64+ assertEquals ("my local data" , cache .find ("example.test.MyLocalClass" , myCLFilter ));
65+ assertNull (cache .find ("example.test.NotMyClass" , myCLFilter ));
66+
67+ assertEquals ("my global data" , cache .find ("example.test.MyGlobalClass" , notMyCLFilter ));
68+ assertNull (cache .find ("example.test.MyLocalClass" , notMyCLFilter ));
69+ assertNull (cache .find ("example.test.NotMyClass" , notMyCLFilter ));
70+
4971 cache .clear ();
5072
5173 assertNull (cache .find ("example.test.MyGlobalClass" ));
@@ -59,6 +81,14 @@ void basicOperation() {
5981 assertNull (cache .find ("example.test.MyGlobalClass" , notMyCL ));
6082 assertNull (cache .find ("example.test.MyLocalClass" , notMyCL ));
6183 assertNull (cache .find ("example.test.NotMyClass" , notMyCL ));
84+
85+ assertNull (cache .find ("example.test.MyGlobalClass" , myCLFilter ));
86+ assertNull (cache .find ("example.test.MyLocalClass" , myCLFilter ));
87+ assertNull (cache .find ("example.test.NotMyClass" , myCLFilter ));
88+
89+ assertNull (cache .find ("example.test.MyGlobalClass" , notMyCLFilter ));
90+ assertNull (cache .find ("example.test.MyLocalClass" , notMyCLFilter ));
91+ assertNull (cache .find ("example.test.NotMyClass" , notMyCLFilter ));
6292 }
6393
6494 @ Test
@@ -111,12 +141,20 @@ void overflow() {
111141 for (int i = 0 ; i < 300 ; i ++) {
112142 if (overwritten .contains (i )) {
113143 assertNull (cache .find ("example.MyClass" + i ), "rem " + i );
144+ assertNull (cache .find ("example.MyClass" + i , i ), "rem " + i );
145+ assertNull (cache .find ("example.MyClass" + i , sameCLKey (i )), "rem " + i );
114146 } else {
115147 assertEquals (i , cache .find ("example.MyClass" + i ), "add " + i );
148+ assertEquals (i , cache .find ("example.MyClass" + i , i ), "add " + i );
149+ assertEquals (i , cache .find ("example.MyClass" + i , sameCLKey (i )), "add " + i );
116150 }
117151 }
118152 }
119153
154+ private static IntPredicate sameCLKey (int clKey ) {
155+ return k -> k == clKey ;
156+ }
157+
120158 private static ClassLoader newCL () {
121159 return new ClassLoader () {};
122160 }
0 commit comments