@@ -57,44 +57,59 @@ public async Task GetSchemaTable_WithFlagEnabled_ReturnsSchema(string columnName
5757 }
5858
5959 // These SpannerDbTypes are supported on emulator.
60- public static TheoryData < string , System . Type , SpannerDbType > SchemaTestData { get ; } =
61- new TheoryData < string , System . Type , SpannerDbType >
60+ public static TheoryData < string , System . Type , SpannerDbType > SchemaTestData
61+ {
62+ get
6263 {
63- // Base types.
64- { "BoolValue" , typeof ( bool ) , SpannerDbType . Bool } ,
65- { "Int64Value" , typeof ( long ) , SpannerDbType . Int64 } ,
66- { "Float32Value" , typeof ( float ) , SpannerDbType . Float32 } ,
67- { "Float64Value" , typeof ( double ) , SpannerDbType . Float64 } ,
68- { "NumericValue" , typeof ( SpannerNumeric ) , SpannerDbType . Numeric } ,
69- { "StringValue" , typeof ( string ) , SpannerDbType . String } ,
70- { "BytesValue" , typeof ( byte [ ] ) , SpannerDbType . Bytes } ,
71- { "TimestampValue" , typeof ( DateTime ) , SpannerDbType . Timestamp } ,
72- { "DateValue" , typeof ( DateTime ) , SpannerDbType . Date } ,
73- { "JsonValue" , typeof ( string ) , SpannerDbType . Json } ,
74- { "ProtobufDurationValue" , typeof ( Value ) , SpannerDbType . FromClrType ( typeof ( Duration ) ) } ,
75- { "ProtobufRectangleValue" , typeof ( Value ) , SpannerDbType . FromClrType ( typeof ( Rectangle ) ) } ,
76- { "ProtobufValueValue" , typeof ( Value ) , SpannerDbType . FromClrType ( typeof ( Value ) ) } ,
77- { "ProtobufPersonValue" , typeof ( Value ) , SpannerDbType . FromClrType ( typeof ( Person ) ) } ,
78- { "ProtobufValueWrapperValue" , typeof ( Value ) , SpannerDbType . FromClrType ( typeof ( ValueWrapper ) ) } ,
79-
80- // Array types.
81- { "BoolArrayValue" , typeof ( List < bool > ) , SpannerDbType . ArrayOf ( SpannerDbType . Bool ) } ,
82- { "Int64ArrayValue" , typeof ( List < long > ) , SpannerDbType . ArrayOf ( SpannerDbType . Int64 ) } ,
83- { "Float32ArrayValue" , typeof ( List < float > ) , SpannerDbType . ArrayOf ( SpannerDbType . Float32 ) } ,
84- { "Float64ArrayValue" , typeof ( List < double > ) , SpannerDbType . ArrayOf ( SpannerDbType . Float64 ) } ,
85- { "NumericArrayValue" , typeof ( List < SpannerNumeric > ) , SpannerDbType . ArrayOf ( SpannerDbType . Numeric ) } ,
86- { "StringArrayValue" , typeof ( List < string > ) , SpannerDbType . ArrayOf ( SpannerDbType . String ) } ,
87- { "Base64ArrayValue" , typeof ( List < byte [ ] > ) , SpannerDbType . ArrayOf ( SpannerDbType . Bytes ) } ,
88- { "BytesArrayValue" , typeof ( List < byte [ ] > ) , SpannerDbType . ArrayOf ( SpannerDbType . Bytes ) } ,
89- { "TimestampArrayValue" , typeof ( List < DateTime > ) , SpannerDbType . ArrayOf ( SpannerDbType . Timestamp ) } ,
90- { "DateArrayValue" , typeof ( List < DateTime > ) , SpannerDbType . ArrayOf ( SpannerDbType . Date ) } ,
91- { "JsonArrayValue" , typeof ( List < string > ) , SpannerDbType . ArrayOf ( SpannerDbType . Json ) } ,
92- { "ProtobufDurationArrayValue" , typeof ( List < Value > ) , SpannerDbType . ArrayOf ( SpannerDbType . FromClrType ( typeof ( Duration ) ) ) } ,
93- { "ProtobufRectangleArrayValue" , typeof ( List < Value > ) , SpannerDbType . ArrayOf ( SpannerDbType . FromClrType ( typeof ( Rectangle ) ) ) } ,
94- { "ProtobufValueArrayValue" , typeof ( List < Value > ) , SpannerDbType . ArrayOf ( SpannerDbType . FromClrType ( typeof ( Value ) ) ) } ,
95- { "ProtobufPersonArrayValue" , typeof ( List < Value > ) , SpannerDbType . ArrayOf ( SpannerDbType . FromClrType ( typeof ( Person ) ) ) } ,
96- { "ProtobufValueWrapperArrayValue" , typeof ( List < Value > ) , SpannerDbType . ArrayOf ( SpannerDbType . FromClrType ( typeof ( ValueWrapper ) ) ) } ,
97- } ;
64+ var data = new TheoryData < string , System . Type , SpannerDbType >
65+ {
66+ // Base types.
67+ { "BoolValue" , typeof ( bool ) , SpannerDbType . Bool } ,
68+ { "Int64Value" , typeof ( long ) , SpannerDbType . Int64 } ,
69+ { "Float32Value" , typeof ( float ) , SpannerDbType . Float32 } ,
70+ { "Float64Value" , typeof ( double ) , SpannerDbType . Float64 } ,
71+ { "NumericValue" , typeof ( SpannerNumeric ) , SpannerDbType . Numeric } ,
72+ { "StringValue" , typeof ( string ) , SpannerDbType . String } ,
73+ { "BytesValue" , typeof ( byte [ ] ) , SpannerDbType . Bytes } ,
74+ { "TimestampValue" , typeof ( DateTime ) , SpannerDbType . Timestamp } ,
75+ { "DateValue" , typeof ( DateTime ) , SpannerDbType . Date } ,
76+ { "JsonValue" , typeof ( string ) , SpannerDbType . Json } ,
77+ { "ProtobufDurationValue" , typeof ( Value ) , SpannerDbType . FromClrType ( typeof ( Duration ) ) } ,
78+ { "ProtobufRectangleValue" , typeof ( Value ) , SpannerDbType . FromClrType ( typeof ( Rectangle ) ) } ,
79+ { "ProtobufValueValue" , typeof ( Value ) , SpannerDbType . FromClrType ( typeof ( Value ) ) } ,
80+ { "ProtobufPersonValue" , typeof ( Value ) , SpannerDbType . FromClrType ( typeof ( Person ) ) } ,
81+ { "ProtobufValueWrapperValue" , typeof ( Value ) , SpannerDbType . FromClrType ( typeof ( ValueWrapper ) ) } ,
82+
83+ // Array types.
84+ { "BoolArrayValue" , typeof ( List < bool > ) , SpannerDbType . ArrayOf ( SpannerDbType . Bool ) } ,
85+ { "Int64ArrayValue" , typeof ( List < long > ) , SpannerDbType . ArrayOf ( SpannerDbType . Int64 ) } ,
86+ { "Float32ArrayValue" , typeof ( List < float > ) , SpannerDbType . ArrayOf ( SpannerDbType . Float32 ) } ,
87+ { "Float64ArrayValue" , typeof ( List < double > ) , SpannerDbType . ArrayOf ( SpannerDbType . Float64 ) } ,
88+ { "NumericArrayValue" , typeof ( List < SpannerNumeric > ) , SpannerDbType . ArrayOf ( SpannerDbType . Numeric ) } ,
89+ { "StringArrayValue" , typeof ( List < string > ) , SpannerDbType . ArrayOf ( SpannerDbType . String ) } ,
90+ { "Base64ArrayValue" , typeof ( List < byte [ ] > ) , SpannerDbType . ArrayOf ( SpannerDbType . Bytes ) } ,
91+ { "BytesArrayValue" , typeof ( List < byte [ ] > ) , SpannerDbType . ArrayOf ( SpannerDbType . Bytes ) } ,
92+ { "TimestampArrayValue" , typeof ( List < DateTime > ) , SpannerDbType . ArrayOf ( SpannerDbType . Timestamp ) } ,
93+ { "DateArrayValue" , typeof ( List < DateTime > ) , SpannerDbType . ArrayOf ( SpannerDbType . Date ) } ,
94+ { "JsonArrayValue" , typeof ( List < string > ) , SpannerDbType . ArrayOf ( SpannerDbType . Json ) } ,
95+ { "ProtobufDurationArrayValue" , typeof ( List < Value > ) , SpannerDbType . ArrayOf ( SpannerDbType . FromClrType ( typeof ( Duration ) ) ) } ,
96+ { "ProtobufRectangleArrayValue" , typeof ( List < Value > ) , SpannerDbType . ArrayOf ( SpannerDbType . FromClrType ( typeof ( Rectangle ) ) ) } ,
97+ { "ProtobufValueArrayValue" , typeof ( List < Value > ) , SpannerDbType . ArrayOf ( SpannerDbType . FromClrType ( typeof ( Value ) ) ) } ,
98+ { "ProtobufPersonArrayValue" , typeof ( List < Value > ) , SpannerDbType . ArrayOf ( SpannerDbType . FromClrType ( typeof ( Person ) ) ) } ,
99+ { "ProtobufValueWrapperArrayValue" , typeof ( List < Value > ) , SpannerDbType . ArrayOf ( SpannerDbType . FromClrType ( typeof ( ValueWrapper ) ) ) } ,
100+ } ;
101+
102+ // Uuid is not supported on emulator.
103+ // We don't have a fixture here, but we can check the environment variable.
104+ if ( Environment . GetEnvironmentVariable ( "SPANNER_EMULATOR_HOST" ) == null )
105+ {
106+ data . Add ( "UuidValue" , typeof ( Guid ) , SpannerDbType . Uuid ) ;
107+ data . Add ( "UuidArrayValue" , typeof ( List < Guid > ) , SpannerDbType . ArrayOf ( SpannerDbType . Uuid ) ) ;
108+ }
109+
110+ return data ;
111+ }
112+ }
98113
99114 internal static async Task GetSchemaTable_WithFlagEnabled_ReturnsSchema_Impl ( string columnName , System . Type type , SpannerDbType spannerDbType , string connectionString , string selectQuery )
100115 {
0 commit comments