Generating Complex Types
Fixture Monkey is capable of generating complex objects that are difficult to create as test fixtures.
This page contains examples of the various types of objects that can be generated.
Java
Generic Objects
@Value
public static class GenericObject<T> {
T foo;
}
@Value
public static class GenericArrayObject<T> {
GenericObject<T>[] foo;
}
@Value
public static class TwoGenericObject<T, U> {
T foo;
U bar;
}
@Value
public static class ThreeGenericObject<T, U, V> {
T foo;
U bar;
V baz;
}
Generic Interfaces
public interface GenericInterface<T> {
}
@Value
public static class GenericInterfaceImpl<T> implements GenericInterface<T> {
T foo;
}
public interface TwoGenericInterface<T, U> {
}
@Value
public static class TwoGenericImpl<T, U> implements TwoGenericInterface<T, U> {
T foo;
U bar;
}
SelfReference
@Value
public class SelfReference {
String foo;
SelfReference bar;
}
@Value
public class SelfReferenceList {
String foo;
List<SelfReferenceList> bar;
}
Interface
public interface Interface {
String foo();
Integer bar();
}
public interface InheritedInterface extends Interface {
String foo();
}
public interface InheritedInterfaceWithSameNameMethod extends Interface {
String foo();
}
public interface ContainerInterface {
List<String> baz();
Map<String, Integer> qux();
}
public interface InheritedTwoInterface extends Interface, ContainerInterface {
}
Kotlin
Generic Objects
class Generic<T>(val foo: T)
class GenericImpl(val foo: Generic<String>)
SelfReference
class SelfReference(val foo: String, val bar: SelfReference?)
Sealed class, Value class
sealed class SealedClass
object ObjectSealedClass : SealedClass()
class SealedClassImpl(val foo: String) : SealedClass()
@JvmInline
value class ValueClass(val foo: String)