@@ -1037,34 +1037,30 @@ def testUUID(self):
10371037 x = uuid .uuid1 ()
10381038 self .failUnlessEqual (ps (x ), x )
10391039
1040+ def _infinity_test (self , typname , inf , neg ):
1041+ ps = self .db .prepare ('SELECT $1::' + typname ).first
1042+ val = ps ('infinity' )
1043+ self .failUnlessEqual (val , inf )
1044+ val = ps ('-infinity' )
1045+ self .failUnlessEqual (val , neg )
1046+ val = ps (inf )
1047+ self .failUnlessEqual (val , inf )
1048+ val = ps (neg )
1049+ self .failUnlessEqual (val , neg )
1050+ ps = self .db .prepare ('SELECT $1::' + typname + '::text' ).first
1051+ self .failUnlessEqual (ps ('infinity' ), 'infinity' )
1052+ self .failUnlessEqual (ps ('-infinity' ), '-infinity' )
1053+
10401054 def testInfinity_stdlib_datetime (self ):
1041- ps = self .db .prepare ('SELECT $1::timestamp, $2::timestamptz, $3::date' ).first
1042- # Can't test the special text case because we don't get the text back.
1043- ts , tstz , date = ps ('infinity' , 'infinity' , 'infinity' )
1044- self .failUnlessEqual (ts , infinity_datetime )
1045- self .failUnlessEqual (tstz , infinity_datetime )
1046- self .failUnlessEqual (date , infinity_date )
1047- ts , tstz , date = ps ('-infinity' , '-infinity' , '-infinity' )
1048- self .failUnlessEqual (ts , negative_infinity_datetime )
1049- self .failUnlessEqual (tstz , negative_infinity_datetime )
1050- self .failUnlessEqual (date , negative_infinity_date )
1051- self .failUnlessEqual (
1052- ps (infinity_datetime , infinity_datetime , infinity_date ),
1053- (infinity_datetime , infinity_datetime , infinity_date ),
1054- )
1055- self .failUnlessEqual (
1056- ps (negative_infinity_datetime , negative_infinity_datetime , negative_infinity_date ),
1057- (negative_infinity_datetime , negative_infinity_datetime , negative_infinity_date ),
1058- )
1059- ps = self .db .prepare ('SELECT $1::timestamp::text, $2::timestamptz::text, $3::date::text' ).first
1060- self .failUnlessEqual (
1061- ps ('infinity' , 'infinity' , 'infinity' ),
1062- ('infinity' , 'infinity' , 'infinity' )
1063- )
1064- self .failUnlessEqual (
1065- ps ('-infinity' , '-infinity' , '-infinity' ),
1066- ('-infinity' , '-infinity' , '-infinity' )
1067- )
1055+ self ._infinity_test ("timestamptz" , infinity_datetime , negative_infinity_datetime )
1056+ self ._infinity_test ("timestamp" , infinity_datetime , negative_infinity_datetime )
1057+
1058+ def testInfinity_stdlib_date (self ):
1059+ try :
1060+ self .db .prepare ("SELECT 'infinity'::date" )()
1061+ self ._infinity_test ('date' , infinity_date , negative_infinity_date )
1062+ except :
1063+ pass
10681064
10691065 def testTypeIOError (self ):
10701066 original = dict (self .db .typio ._cache )
0 commit comments