@@ -12,6 +12,7 @@ package goavro
12
12
import (
13
13
"bytes"
14
14
"fmt"
15
+ "math/big"
15
16
"testing"
16
17
)
17
18
@@ -389,7 +390,7 @@ func TestRecordFieldDefaultValue(t *testing.T) {
389
390
testSchemaValid (t , `{"type":"record","name":"r1","fields":[{"name":"f1","type":"string","default":"foo"}]}` )
390
391
testSchemaInvalid (t ,
391
392
`{"type":"record","name":"r1","fields":[{"name":"f1","type":"int","default":"foo"}]}` ,
392
- "default value ought to encode using field schema " )
393
+ "default value ought to have a number type " )
393
394
}
394
395
395
396
func TestRecordFieldUnionDefaultValue (t * testing.T ) {
@@ -618,7 +619,7 @@ func TestRecordFieldFixedDefaultValue(t *testing.T) {
618
619
619
620
func TestRecordFieldDefaultValueTypes (t * testing.T ) {
620
621
t .Run ("success" , func (t * testing.T ) {
621
- codec , err := NewCodec (`{"type": "record", "name": "r1", "fields":[{"name": "someBoolean", "type": "boolean", "default": true},{"name": "someBytes", "type": "bytes", "default": "0"},{"name": "someDouble", "type": "double", "default": 0},{"name": "someFloat", "type": "float", "default": 0},{"name": "someInt", "type": "int", "default": 0},{"name": "someLong", "type": "long", "default": 0},{"name": "someString", "type": "string", "default": "0"}]}` )
622
+ codec , err := NewCodec (`{"type": "record", "name": "r1", "fields":[{"name": "someBoolean", "type": "boolean", "default": true},{"name": "someBytes", "type": "bytes", "default": "0"},{"name": "someDouble", "type": "double", "default": 0},{"name": "someFloat", "type": "float", "default": 0},{"name": "someInt", "type": "int", "default": 0},{"name": "someLong", "type": "long", "default": 0},{"name": "someString", "type": "string", "default": "0"}, {"name":"someTimestamp", "type":"long", "logicalType":"timestamp-millis","default":0}, {"name": "someDecimal", "type": "bytes", "logicalType": "decimal", "precision": 4, "scale": 2, "default":"\u0000"} ]}` )
622
623
ensureError (t , err )
623
624
624
625
r1 , _ , err := codec .NativeFromTextual ([]byte ("{}" ))
@@ -660,24 +661,32 @@ func TestRecordFieldDefaultValueTypes(t *testing.T) {
660
661
if _ , ok := someString .(string ); ! ok {
661
662
t .Errorf ("GOT: %T; WANT: string" , someString )
662
663
}
664
+ someTimestamp := r1m ["someTimestamp" ]
665
+ if _ , ok := someTimestamp .(float64 ); ! ok {
666
+ t .Errorf ("GOT: %T; WANT: float64" , someTimestamp )
667
+ }
668
+ someDecimal := r1m ["someDecimal" ]
669
+ if _ , ok := someDecimal .(* big.Rat ); ! ok {
670
+ t .Errorf ("GOT: %T; WANT: *big.Rat" , someDecimal )
671
+ }
663
672
})
664
673
665
674
t .Run ("provided default is wrong type" , func (t * testing.T ) {
666
675
t .Run ("long" , func (t * testing.T ) {
667
676
_ , err := NewCodec (`{"type": "record", "name": "r1", "fields":[{"name": "someLong", "type": "long", "default": "0"},{"name": "someInt", "type": "int", "default": 0},{"name": "someFloat", "type": "float", "default": 0},{"name": "someDouble", "type": "double", "default": 0}]}` )
668
- ensureError (t , err , "field schema " )
677
+ ensureError (t , err , "default value ought to have a number type " )
669
678
})
670
679
t .Run ("int" , func (t * testing.T ) {
671
680
_ , err := NewCodec (`{"type": "record", "name": "r1", "fields":[{"name": "someLong", "type": "long", "default": 0},{"name": "someInt", "type": "int", "default": "0"},{"name": "someFloat", "type": "float", "default": 0},{"name": "someDouble", "type": "double", "default": 0}]}` )
672
- ensureError (t , err , "field schema " )
681
+ ensureError (t , err , "default value ought to have a number type " )
673
682
})
674
683
t .Run ("float" , func (t * testing.T ) {
675
684
_ , err := NewCodec (`{"type": "record", "name": "r1", "fields":[{"name": "someLong", "type": "long", "default": 0},{"name": "someInt", "type": "int", "default": 0},{"name": "someFloat", "type": "float", "default": "0"},{"name": "someDouble", "type": "double", "default": 0}]}` )
676
- ensureError (t , err , "field schema " )
685
+ ensureError (t , err , "default value ought to have a float type " )
677
686
})
678
687
t .Run ("double" , func (t * testing.T ) {
679
688
_ , err := NewCodec (`{"type": "record", "name": "r1", "fields":[{"name": "someLong", "type": "long", "default": 0},{"name": "someInt", "type": "int", "default": 0},{"name": "someFloat", "type": "float", "default": 0},{"name": "someDouble", "type": "double", "default": "0"}]}` )
680
- ensureError (t , err , "field schema " )
689
+ ensureError (t , err , "default value ought to have a double type " )
681
690
})
682
691
})
683
692
0 commit comments