2525"""
2626Module for testing dataframes
2727"""
28+
2829import datetime
2930import decimal
3031import unittest
4950 "Doe" ,
5051 "San Francisco" ,
5152 "USA" ,
52- datetime .date (1989 , 8 , 22 ),
53+ datetime .date (1955 , 7 , 1 ), # summer(before 1970)
5354 12132.40 ,
5455 400 ,
5556 datetime .datetime .now (),
6061 "Hero" ,
6162 "San Fransokyo" ,
6263 "Japansa" ,
63- datetime .date (1988 , 8 , 22 ),
64+ datetime .date (1955 , 1 , 1 ), # winter(before 1970)
6465 234234.32 ,
6566 400 ,
6667 datetime .datetime .now (),
7576 "Doe" ,
7677 "San Francisco" ,
7778 "USA" ,
78- datetime .date (1989 , 8 , 22 ),
79+ datetime .date (2000 , 7 , 1 ), # summer(between)
7980 None ,
8081 400 ,
8182 datetime .datetime .now (),
8687 "Hero" ,
8788 "San Fransokyo" ,
8889 None ,
89- datetime .date (1988 , 8 , 22 ),
90+ datetime .date (2000 , 1 , 1 ), # winter(between)
91+ - 12312.1 ,
92+ 0 ,
93+ datetime .datetime .now (),
94+ ),
95+ (
96+ 3 ,
97+ "Johns" ,
98+ "Does" ,
99+ "San Franciscos" ,
100+ "USAs" ,
101+ datetime .date (2040 , 7 , 1 ), # summer(after)
102+ None ,
103+ 500 ,
104+ datetime .datetime .now (),
105+ ),
106+ (
107+ 4 ,
108+ "Bigs" ,
109+ "Heros" ,
110+ "San Fransokyos" ,
111+ None ,
112+ datetime .date (2040 , 1 , 1 ), # winter(after)
90113 - 12312.1 ,
91114 0 ,
92115 datetime .datetime .now (),
@@ -221,6 +244,12 @@ def __check_interop(self):
221244 if not HAS_INTEROP :
222245 self .skipTest ("missing pandas or pyarrow modules" )
223246
247+ def __convert_date (self , value ):
248+ """
249+ Converts a date to the format required by Arrow.
250+ """
251+ return (value - datetime .datetime (1970 , 1 , 1 )).total_seconds ()
252+
224253 def __convert_to_array (self , data , typ ):
225254 """
226255 Convert raw data to an Arrow array using pyarrow.
@@ -233,11 +262,13 @@ def __convert_to_array(self, data, typ):
233262 elif isinstance (typ , pyarrow .TimestampType ):
234263 if typ .unit == "s" :
235264 data = [
236- datetime .datetime (v .year , v .month , v .day ).timestamp ()
265+ self .__convert_date (
266+ datetime .datetime (v .year , v .month , v .day )
267+ )
237268 for v in data
238269 ]
239270 else :
240- data = [value . timestamp ( ) * 1000000 for value in data ]
271+ data = [self . __convert_date ( value ) * 1000000 for value in data ]
241272 mask = [value is None for value in data ]
242273 return pyarrow .array (data , typ , mask = mask )
243274
@@ -459,7 +490,7 @@ def test_8015(self):
459490 ora_df = self .conn .fetch_df_all (statement )
460491 col = ora_df .get_column_by_name ("SALARY" )
461492 self .assertEqual (col .size (), len (DATASET_2 ))
462- self .assertEqual (col .null_count , 1 )
493+ self .assertEqual (col .null_count , 2 )
463494
464495 def test_8016 (self ):
465496 "8016 - check unsupported error"
@@ -506,16 +537,16 @@ def test_8020(self):
506537 ora_col = ora_df .get_column (0 )
507538 self .assertEqual (ora_col .describe_null [0 ], 0 )
508539 self .assertEqual (ora_col .dtype [0 ], 0 )
509- metadata = {"name" : "ID" , "size" : 2 , "num_chunks" : 1 }
540+ metadata = {"name" : "ID" , "size" : 4 , "num_chunks" : 1 }
510541 self .assertEqual (metadata , ora_col .metadata )
511542 self .assertEqual (ora_col .null_count , 0 )
512543
513544 ora_col = ora_df .get_column (4 )
514545 self .assertEqual (ora_col .describe_null [0 ], 3 )
515546 self .assertEqual (ora_col .dtype [0 ], 21 )
516- metadata = {"name" : "COUNTRY" , "size" : 2 , "num_chunks" : 1 }
547+ metadata = {"name" : "COUNTRY" , "size" : 4 , "num_chunks" : 1 }
517548 self .assertEqual (metadata , ora_col .metadata )
518- self .assertEqual (ora_col .null_count , 1 )
549+ self .assertEqual (ora_col .null_count , 2 )
519550
520551 def test_8021 (self ):
521552 "8021 - batches with size that has duplicate rows across batches"
0 commit comments