@@ -54,6 +54,25 @@ public class FieldTest {
5454 .setMode (FIELD_MODE3 )
5555 .setDescription (FIELD_DESCRIPTION3 )
5656 .build ();
57+ private static final Field STANDARD_FIELD_SCHEMA1 =
58+ Field .newBuilder (FIELD_NAME1 , StandardSQLTypeName .STRING )
59+ .setMode (FIELD_MODE1 )
60+ .setDescription (FIELD_DESCRIPTION1 )
61+ .build ();
62+ private static final Field STANDARD_FIELD_SCHEMA2 =
63+ Field .newBuilder (FIELD_NAME2 , StandardSQLTypeName .INT64 )
64+ .setMode (FIELD_MODE2 )
65+ .setDescription (FIELD_DESCRIPTION2 )
66+ .build ();
67+ private static final Field STANDARD_FIELD_SCHEMA3 =
68+ Field .newBuilder (
69+ FIELD_NAME3 ,
70+ StandardSQLTypeName .STRUCT ,
71+ STANDARD_FIELD_SCHEMA1 ,
72+ STANDARD_FIELD_SCHEMA2 )
73+ .setMode (FIELD_MODE3 )
74+ .setDescription (FIELD_DESCRIPTION3 )
75+ .build ();
5776
5877 @ Test
5978 public void testToBuilder () {
@@ -66,6 +85,17 @@ public void testToBuilder() {
6685 compareFieldSchemas (FIELD_SCHEMA1 , field );
6786 }
6887
88+ @ Test
89+ public void testToBuilderWithStandardSQLTypeName () {
90+ compareFieldSchemas (STANDARD_FIELD_SCHEMA1 , STANDARD_FIELD_SCHEMA1 .toBuilder ().build ());
91+ compareFieldSchemas (STANDARD_FIELD_SCHEMA2 , STANDARD_FIELD_SCHEMA2 .toBuilder ().build ());
92+ compareFieldSchemas (STANDARD_FIELD_SCHEMA3 , STANDARD_FIELD_SCHEMA3 .toBuilder ().build ());
93+ Field field = STANDARD_FIELD_SCHEMA1 .toBuilder ().setDescription ("New Description" ).build ();
94+ assertEquals ("New Description" , field .getDescription ());
95+ field = field .toBuilder ().setDescription (FIELD_DESCRIPTION1 ).build ();
96+ compareFieldSchemas (STANDARD_FIELD_SCHEMA1 , field );
97+ }
98+
6999 @ Test
70100 public void testToBuilderIncomplete () {
71101 Field field = Field .of (FIELD_NAME1 , FIELD_TYPE1 );
@@ -74,6 +104,14 @@ public void testToBuilderIncomplete() {
74104 compareFieldSchemas (field , field .toBuilder ().build ());
75105 }
76106
107+ @ Test
108+ public void testToBuilderIncompleteWithStandardSQLTypeName () {
109+ Field field = Field .of (FIELD_NAME1 , FIELD_TYPE1 );
110+ compareFieldSchemas (field , field .toBuilder ().build ());
111+ field = Field .of (FIELD_NAME2 , FIELD_TYPE3 , STANDARD_FIELD_SCHEMA1 , STANDARD_FIELD_SCHEMA2 );
112+ compareFieldSchemas (field , field .toBuilder ().build ());
113+ }
114+
77115 @ Test
78116 public void testBuilder () {
79117 assertEquals (FIELD_NAME1 , FIELD_SCHEMA1 .getName ());
@@ -88,6 +126,22 @@ public void testBuilder() {
88126 assertEquals (FieldList .of (FIELD_SCHEMA1 , FIELD_SCHEMA2 ), FIELD_SCHEMA3 .getSubFields ());
89127 }
90128
129+ @ Test
130+ public void testBuilderWithStandardSQLTypeName () {
131+ assertEquals (FIELD_NAME1 , STANDARD_FIELD_SCHEMA1 .getName ());
132+ assertEquals (FIELD_TYPE1 , STANDARD_FIELD_SCHEMA1 .getType ());
133+ assertEquals (FIELD_MODE1 , STANDARD_FIELD_SCHEMA1 .getMode ());
134+ assertEquals (FIELD_DESCRIPTION1 , STANDARD_FIELD_SCHEMA1 .getDescription ());
135+ assertEquals (null , STANDARD_FIELD_SCHEMA1 .getSubFields ());
136+ assertEquals (FIELD_NAME3 , STANDARD_FIELD_SCHEMA3 .getName ());
137+ assertEquals (FIELD_TYPE3 , STANDARD_FIELD_SCHEMA3 .getType ());
138+ assertEquals (FIELD_MODE3 , STANDARD_FIELD_SCHEMA3 .getMode ());
139+ assertEquals (FIELD_DESCRIPTION3 , STANDARD_FIELD_SCHEMA3 .getDescription ());
140+ assertEquals (
141+ FieldList .of (STANDARD_FIELD_SCHEMA1 , STANDARD_FIELD_SCHEMA2 ),
142+ STANDARD_FIELD_SCHEMA3 .getSubFields ());
143+ }
144+
91145 @ Test
92146 public void testToAndFromPb () {
93147 compareFieldSchemas (FIELD_SCHEMA1 , Field .fromPb (FIELD_SCHEMA1 .toPb ()));
@@ -97,6 +151,15 @@ public void testToAndFromPb() {
97151 compareFieldSchemas (field , Field .fromPb (field .toPb ()));
98152 }
99153
154+ @ Test
155+ public void testToAndFromPbWithStandardSQLTypeName () {
156+ compareFieldSchemas (STANDARD_FIELD_SCHEMA1 , Field .fromPb (STANDARD_FIELD_SCHEMA1 .toPb ()));
157+ compareFieldSchemas (STANDARD_FIELD_SCHEMA2 , Field .fromPb (STANDARD_FIELD_SCHEMA2 .toPb ()));
158+ compareFieldSchemas (STANDARD_FIELD_SCHEMA3 , Field .fromPb (STANDARD_FIELD_SCHEMA3 .toPb ()));
159+ Field field = Field .newBuilder (FIELD_NAME1 , FIELD_TYPE1 ).build ();
160+ compareFieldSchemas (field , Field .fromPb (field .toPb ()));
161+ }
162+
100163 @ Test
101164 public void testSubFieldWithClonedType () throws Exception {
102165 LegacySQLTypeName record = LegacySQLTypeName .RECORD ;
0 commit comments