@Test public void testVariableScaleDecimal() { final BigDecimal testValue = new BigDecimal("138.456"); final Struct struct = VariableScaleDecimal.fromLogical(VariableScaleDecimal.schema(), new SpecialValueDecimal(testValue)); final BigDecimal decodedValue = VariableScaleDecimal.toLogical(struct).getDecimalValue().get(); assertEquals("Number should be same after serde", testValue, decodedValue); } }
protected List<SchemaAndValueField> schemasAndValuesForBigDecimalEncodedNumericTypes() { final Struct dvs = new Struct(VariableScaleDecimal.schema()); dvs.put("scale", 4).put("value", new BigDecimal("10.1111").unscaledValue().toByteArray()); final Struct nvs = new Struct(VariableScaleDecimal.schema()); nvs.put("scale", 4).put("value", new BigDecimal("22.2222").unscaledValue().toByteArray()); final Struct dvs_int = new Struct(VariableScaleDecimal.schema()); dvs_int.put("scale", 0).put("value", new BigDecimal("10").unscaledValue().toByteArray()); final Struct nvs_int = new Struct(VariableScaleDecimal.schema()); nvs_int.put("scale", 0).put("value", new BigDecimal("22").unscaledValue().toByteArray()); final List<SchemaAndValueField> fields = new ArrayList<SchemaAndValueField>(Arrays.asList( new SchemaAndValueField("d", Decimal.builder(2).parameter(TestHelper.PRECISION_PARAMETER_KEY, "3").optional().build(), new BigDecimal("1.10")), new SchemaAndValueField("dzs", Decimal.builder(0).parameter(TestHelper.PRECISION_PARAMETER_KEY, "4").optional().build(), new BigDecimal("10")), new SchemaAndValueField("dvs", VariableScaleDecimal.optionalSchema(), dvs), new SchemaAndValueField("d_nn", Decimal.builder(2).parameter(TestHelper.PRECISION_PARAMETER_KEY, "3").build(), new BigDecimal("3.30")), new SchemaAndValueField("n", Decimal.builder(4).parameter(TestHelper.PRECISION_PARAMETER_KEY, "6").optional().build(), new BigDecimal("22.2200")), new SchemaAndValueField("nzs", Decimal.builder(0).parameter(TestHelper.PRECISION_PARAMETER_KEY, "4").optional().build(), new BigDecimal("22")), new SchemaAndValueField("nvs", VariableScaleDecimal.optionalSchema(), nvs), new SchemaAndValueField("d_int", Decimal.builder(2).parameter(TestHelper.PRECISION_PARAMETER_KEY, "3").optional().build(), new BigDecimal("1.00")), new SchemaAndValueField("dvs_int", VariableScaleDecimal.optionalSchema(), dvs_int), new SchemaAndValueField("n_int", Decimal.builder(4).parameter(TestHelper.PRECISION_PARAMETER_KEY, "6").optional().build(), new BigDecimal("22.0000")), new SchemaAndValueField("nvs_int", VariableScaleDecimal.optionalSchema(), nvs_int) )); return fields; }
protected List<SchemaAndValueField> schemasAndValuesForArrayTypes() { Struct element; final List<Struct> varnumArray = new ArrayList<>(); element = new Struct(VariableScaleDecimal.schema()); element.put("scale", 1).put("value", new BigDecimal("1.1").unscaledValue().toByteArray()); varnumArray.add(element); element = new Struct(VariableScaleDecimal.schema()); element.put("scale", 2).put("value", new BigDecimal("2.22").unscaledValue().toByteArray()); varnumArray.add(element); element = new Struct(VariableScaleDecimal.schema()); element.put("scale", 3).put("value", new BigDecimal("3.333").unscaledValue().toByteArray()); varnumArray.add(element);
updatedRecord = consumer.remove(); final Struct dvs = new Struct(VariableScaleDecimal.schema()); dvs.put("scale", 4).put("value", new BigDecimal("123.4567").unscaledValue().toByteArray()); VerifyRecord.isValidInsert(updatedRecord, PK_FIELD, 3); updatedRecord = consumer.remove(); final Struct dvs2 = new Struct(VariableScaleDecimal.schema()); dvs2.put("scale", 1).put("value", new BigDecimal("1225.1").unscaledValue().toByteArray()); VerifyRecord.isValidInsert(updatedRecord, PK_FIELD, 6);
@Test public void testVariableScaleDecimal() { final BigDecimal testValue = new BigDecimal("138.456"); final Struct struct = VariableScaleDecimal.fromLogical(VariableScaleDecimal.schema(), new SpecialValueDecimal(testValue)); final BigDecimal decodedValue = VariableScaleDecimal.toLogical(struct).getDecimalValue().get(); assertEquals("Number should be same after serde", testValue, decodedValue); } }
protected List<SchemaAndValueField> schemasAndValuesForBigDecimalEncodedNumericTypes() { final Struct dvs = new Struct(VariableScaleDecimal.schema()); dvs.put("scale", 4).put("value", new BigDecimal("10.1111").unscaledValue().toByteArray()); final Struct nvs = new Struct(VariableScaleDecimal.schema()); nvs.put("scale", 4).put("value", new BigDecimal("22.2222").unscaledValue().toByteArray()); final Struct dvs_int = new Struct(VariableScaleDecimal.schema()); dvs_int.put("scale", 0).put("value", new BigDecimal("10").unscaledValue().toByteArray()); final Struct nvs_int = new Struct(VariableScaleDecimal.schema()); nvs_int.put("scale", 0).put("value", new BigDecimal("22").unscaledValue().toByteArray()); final List<SchemaAndValueField> fields = new ArrayList<SchemaAndValueField>(Arrays.asList( new SchemaAndValueField("d", Decimal.builder(2).parameter(TestHelper.PRECISION_PARAMETER_KEY, "3").optional().build(), new BigDecimal("1.10")), new SchemaAndValueField("dzs", Decimal.builder(0).parameter(TestHelper.PRECISION_PARAMETER_KEY, "4").optional().build(), new BigDecimal("10")), new SchemaAndValueField("dvs", VariableScaleDecimal.optionalSchema(), dvs), new SchemaAndValueField("d_nn", Decimal.builder(2).parameter(TestHelper.PRECISION_PARAMETER_KEY, "3").build(), new BigDecimal("3.30")), new SchemaAndValueField("n", Decimal.builder(4).parameter(TestHelper.PRECISION_PARAMETER_KEY, "6").optional().build(), new BigDecimal("22.2200")), new SchemaAndValueField("nzs", Decimal.builder(0).parameter(TestHelper.PRECISION_PARAMETER_KEY, "4").optional().build(), new BigDecimal("22")), new SchemaAndValueField("nvs", VariableScaleDecimal.optionalSchema(), nvs), new SchemaAndValueField("d_int", Decimal.builder(2).parameter(TestHelper.PRECISION_PARAMETER_KEY, "3").optional().build(), new BigDecimal("1.00")), new SchemaAndValueField("dvs_int", VariableScaleDecimal.optionalSchema(), dvs_int), new SchemaAndValueField("n_int", Decimal.builder(4).parameter(TestHelper.PRECISION_PARAMETER_KEY, "6").optional().build(), new BigDecimal("22.0000")), new SchemaAndValueField("nvs_int", VariableScaleDecimal.optionalSchema(), nvs_int) )); return fields; }
protected List<SchemaAndValueField> schemasAndValuesForArrayTypes() { Struct element; final List<Struct> varnumArray = new ArrayList<>(); element = new Struct(VariableScaleDecimal.schema()); element.put("scale", 1).put("value", new BigDecimal("1.1").unscaledValue().toByteArray()); varnumArray.add(element); element = new Struct(VariableScaleDecimal.schema()); element.put("scale", 2).put("value", new BigDecimal("2.22").unscaledValue().toByteArray()); varnumArray.add(element); element = new Struct(VariableScaleDecimal.schema()); element.put("scale", 3).put("value", new BigDecimal("3.333").unscaledValue().toByteArray()); varnumArray.add(element);
updatedRecord = consumer.remove(); final Struct dvs = new Struct(VariableScaleDecimal.schema()); dvs.put("scale", 4).put("value", new BigDecimal("123.4567").unscaledValue().toByteArray()); VerifyRecord.isValidInsert(updatedRecord, PK_FIELD, 3); updatedRecord = consumer.remove(); final Struct dvs2 = new Struct(VariableScaleDecimal.schema()); dvs2.put("scale", 1).put("value", new BigDecimal("1225.1").unscaledValue().toByteArray()); VerifyRecord.isValidInsert(updatedRecord, PK_FIELD, 6);