/*
* Copyright 2008 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package samples.classwithinnermembers;
/**
* Class that is used to test that local and member class works with PowerMock.
*/
public class ClassWithInnerMembers {
private interface InnerInterface {
String doStuff();
}
public static class MyInnerClassWithPrivateConstructorWithDiffMultArgs {
private String mArg1;
private int mArg2;
private String mArg3;
private MyInnerClassWithPrivateConstructorWithDiffMultArgs(String arg1, int arg2, String arg3) {
mArg1 = arg1;
mArg2 = arg2;
mArg3 = arg3;
}
}
public MyInnerClassWithPrivateConstructorWithDiffMultArgs makeMyInnerClassWithPrivateConstructorWithDiffMultArgs(
String arg1, int arg2, String arg3) {
return new MyInnerClassWithPrivateConstructorWithDiffMultArgs(arg1, arg2, arg3);
}
public static class MyInnerClassWithPrivateConstructorWithMultArgs {
private String mArg1;
private String mArg2;
private String mArg3;
private MyInnerClassWithPrivateConstructorWithMultArgs(String arg1, String arg2, String arg3) {
mArg1 = arg1;
mArg2 = arg2;
mArg3 = arg3;
}
}
public MyInnerClassWithPrivateConstructorWithMultArgs makeMyInnerClassWithPrivateConstructorWithMultArgs(
String arg1, String arg2, String arg3) {
return new MyInnerClassWithPrivateConstructorWithMultArgs(arg1, arg2, arg3);
}
public static class MyInnerClassWithPublicConstructorWithMultArgs {
private String mArg1;
private String mArg2;
private String mArg3;
private MyInnerClassWithPublicConstructorWithMultArgs(String arg1, String arg2, String arg3) {
mArg1 = arg1;
mArg2 = arg2;
mArg3 = arg3;
}
}
public MyInnerClassWithPublicConstructorWithMultArgs makeMyInnerClassWithPublicConstructorWithMultArgs(
String arg1, String arg2, String arg3) {
return new MyInnerClassWithPublicConstructorWithMultArgs(arg1, arg2, arg3);
}
public static class MyInnerClassWithPackageConstructorWithMultArgs {
private String mArg1;
private String mArg2;
private String mArg3;
MyInnerClassWithPackageConstructorWithMultArgs(String arg1, String arg2, String arg3) {
mArg1 = arg1;
mArg2 = arg2;
mArg3 = arg3;
}
}
public MyInnerClassWithPackageConstructorWithMultArgs makeMyInnerClassWithPackageConstructorWithMultArgs(
String arg1, String arg2, String arg3) {
return new MyInnerClassWithPackageConstructorWithMultArgs(arg1, arg2, arg3);
}
public static class MyInnerClassWithProtectedConstructorWithMultArgs {
private String mArg1;
private String mArg2;
private String mArg3;
MyInnerClassWithProtectedConstructorWithMultArgs(String arg1, String arg2, String arg3) {
mArg1 = arg1;
mArg2 = arg2;
mArg3 = arg3;
}
}
public MyInnerClassWithProtectedConstructorWithMultArgs makeMyInnerClassWithProtectedConstructorWithMultArgs(
String arg1, String arg2, String arg3) {
return new MyInnerClassWithProtectedConstructorWithMultArgs(arg1, arg2, arg3);
}
private static class MyInnerClass implements InnerInterface {
@Override
public String doStuff() {
return "member class";
}
}
private static class StaticInnerClassWithConstructorArgument implements InnerInterface {
private final String value;
public StaticInnerClassWithConstructorArgument(String value) {
this.value = value;
}
@Override
public String doStuff() {
return value;
}
}
private class MyInnerClassWithConstructorArgument implements InnerInterface {
private final String value;
public MyInnerClassWithConstructorArgument(String value) {
this.value = value;
}
@Override
public String doStuff() {
return value;
}
}
public String getValue() {
return new MyInnerClass().doStuff();
}
public String getValueForInnerClassWithConstructorArgument() {
return new MyInnerClassWithConstructorArgument("value").doStuff();
}
public String getValueForStaticInnerClassWithConstructorArgument() {
return new StaticInnerClassWithConstructorArgument("value").doStuff();
}
public String getLocalClassValue() {
class MyLocalClass implements InnerInterface {
@Override
public String doStuff() {
return "local class";
}
}
return new MyLocalClass().doStuff();
}
public String getLocalClassValueWithArgument() {
class MyLocalClass implements InnerInterface {
private final String value;
public MyLocalClass(String value) {
this.value = value;
}
@Override
public String doStuff() {
return value;
}
}
return new MyLocalClass("my value").doStuff();
}
public String getValueForAnonymousInnerClass() {
InnerInterface inner = new InnerInterface() {
@Override
public String doStuff() {
return "value";
}
};
return inner.doStuff();
}
}