@@ -33,10 +33,15 @@ class FieldTest(parameterized.TestCase):
3333 (field .Integer (), 'INT64' ),
3434 (field .Float (), 'FLOAT64' ),
3535 (field .String (), 'STRING(MAX)' ),
36+ (field .String (10 ), 'STRING(10)' ),
3637 (field .Timestamp (), 'TIMESTAMP' ),
3738 (field .BytesBase64 (), 'BYTES(MAX)' ),
39+ (field .BytesBase64 (10 ), 'BYTES(10)' ),
3840 (field .Array (field .Boolean ()), 'ARRAY<BOOL>' ),
3941 (field .Array (field .String ()), 'ARRAY<STRING(MAX)>' ),
42+ (field .Array (field .String (10 )), 'ARRAY<STRING(10)>' ),
43+ (field .Array (field .BytesBase64 ()), 'ARRAY<BYTES(MAX)>' ),
44+ (field .Array (field .BytesBase64 (10 )), 'ARRAY<BYTES(10)>' ),
4045 )
4146 def test_field_type_ddl (
4247 self ,
@@ -50,12 +55,16 @@ def test_field_type_ddl(
5055 (field .Integer (), spanner .param_types .INT64 ),
5156 (field .Float (), spanner .param_types .FLOAT64 ),
5257 (field .String (), spanner .param_types .STRING ),
58+ (field .String (10 ), spanner .param_types .STRING ),
5359 (field .Timestamp (), spanner .param_types .TIMESTAMP ),
5460 (field .BytesBase64 (), spanner .param_types .BYTES ),
61+ (field .BytesBase64 (10 ), spanner .param_types .BYTES ),
5562 (field .Array (field .Boolean ()),
5663 spanner .param_types .Array (spanner .param_types .BOOL )),
5764 (field .Array (field .String ()),
5865 spanner .param_types .Array (spanner .param_types .STRING )),
66+ (field .Array (field .String (10 )),
67+ spanner .param_types .Array (spanner .param_types .STRING )),
5968 )
6069 def test_field_type_grpc_type (
6170 self ,
@@ -70,8 +79,10 @@ def test_field_type_grpc_type(
7079 (field .Float (), 1 ),
7180 (field .Float (), 1.0 ),
7281 (field .String (), 'foo' ),
82+ (field .String (10 ), 'foo' ),
7383 (field .Timestamp (), datetime .datetime (2022 , 9 , 21 )),
7484 (field .BytesBase64 (), base64 .b64encode (b'\x00 ' )),
85+ (field .BytesBase64 (10 ), base64 .b64encode (b'\x00 ' )),
7586 (field .Array (field .Boolean ()), [True ]),
7687 )
7788 def test_field_type_validate_type_ok (
@@ -86,9 +97,11 @@ def test_field_type_validate_type_ok(
8697 (field .Integer (), 1.0 ),
8798 (field .Float (), '1.0' ),
8899 (field .String (), b'foo' ),
100+ (field .String (10 ), b'foo' ),
89101 (field .Timestamp (), datetime .date (2022 , 9 , 21 )),
90102 (field .BytesBase64 (), base64 .b64encode (b'\x00 ' ).decode ('utf-8' )),
91103 (field .BytesBase64 (), b'!' ),
104+ (field .BytesBase64 (10 ), b'!' ),
92105 (field .Array (field .Boolean ()), {True }),
93106 (field .Array (field .Boolean ()), [1 ]),
94107 )
@@ -103,6 +116,8 @@ def test_field_type_validate_type_error(
103116 @parameterized .parameters (
104117 (field .Boolean (), field .Boolean (), True ),
105118 (field .Boolean (), field .String (), False ),
119+ (field .String (10 ), field .String (20 ), True ),
120+ (field .String (), field .String (10 ), True ),
106121 (field .Array (field .Integer ()), field .Array (field .Integer ()), False ),
107122 (field .Array (field .Integer ()), field .Integer (), False ),
108123 )
@@ -145,17 +160,22 @@ def test_string_array_is_deprecated_and_equivalent_to_array_of_string(self):
145160 'INT64' ,
146161 'FLOAT64' ,
147162 'STRING(MAX)' ,
163+ 'STRING(10)' ,
148164 'TIMESTAMP' ,
149165 'BYTES(MAX)' ,
166+ 'BYTES(10)' ,
150167 'ARRAY<INT64>' ,
151168 'ARRAY<STRING(MAX)>' ,
169+ 'ARRAY<STRING(10)>' ,
152170 )
153171 def test_ddl_to_field_type_to_ddl (self , ddl : str ):
154172 self .assertEqual (field .field_type_from_ddl (ddl ).ddl (), ddl )
155173
156- def test_field_type_from_ddl_invalid (self ):
174+ @parameterized .parameters ('UNICORN(MAX)' , 'STRING(MAX1)' , 'STRING(MIN)' ,
175+ 'ARRAY<STRING(MAX1)>' , 'BYTES(MAX1)' , 'BYTES(MIN)' )
176+ def test_field_type_from_ddl_invalid (self , ddl : str ):
157177 with self .assertRaisesRegex (error .SpannerError , 'DDL type' ):
158- field .field_type_from_ddl ('UNICORN(MAX)' )
178+ field .field_type_from_ddl (ddl )
159179
160180
161181if __name__ == '__main__' :
0 commit comments