Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@

import com.pholser.junit.quickcheck.Property;
import com.pholser.junit.quickcheck.runner.JUnitQuickcheck;
import fr.cla.wires.support.oo.AbstractValueObject;
import fr.cla.wires.support.pbt.*;
import org.junit.Assume;
import org.junit.runner.RunWith;

import static org.assertj.core.api.Assertions.assertThat;
Expand Down Expand Up @@ -98,6 +100,8 @@ public void hashCode_should_be_consistent(
public void equals_should_be_false_for_different_types(
@RandomVoPair VoPair p
) {
Assume.assumeFalse(VoPairGenerator.current == AbstractValueObject.Equatability.IS_INSTANCE);

if(!p.x.equals(p.y)) return;

assertThat(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.pholser.junit.quickcheck.generator.GenerationStatus;
import com.pholser.junit.quickcheck.generator.Generator;
import com.pholser.junit.quickcheck.random.SourceOfRandomness;
import fr.cla.wires.support.functional.Indexed;
import fr.cla.wires.support.oo.AbstractValueObject;
import fr.cla.wires.support.pbt.examplevos.*;

Expand All @@ -15,17 +16,22 @@ public VoGenerator() {

@Override
public VoSingleton generate(SourceOfRandomness rand, GenerationStatus status) {
return new VoSingleton(generate(rand));
return new VoSingleton(generate(rand, generateEquatability(rand)));
}

static AbstractValueObject<?> generate(SourceOfRandomness rand) {
switch (rand.nextInt(6)) {
case 0: return VO1.random(rand);
case 1: return VO2.random(rand);
case 2: return VO1A.random(rand);
case 3: return VO1B.random(rand);
case 4: return VO2A.random(rand);
case 5: return VO2B.random(rand);
static AbstractValueObject.Equatability generateEquatability(SourceOfRandomness rand) {
return rand.choose(AbstractValueObject.Equatability.values());
}

static AbstractValueObject<?> generate(SourceOfRandomness rand, AbstractValueObject.Equatability e) {
switch (rand.nextInt(7)) {
case 0: return VO1.random(rand, e);
case 1: return VO2.random(rand, e);
case 2: return VO1A.random(rand, e);
case 3: return VO1B.random(rand, e);
case 4: return VO2A.random(rand, e);
case 5: return VO2B.random(rand, e);
case 6: return Indexed.index(rand.nextInt(), generate(rand, e));
default: throw new AssertionError();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,23 @@
import com.pholser.junit.quickcheck.generator.GenerationStatus;
import com.pholser.junit.quickcheck.generator.Generator;
import com.pholser.junit.quickcheck.random.SourceOfRandomness;
import fr.cla.wires.support.oo.AbstractValueObject;

//@formatter:off
public class VoPairGenerator extends Generator<VoPair> {

public static AbstractValueObject.Equatability current = null;

public VoPairGenerator() {
super(VoPair.class);
}

@Override
public VoPair generate(SourceOfRandomness rand, GenerationStatus status) {
current = VoGenerator.generateEquatability(rand);
return new VoPair(
VoGenerator.generate(rand),
VoGenerator.generate(rand)
VoGenerator.generate(rand, current),
VoGenerator.generate(rand, current)
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.pholser.junit.quickcheck.generator.GenerationStatus;
import com.pholser.junit.quickcheck.generator.Generator;
import com.pholser.junit.quickcheck.random.SourceOfRandomness;
import fr.cla.wires.support.oo.AbstractValueObject;

//@formatter:off
public class VoTripletGenerator extends Generator<VoTriplet> {
Expand All @@ -13,10 +14,11 @@ public VoTripletGenerator() {

@Override
public VoTriplet generate(SourceOfRandomness rand, GenerationStatus status) {
AbstractValueObject.Equatability e = VoGenerator.generateEquatability(rand);
return new VoTriplet(
VoGenerator.generate(rand),
VoGenerator.generate(rand),
VoGenerator.generate(rand)
VoGenerator.generate(rand, e),
VoGenerator.generate(rand, e),
VoGenerator.generate(rand, e)
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ public class VO1 extends AbstractValueObject<VO1> {

protected final Value x;

public VO1(Value x) {
super(VO1.class);
public VO1(Value x, Equatability e) {
super(VO1.class, e);
this.x = x;
}

public static VO1 random(SourceOfRandomness rand) {
return new VO1(Value.random(rand));
public static VO1 random(SourceOfRandomness rand, Equatability e) {
return new VO1(Value.random(rand), e);
}

@Override
Expand All @@ -28,7 +28,7 @@ protected List<Object> equalityCriteria() {

@Override
protected boolean canEqual(AbstractValueObject<?> that) {
return that instanceof VO1;
return super.canEqual(that) && that instanceof VO1;
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,16 @@ public class VO1A extends VO1 {

private final Value y;

public VO1A(Value y, Value x) {
super(x);
public VO1A(Value y, Value x, Equatability e) {
super(x, e);
this.y = y;
}

public static VO1A random(SourceOfRandomness rand) {
public static VO1A random(SourceOfRandomness rand, Equatability e) {
return new VO1A(
Value.random(rand),
Value.random(rand)
Value.random(rand),
e
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,16 @@ public class VO1B extends VO1 {

private final Value y;

public VO1B(Value y, Value x) {
super(x);
public VO1B(Value y, Value x, Equatability e) {
super(x, e);
this.y = y;
}

public static VO1B random(SourceOfRandomness rand) {
public static VO1B random(SourceOfRandomness rand, Equatability e) {
return new VO1B(
Value.random(rand),
Value.random(rand)
Value.random(rand),
e
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ public class VO2 extends AbstractValueObject<VO2> {

protected final Value x;

public VO2(Value x) {
super(VO2.class);
public VO2(Value x, Equatability e) {
super(VO2.class, e);
this.x = x;
}

public static VO2 random(SourceOfRandomness rand) {
return new VO2(Value.random(rand));
public static VO2 random(SourceOfRandomness rand, Equatability e) {
return new VO2(Value.random(rand), e);
}

@Override
Expand All @@ -28,7 +28,7 @@ protected List<Object> equalityCriteria() {

@Override
protected boolean canEqual(AbstractValueObject<?> that) {
return that instanceof VO2;
return super.canEqual(that) && that instanceof VO2;
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,16 @@ public class VO2A extends VO2 {

private final Value y;

public VO2A(Value y, Value x) {
super(x);
public VO2A(Value y, Value x, Equatability e) {
super(x, e);
this.y = y;
}

public static VO2A random(SourceOfRandomness rand) {
public static VO2A random(SourceOfRandomness rand, Equatability e) {
return new VO2A(
Value.random(rand),
Value.random(rand)
Value.random(rand),
e
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,16 @@ public class VO2B extends VO2 {

private final Value y;

public VO2B(Value y, Value x) {
super(x);
public VO2B(Value y, Value x, Equatability e) {
super(x, e);
this.y = y;
}

public static VO2B random(SourceOfRandomness rand) {
public static VO2B random(SourceOfRandomness rand, Equatability e) {
return new VO2B(
Value.random(rand),
Value.random(rand)
Value.random(rand),
e
);
}

Expand Down