private static void initialiseAllFixtureFields(Object obj, JFixture fixture, List<Field> fields) { for (Field field : fields) { if(isWritable(field) && isAnnotated(field)) { Object resolvedField = fixture.create(field); if (resolvedField instanceof NoSpecimen) continue; setFieldWithFixtureResult(obj, field, resolvedField); } } }
private Object create(Object request) { SpecimenBuilder builder = builderContainer.getBuilder(); SpecimenContext context = builderContainer.getContext(); return builder.create(request, context); } }
Object create(Object object) { Object result = this.finalBuilderContainer.getBuilder().create(object, this.finalBuilderContainer.getContext()); if (result instanceof NoSpecimen) return null; return result; }
public JFixture() { DefaultEngineParts defaultEngineParts = new DefaultEngineParts(); MultipleCount multipleCount = defaultEngineParts.multipleCount(); Collection<SpecimenBuilder> builders = defaultEngineParts.builders(); this.engine = new CompositeBuilder(builders); this.finalBuilderContainer = new FinalBuilderContainer(); this.behaviours = new FixtureBehaviours(this.finalBuilderContainer, this.engine); this.collections = new FixtureCollections(this, multipleCount); this.customisation = new DefaultFluentCustomisation(this, multipleCount); this.createExtensions = new CreateExtensionsImpl(this.finalBuilderContainer); this.applyDefaultCustomisations(); }
@Override public void customise(JFixture fixture) { if (fixture.behaviours().find(AutoPropertyBehaviour.class) == null) { fixture.behaviours().add(new AutoPropertyBehaviour()); } } }
@Override public void customise(JFixture fixture) { fixture.behaviours().remove(IgnoreNoResolutionBehaviour.class); fixture.behaviours().add(new ThrowOnNoResolutionBehaviour()); } }
public <T extends Collection<U>, U> T createCollection(Class<T> collectionType, Class<U> innerType) { return this.createCollection(collectionType, innerType, this.multipleCount.getCount()); }
@Override public Object create(Object request, SpecimenContext context) { if (!request.equals(ReadableDuration.class)) return new NoSpecimen(); return context.resolve(Duration.class); } }
@Override public Object handleNoResolution(Object request, List<Object> recordedRequests) { return new NoSpecimen(); } }
public static void initFixtures(Object obj) { initFixtures(obj, new JFixture()); }
@Override public Object resolve(Object request) { return this.builder.create(request, this); } }
@Override public AutoPropertyBehaviour autoPropertyBehaviour() { return customisation.autoPropertyBehaviour(); } }
@Override public <T, U extends T> FixtureRuleCustomisation useSubType(Class<T> baseClass, Class<U> subClass) { customisation.useSubType(baseClass, subClass); return this; }
public <T> Collection<T> createCollection(Class<T> innerType) { return this.createCollection(innerType, this.multipleCount.getCount()); }