From eff48990d3bc2af0be8e2465566edf41506aeec1 Mon Sep 17 00:00:00 2001 From: mikera Date: Sun, 22 Dec 2024 17:58:26 +0000 Subject: [PATCH] Generative testing for CAD3 coded values --- .../main/java/convex/core/cpos/Belief.java | 9 ++---- .../java/convex/core/cpos/BeliefMerge.java | 2 +- .../convex/test/generators/CodedValueGen.java | 29 +++++++++++++++++++ .../test/java/convex/test/generators/Gen.java | 2 ++ .../java/convex/test/generators/ValueGen.java | 2 ++ 5 files changed, 37 insertions(+), 7 deletions(-) create mode 100644 convex-core/src/test/java/convex/test/generators/CodedValueGen.java diff --git a/convex-core/src/main/java/convex/core/cpos/Belief.java b/convex-core/src/main/java/convex/core/cpos/Belief.java index 6e380a373..e22ac8a4e 100644 --- a/convex-core/src/main/java/convex/core/cpos/Belief.java +++ b/convex-core/src/main/java/convex/core/cpos/Belief.java @@ -55,11 +55,11 @@ public class Belief extends ARecordGeneric { // private final long timeStamp; - Belief(Index> orders) { + private Belief(Index> orders) { super(CVMTag.BELIEF,BELIEF_FORMAT,Vectors.create(orders)); } - public Belief(AVector newValues) { + private Belief(AVector newValues) { super(CVMTag.BELIEF,BELIEF_FORMAT,newValues); } @@ -273,13 +273,10 @@ public Belief proposeBlock(AKeyPair kp, SignedData... signedBlocks) { return newBelief; } - @SuppressWarnings("unchecked") @Override protected ARecordGeneric withValues(AVector newValues) { if (values==newValues) return this; - return new Belief((Index>) newValues.get(0)); + return new Belief(newValues); } - - } diff --git a/convex-core/src/main/java/convex/core/cpos/BeliefMerge.java b/convex-core/src/main/java/convex/core/cpos/BeliefMerge.java index 99a754fdc..dea24043a 100644 --- a/convex-core/src/main/java/convex/core/cpos/BeliefMerge.java +++ b/convex-core/src/main/java/convex/core/cpos/BeliefMerge.java @@ -82,7 +82,7 @@ public Belief merge(Belief... beliefs) throws InvalidDataException { // update my belief with the resulting Orders if (initialBelief.getOrders() == resultOrders) return initialBelief; - final Belief result = new Belief(resultOrders); + final Belief result = Belief.create(resultOrders); return result; } diff --git a/convex-core/src/test/java/convex/test/generators/CodedValueGen.java b/convex-core/src/test/java/convex/test/generators/CodedValueGen.java new file mode 100644 index 000000000..efce18862 --- /dev/null +++ b/convex-core/src/test/java/convex/test/generators/CodedValueGen.java @@ -0,0 +1,29 @@ +package convex.test.generators; + +import com.pholser.junit.quickcheck.generator.GenerationStatus; +import com.pholser.junit.quickcheck.random.SourceOfRandomness; + +import convex.core.data.ACell; +import convex.core.data.CodedValue; +import convex.core.data.Tag; + +/** + * Generator for CAD3 dense records + * + */ +public class CodedValueGen extends AGenerator { + public CodedValueGen() { + super(CodedValue.class); + } + + @Override + public CodedValue generate(SourceOfRandomness r, GenerationStatus status) { + + byte type = (byte)(r.nextInt(16)+Tag.CODE_BASE); + + ACell code=r.nextBoolean()?Gen.BYTE_FLAG.generate(r, status):Gen.VALUE.generate(r, status); + ACell value=Gen.VALUE.generate(r, status); + + return CodedValue.create(type, code, value); + } +} diff --git a/convex-core/src/test/java/convex/test/generators/Gen.java b/convex-core/src/test/java/convex/test/generators/Gen.java index 068809f70..7cd8ed098 100644 --- a/convex-core/src/test/java/convex/test/generators/Gen.java +++ b/convex-core/src/test/java/convex/test/generators/Gen.java @@ -49,4 +49,6 @@ public class Gen { public static final OpGen OP = new OpGen(); public static final ExtensionValueGen EXTENSION_VALUE = new ExtensionValueGen(); + + public static final CodedValueGen CODED_VALUE = new CodedValueGen(); } diff --git a/convex-core/src/test/java/convex/test/generators/ValueGen.java b/convex-core/src/test/java/convex/test/generators/ValueGen.java index 35b95da25..b60c4565d 100644 --- a/convex-core/src/test/java/convex/test/generators/ValueGen.java +++ b/convex-core/src/test/java/convex/test/generators/ValueGen.java @@ -52,6 +52,8 @@ public ACell generate(SourceOfRandomness r, GenerationStatus status) { return Gen.EXTENSION_VALUE.generate(r, status); case 16: return Gen.CHAR.generate(r, status); + case 17: + return Gen.CODED_VALUE.generate(r, status); default: return Gen.LONG.generate(r, status);