package com.kaching.platform.testing; import static com.kaching.platform.testing.VisibilityTestRunner.Intent.PRIVATE; import static org.junit.Assert.*; import org.junit.Test; public class VisibilityTestRunnerTest { @Test public void privateFieldMustBeVisibleByOwner() { VisibilityTestRunner runner = new VisibilityTestRunner(getClass()); assertTrue(runner.isVisible( new ParsedElements.ParsedField( new ParsedElements.ParsedClass("java/util/HashMap"), "size"), new ParsedElements.ParsedClass("java/util/HashMap"), PRIVATE)); } @Test public void privateFieldMustBeVisibleByInnerClass() { VisibilityTestRunner runner = new VisibilityTestRunner(getClass()); assertTrue(runner.isVisible( new ParsedElements.ParsedField( new ParsedElements.ParsedClass("java/util/HashMap"), "size"), new ParsedElements.ParsedClass("java/util/HashMap$Entry"), PRIVATE)); } @Test public void privateFieldMustBeVisibleByOuterClass() { VisibilityTestRunner runner = new VisibilityTestRunner(getClass()); assertTrue(runner.isVisible( new ParsedElements.ParsedField( new ParsedElements.ParsedClass("java/util/HashMap$Entry"), "key"), new ParsedElements.ParsedClass("java/util/HashMap"), PRIVATE)); } @Test public void privateFieldMustBeVisibleByAnonymousClass() { VisibilityTestRunner runner = new VisibilityTestRunner(getClass()); assertTrue(runner.isVisible( new ParsedElements.ParsedField( new ParsedElements.ParsedClass("java/util/HashMap"), "size"), new ParsedElements.ParsedClass("java/util/HashMap$1"), PRIVATE)); } @Test public void privateFieldMustNotBeVisibleByDifferentClass() { VisibilityTestRunner runner = new VisibilityTestRunner(getClass()); assertFalse(runner.isVisible( new ParsedElements.ParsedField( new ParsedElements.ParsedClass("java/util/HashMap"), "size"), new ParsedElements.ParsedClass("java/util/ArrayList"), PRIVATE)); } @Test public void privateFieldMustNotBeVisibleBySubclass() { VisibilityTestRunner runner = new VisibilityTestRunner(getClass()); assertFalse(runner.isVisible( new ParsedElements.ParsedField( new ParsedElements.ParsedClass("java/util/HashMap"), "size"), new ParsedElements.ParsedClass("org/apache/commons/collections/MultiHashMap"), PRIVATE)); } @Test public void privateInnerClassMustBeVisibleByOwner() { VisibilityTestRunner runner = new VisibilityTestRunner(getClass()); assertTrue(runner.isVisible( new ParsedElements.ParsedClass("java/util/HashMap$Entry"), new ParsedElements.ParsedClass("java/util/HashMap"), PRIVATE)); } @Test public void privateInnerClassMustBeVisibleByOtherInnerClass() { VisibilityTestRunner runner = new VisibilityTestRunner(getClass()); assertTrue(runner.isVisible( new ParsedElements.ParsedClass("java/util/HashMap$Entry"), new ParsedElements.ParsedClass("java/util/HashMap$KeySet"), PRIVATE)); } @Test public void privateInnerClassMustNotBeVisibleByDifferentClass() { VisibilityTestRunner runner = new VisibilityTestRunner(getClass()); assertFalse(runner.isVisible( new ParsedElements.ParsedClass("java/util/HashMap$Entry"), new ParsedElements.ParsedClass("java/util/ArrayList"), PRIVATE)); } }