diff options
Diffstat (limited to 'bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodBodyTest.java')
-rw-r--r-- | bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodBodyTest.java | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodBodyTest.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodBodyTest.java new file mode 100644 index 00000000000..d722f1eba2d --- /dev/null +++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/classanalysis/AnalyzeMethodBodyTest.java @@ -0,0 +1,73 @@ +// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.container.plugin.classanalysis; + +import com.yahoo.container.plugin.classanalysis.sampleclasses.Base; +import com.yahoo.container.plugin.classanalysis.sampleclasses.ClassWithMethod; +import com.yahoo.container.plugin.classanalysis.sampleclasses.Derived; +import com.yahoo.container.plugin.classanalysis.sampleclasses.Dummy; +import com.yahoo.container.plugin.classanalysis.sampleclasses.Fields; +import com.yahoo.container.plugin.classanalysis.sampleclasses.Interface1; +import com.yahoo.container.plugin.classanalysis.sampleclasses.Methods; +import org.junit.Test; + +import java.io.PrintStream; + +import static com.yahoo.container.plugin.classanalysis.TestUtilities.analyzeClass; +import static com.yahoo.container.plugin.classanalysis.TestUtilities.name; +import static org.hamcrest.Matchers.allOf; +import static org.hamcrest.Matchers.hasItem; +import static org.hamcrest.Matchers.not; +import static org.junit.Assert.assertThat; + +/** + * Tests that classes used in method bodies are included in the imports list. + * + * @author tonytv + */ +public class AnalyzeMethodBodyTest { + @Test + public void require_that_class_of_locals_are_included() { + assertThat(analyzeClass(Methods.class).getReferencedClasses(), hasItem(name(Base.class))); + } + + @Test + public void require_that_class_of_locals_in_static_method_are_included() { + assertThat(analyzeClass(Methods.class).getReferencedClasses(), hasItem(name(Derived.class))); + } + + @Test + public void require_that_field_references_are_included() { + assertThat(analyzeClass(Methods.class).getReferencedClasses(), + allOf(hasItem(name(java.util.List.class)), hasItem(name(Fields.class)))); + } + + @Test + public void require_that_class_owning_field_is_included() { + assertThat(analyzeClass(Methods.class).getReferencedClasses(), hasItem(name(System.class))); + } + + @Test + public void require_that_class_containing_method_is_included() { + assertThat(analyzeClass(Methods.class).getReferencedClasses(), hasItem(name(PrintStream.class))); + } + + @Test + public void require_that_element_of_new_multidimensional_array_is_included() { + assertThat(analyzeClass(Methods.class).getReferencedClasses(), hasItem(name(Interface1.class))); + } + + @Test + public void require_that_basic_arrays_are_not_included() { + assertThat(analyzeClass(Methods.class).getReferencedClasses(), not(hasItem("int[]"))); + } + + @Test + public void require_that_container_generic_parameters_are_included() { + assertThat(analyzeClass(Methods.class).getReferencedClasses(), hasItem(name(Dummy.class))); + } + + @Test + public void require_that_class_owning_method_handler_is_included() { + assertThat(analyzeClass(Methods.class).getReferencedClasses(), hasItem(name(ClassWithMethod.class))); + } +} |