From e8b07fea1dc1b44fcb904c3d0d33ae27ffd4ecd3 Mon Sep 17 00:00:00 2001 From: Ganesh Pagade Date: Sun, 23 Dec 2018 12:05:51 +0530 Subject: [PATCH] unit tests for nest based access control --- .../src/main/java/com/baeldung/Outer.java | 24 +++++++++ .../test/java/com/baeldung/OuterUnitTest.java | 50 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 core-java-11/src/main/java/com/baeldung/Outer.java create mode 100644 core-java-11/src/test/java/com/baeldung/OuterUnitTest.java diff --git a/core-java-11/src/main/java/com/baeldung/Outer.java b/core-java-11/src/main/java/com/baeldung/Outer.java new file mode 100644 index 0000000000..e2f1479ab1 --- /dev/null +++ b/core-java-11/src/main/java/com/baeldung/Outer.java @@ -0,0 +1,24 @@ +package com.baeldung; + +import java.lang.reflect.Method; + +public class Outer { + + public void outerPublic() { + } + + private void outerPrivate() { + } + + class Inner { + + public void innerPublic() { + outerPrivate(); + } + + public void innerPublicReflection(Outer ob) throws Exception { + Method method = ob.getClass().getDeclaredMethod("outerPrivate"); + method.invoke(ob); + } + } +} \ No newline at end of file diff --git a/core-java-11/src/test/java/com/baeldung/OuterUnitTest.java b/core-java-11/src/test/java/com/baeldung/OuterUnitTest.java new file mode 100644 index 0000000000..a954416f68 --- /dev/null +++ b/core-java-11/src/test/java/com/baeldung/OuterUnitTest.java @@ -0,0 +1,50 @@ +package com.baeldung; + +import static org.hamcrest.CoreMatchers.is; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; +import org.junit.Test; + +public class OuterUnitTest { + + private static final String NEST_HOST_NAME = "com.baeldung.Outer"; + + @Test + public void whenGetNestHostFromOuter_thenGetNestHost() { + is(Outer.class.getNestHost().getName()).equals(NEST_HOST_NAME); + } + + @Test + public void whenGetNestHostFromInner_thenGetNestHost() { + is(Outer.Inner.class.getNestHost().getName()).equals(NEST_HOST_NAME); + } + + @Test + public void whenCheckNestmatesForNestedClasses_thenGetTrue() { + is(Outer.Inner.class.isNestmateOf(Outer.class)).equals(true); + } + + @Test + public void whenCheckNestmatesForUnrelatedClasses_thenGetFalse() { + is(Outer.Inner.class.isNestmateOf(Outer.class)).equals(false); + } + + @Test + public void whenGetNestMembersForNestedClasses_thenGetAllNestedClasses() { + List nestMembers = Arrays.stream(Outer.Inner.class.getNestMembers()) + .map(Class::getName) + .collect(Collectors.toList()); + + is(nestMembers.size()).equals(2); + + boolean containsOuter = nestMembers.stream() + .anyMatch("com.baeldung.Outer"::equals); + is(containsOuter).equals(true); + + boolean containsInner = nestMembers.stream() + .anyMatch("com.baeldung.Outer$Inner"::equals); + is(containsInner).equals(true); + } +} \ No newline at end of file