コード例 #1
0
ファイル: test_codec.py プロジェクト: vrai/Fudge-PyC
    def testEncodeDateTimes ( self ):
        # Construct the message
        message1 = Message ( )

        message1.addFieldRawDate ( 2010, 0, 0, 'date-Year' )
        message1.addFieldRawDate ( 2010, 3, 0, 'date-Month' )
        message1.addFieldRawDate ( 2010, 3, 4, 'date-Day' )

        for precision, name, timezone in ( ( fudgepyc.types.PRECISION_HOUR,        'time-Hour-UTC',   0 ),
                                           ( fudgepyc.types.PRECISION_MINUTE,      'time-Minute-UTC', 0 ),
                                           ( fudgepyc.types.PRECISION_SECOND,      'time-Second-UTC', 0 ),
                                           ( fudgepyc.types.PRECISION_MILLISECOND, 'time-Milli-UTC',  0 ),
                                           ( fudgepyc.types.PRECISION_MICROSECOND, 'time-Micro-UTC',  0 ),
                                           ( fudgepyc.types.PRECISION_NANOSECOND,  'time-Nano-UTC',   0 ),
                                           ( fudgepyc.types.PRECISION_NANOSECOND,  'time-Nano',       None ),
                                           ( fudgepyc.types.PRECISION_NANOSECOND,  'time-Nano-+1h',   4 ) ):
            if timezone is None:
                message1.addFieldRawTime ( precision, 11, 12, 13, 987654321, name = name )
            else:
                message1.addFieldRawTime ( precision, 11, 12, 13, 987654321, timezone, name )

        message1.addFieldRawDateTime ( fudgepyc.types.PRECISION_MILLENNIUM, 1000, name = 'datetime-Millenia' )
        message1.addFieldRawDateTime ( fudgepyc.types.PRECISION_CENTURY,    1900, name = 'datetime-Century' )

        for timezone, name in ( ( 0,    'datetime-Nano-UTC' ),
                                ( None, 'datetime-Nano' ),
                                ( 4,    'datetime-Nano-+1h' ) ):
            if timezone is None:
                message1.addFieldRawDateTime ( fudgepyc.types.PRECISION_NANOSECOND, 2010, 3, 4, 11, 12, 13, 987654321, name = name )
            else:
                message1.addFieldRawDateTime ( fudgepyc.types.PRECISION_NANOSECOND, 2010, 3, 4, 11, 12, 13, 987654321, timezone, name )

        # Encode it and compare against the test file
        encoded = Envelope ( message1 ).encode ( )
        reference = self.__loadFile ( 'DATETIMES' )
        self.assertEquals ( encoded, reference )
コード例 #2
0
ファイル: test_message.py プロジェクト: vrai/Fudge-PyC
    def testDateTimeFields ( self ):
        message1 = Message ( )

        # Populate message using raw datetime methods
        message1.addFieldRawDate (               name = 'nodate' )
        message1.addFieldRawDate ( 1689,         name = 'year' )
        message1.addFieldRawDate ( 1689, 12,     name = 'month' )
        message1.addFieldRawDate ( 1689, 12, 16, name = 'day' )

        message1.addFieldRawTime ( fudgepyc.types.PRECISION_MILLENNIUM,                       name = 'notime' )
        message1.addFieldRawTime ( fudgepyc.types.PRECISION_HOUR,       18,                   name = 'hour' )
        message1.addFieldRawTime ( fudgepyc.types.PRECISION_MINUTE,     18, 4,                name = 'minute' )
        message1.addFieldRawTime ( fudgepyc.types.PRECISION_SECOND,     18, 4, 40,            name = 'second' )
        message1.addFieldRawTime ( fudgepyc.types.PRECISION_NANOSECOND, 18, 4, 40, 237363123, name = 'nanosecond' )

        message1.addFieldRawTime ( fudgepyc.types.PRECISION_MILLENNIUM,                       offset = 0,   name = 'notime_utc' )
        message1.addFieldRawTime ( fudgepyc.types.PRECISION_HOUR,       18,                   offset = 8,   name = 'hour_+2h' )
        message1.addFieldRawTime ( fudgepyc.types.PRECISION_MINUTE,     18, 4,                offset = -4,  name = 'minute_-1h' )
        message1.addFieldRawTime ( fudgepyc.types.PRECISION_SECOND,     18, 4, 40,            offset = -20, name = 'second_-5h' )
        message1.addFieldRawTime ( fudgepyc.types.PRECISION_NANOSECOND, 18, 4, 40, 237363123, offset = 0,   name = 'nanosecond_utc' )

        message1.addFieldRawDateTime ( fudgepyc.types.PRECISION_CENTURY,                                        name = 'nodatetime' )
        message1.addFieldRawDateTime ( fudgepyc.types.PRECISION_YEAR,       1689,                               name = 'dt_year' )
        message1.addFieldRawDateTime ( fudgepyc.types.PRECISION_MONTH,      1689, 12,                           name = 'dt_month',      offset = -6 )
        message1.addFieldRawDateTime ( fudgepyc.types.PRECISION_DAY,        1689, 12, 16,                       name = 'dt_day' )
        message1.addFieldRawDateTime ( fudgepyc.types.PRECISION_HOUR,       1689, 12, 16, 18,                   name = 'dt_hour' )
        message1.addFieldRawDateTime ( fudgepyc.types.PRECISION_MINUTE,     1689, 12, 16, 18, 4,                name = 'dt_minute',     offset = 0 )
        message1.addFieldRawDateTime ( fudgepyc.types.PRECISION_SECOND,     1689, 12, 16, 18, 4, 40,            name = 'dt_second' )
        message1.addFieldRawDateTime ( fudgepyc.types.PRECISION_NANOSECOND, 1689, 12, 16, 18, 4, 40, 237363123, name = 'dt_nanosecond', offset = 1 )

        # Access the fields as raw tuples
        self.assertEqual ( message1 [ 'nodate' ].getRawDate ( ), ( 0, 0, 0 ) )
        self.assertEqual ( message1 [ 'year' ].getRawDate ( ),   ( 1689, 0, 0 ) )
        self.assertEqual ( message1 [ 'month' ].getRawDate ( ),  ( 1689, 12, 0 ) )
        self.assertEqual ( message1 [ 'day' ].getRawDate ( ),    ( 1689, 12, 16 ) )

        self.assertEqual ( message1 [ 'notime' ].getRawTime ( ),     ( fudgepyc.types.PRECISION_MILLENNIUM, 0, 0, 0, 0, None ) )
        self.assertEqual ( message1 [ 'hour' ].getRawTime ( ),       ( fudgepyc.types.PRECISION_HOUR,       18, 0, 0, 0, None ) )
        self.assertEqual ( message1 [ 'minute' ].getRawTime ( ),     ( fudgepyc.types.PRECISION_MINUTE,     18, 4, 0, 0, None ) )
        self.assertEqual ( message1 [ 'second' ].getRawTime ( ),     ( fudgepyc.types.PRECISION_SECOND,     18, 4, 40, 0, None ) )
        self.assertEqual ( message1 [ 'nanosecond' ].getRawTime ( ), ( fudgepyc.types.PRECISION_NANOSECOND, 18, 4, 40, 237363123, None ) )

        self.assertEqual ( message1 [ 'notime_utc' ].getRawTime ( ),     ( fudgepyc.types.PRECISION_MILLENNIUM, 0, 0, 0, 0, 0 ) )
        self.assertEqual ( message1 [ 'hour_+2h' ].getRawTime ( ),       ( fudgepyc.types.PRECISION_HOUR,       18, 0, 0, 0, 8 ) )
        self.assertEqual ( message1 [ 'minute_-1h' ].getRawTime ( ),     ( fudgepyc.types.PRECISION_MINUTE,     18, 4, 0, 0, -4 ) )
        self.assertEqual ( message1 [ 'second_-5h' ].getRawTime ( ),     ( fudgepyc.types.PRECISION_SECOND,     18, 4, 40, 0, -20 ) )
        self.assertEqual ( message1 [ 'nanosecond_utc' ].getRawTime ( ), ( fudgepyc.types.PRECISION_NANOSECOND, 18, 4, 40, 237363123, 0 ) )

        self.assertEqual ( message1 [ 'nodatetime' ].getRawDateTime ( ),    ( fudgepyc.types.PRECISION_CENTURY,    0, 0, 0, 0, 0, 0, 0, None ) )
        self.assertEqual ( message1 [ 'dt_year' ].getRawDateTime ( ),       ( fudgepyc.types.PRECISION_YEAR,       1689, 0, 0, 0, 0, 0, 0, None ) )
        self.assertEqual ( message1 [ 'dt_month' ].getRawDateTime ( ),      ( fudgepyc.types.PRECISION_MONTH,      1689, 12, 0, 0, 0, 0, 0, -6 ) )
        self.assertEqual ( message1 [ 'dt_day' ].getRawDateTime ( ),        ( fudgepyc.types.PRECISION_DAY,        1689, 12, 16, 0, 0, 0, 0, None ) )
        self.assertEqual ( message1 [ 'dt_hour' ].getRawDateTime ( ),       ( fudgepyc.types.PRECISION_HOUR,       1689, 12, 16, 18, 0, 0, 0, None ) )
        self.assertEqual ( message1 [ 'dt_minute' ].getRawDateTime ( ),     ( fudgepyc.types.PRECISION_MINUTE,     1689, 12, 16, 18, 4, 0, 0, 0 ) )
        self.assertEqual ( message1 [ 'dt_second' ].getRawDateTime ( ),     ( fudgepyc.types.PRECISION_SECOND,     1689, 12, 16, 18, 4, 40, 0, None ) )
        self.assertEqual ( message1 [ 'dt_nanosecond' ].getRawDateTime ( ), ( fudgepyc.types.PRECISION_NANOSECOND, 1689, 12, 16, 18, 4, 40, 237363123, 1 ) )

        # Access the fields as datetime objects
        self.assertEqual ( message1 [ 'nodate' ].value ( ), datetime.date ( 1, 1, 1 ) )
        self.assertEqual ( message1 [ 'year' ].value ( ),   datetime.date ( 1689, 1, 1 ) )
        self.assertEqual ( message1 [ 'month' ].value ( ),  datetime.date ( 1689, 12, 1 ) )
        self.assertEqual ( message1 [ 'day' ].value ( ),    datetime.date ( 1689, 12, 16 ) )

        self.assertEqual ( message1 [ 'notime' ].value ( ),     datetime.time ( 0, 0, 0 ) )
        self.assertEqual ( message1 [ 'hour' ].value ( ),       datetime.time ( 18, 0, 0 ) )
        self.assertEqual ( message1 [ 'minute' ].value ( ),     datetime.time ( 18, 4, 0 ) )
        self.assertEqual ( message1 [ 'second' ].value ( ),     datetime.time ( 18, 4, 40 ) )
        self.assertEqual ( message1 [ 'nanosecond' ].value ( ), datetime.time ( 18, 4, 40, 237363 ) )

        self.assertEqual ( message1 [ 'notime_utc' ].value ( ),     datetime.time ( 0, 0, 0, 0, fudgepyc.timezone.Timezone ( 0 ) ) )
        self.assertEqual ( message1 [ 'hour_+2h' ].value ( ),       datetime.time ( 18, 0, 0, 0, fudgepyc.timezone.Timezone ( 8 ) ) )
        self.assertEqual ( message1 [ 'minute_-1h' ].value ( ),     datetime.time ( 18, 4, 0, 0, fudgepyc.timezone.Timezone ( -4 ) ) )
        self.assertEqual ( message1 [ 'second_-5h' ].value ( ),     datetime.time ( 18, 4, 40, 0, fudgepyc.timezone.Timezone ( -20 ) ) )
        self.assertEqual ( message1 [ 'nanosecond_utc' ].value ( ), datetime.time ( 18, 4, 40, 237363, fudgepyc.timezone.Timezone ( 0 ) ) )

        self.assertEqual ( message1 [ 'nodatetime' ].value ( ),    datetime.datetime ( 1, 1, 1, 0, 0, 0, 0 ) )
        self.assertEqual ( message1 [ 'dt_year' ].value ( ),       datetime.datetime ( 1689, 1, 1, 0, 0, 0, 0 ) )
        self.assertEqual ( message1 [ 'dt_month' ].value ( ),      datetime.datetime ( 1689, 12, 1, 0, 0, 0, 0, fudgepyc.timezone.Timezone ( -6 ) ) )
        self.assertEqual ( message1 [ 'dt_day' ].value ( ),        datetime.datetime ( 1689, 12, 16, 0, 0, 0, 0 ) )
        self.assertEqual ( message1 [ 'dt_hour' ].value ( ),       datetime.datetime ( 1689, 12, 16, 18, 0, 0, 0 ) )
        self.assertEqual ( message1 [ 'dt_minute' ].value ( ),     datetime.datetime ( 1689, 12, 16, 18, 4, 0, 0, fudgepyc.timezone.Timezone ( 0 ) ) )
        self.assertEqual ( message1 [ 'dt_second' ].value ( ),     datetime.datetime ( 1689, 12, 16, 18, 4, 40, 0 ) )
        self.assertEqual ( message1 [ 'dt_nanosecond' ].value ( ), datetime.datetime ( 1689, 12, 16, 18, 4, 40, 237363, fudgepyc.timezone.Timezone ( 1 ) ) )