Skip to content

Commit eff4899

Browse files
committed
Generative testing for CAD3 coded values
1 parent 2292512 commit eff4899

File tree

5 files changed

+37
-7
lines changed

5 files changed

+37
-7
lines changed

convex-core/src/main/java/convex/core/cpos/Belief.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ public class Belief extends ARecordGeneric {
5555

5656
// private final long timeStamp;
5757

58-
Belief(Index<AccountKey,SignedData<Order>> orders) {
58+
private Belief(Index<AccountKey,SignedData<Order>> orders) {
5959
super(CVMTag.BELIEF,BELIEF_FORMAT,Vectors.create(orders));
6060
}
6161

62-
public Belief(AVector<ACell> newValues) {
62+
private Belief(AVector<ACell> newValues) {
6363
super(CVMTag.BELIEF,BELIEF_FORMAT,newValues);
6464
}
6565

@@ -273,13 +273,10 @@ public Belief proposeBlock(AKeyPair kp, SignedData<Block>... signedBlocks) {
273273
return newBelief;
274274
}
275275

276-
@SuppressWarnings("unchecked")
277276
@Override
278277
protected ARecordGeneric withValues(AVector<ACell> newValues) {
279278
if (values==newValues) return this;
280-
return new Belief((Index<AccountKey, SignedData<Order>>) newValues.get(0));
279+
return new Belief(newValues);
281280
}
282281

283-
284-
285282
}

convex-core/src/main/java/convex/core/cpos/BeliefMerge.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public Belief merge(Belief... beliefs) throws InvalidDataException {
8282

8383
// update my belief with the resulting Orders
8484
if (initialBelief.getOrders() == resultOrders) return initialBelief;
85-
final Belief result = new Belief(resultOrders);
85+
final Belief result = Belief.create(resultOrders);
8686
return result;
8787
}
8888

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package convex.test.generators;
2+
3+
import com.pholser.junit.quickcheck.generator.GenerationStatus;
4+
import com.pholser.junit.quickcheck.random.SourceOfRandomness;
5+
6+
import convex.core.data.ACell;
7+
import convex.core.data.CodedValue;
8+
import convex.core.data.Tag;
9+
10+
/**
11+
* Generator for CAD3 dense records
12+
*
13+
*/
14+
public class CodedValueGen extends AGenerator<CodedValue> {
15+
public CodedValueGen() {
16+
super(CodedValue.class);
17+
}
18+
19+
@Override
20+
public CodedValue generate(SourceOfRandomness r, GenerationStatus status) {
21+
22+
byte type = (byte)(r.nextInt(16)+Tag.CODE_BASE);
23+
24+
ACell code=r.nextBoolean()?Gen.BYTE_FLAG.generate(r, status):Gen.VALUE.generate(r, status);
25+
ACell value=Gen.VALUE.generate(r, status);
26+
27+
return CodedValue.create(type, code, value);
28+
}
29+
}

convex-core/src/test/java/convex/test/generators/Gen.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,6 @@ public class Gen {
4949
public static final OpGen OP = new OpGen();
5050

5151
public static final ExtensionValueGen EXTENSION_VALUE = new ExtensionValueGen();
52+
53+
public static final CodedValueGen CODED_VALUE = new CodedValueGen();
5254
}

convex-core/src/test/java/convex/test/generators/ValueGen.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ public ACell generate(SourceOfRandomness r, GenerationStatus status) {
5252
return Gen.EXTENSION_VALUE.generate(r, status);
5353
case 16:
5454
return Gen.CHAR.generate(r, status);
55+
case 17:
56+
return Gen.CODED_VALUE.generate(r, status);
5557

5658
default:
5759
return Gen.LONG.generate(r, status);

0 commit comments

Comments
 (0)