Example #1
0
    def testMessageToReprWithTime(self):
        msg = TimeMessage(timefield=datetime.datetime(
            2014,
            7,
            2,
            23,
            33,
            25,
            541000,
            tzinfo=util.TimeZoneOffset(datetime.timedelta(0))))
        self.assertEqual(
            encoding.MessageToRepr(msg, multiline=True),
            # pylint:disable=line-too-long, Too much effort to make MessageToRepr
            # wrap lines properly.
            """\
%s.TimeMessage(
    timefield=datetime.datetime(2014, 7, 2, 23, 33, 25, 541000, tzinfo=protorpc.util.TimeZoneOffset(datetime.timedelta(0))),
)""" % __name__)
        self.assertEqual(
            encoding.MessageToRepr(msg, multiline=True, no_modules=True),
            # pylint:disable=line-too-long, Too much effort to make MessageToRepr
            # wrap lines properly.
            """\
TimeMessage(
    timefield=datetime.datetime(2014, 7, 2, 23, 33, 25, 541000, tzinfo=TimeZoneOffset(datetime.timedelta(0))),
)""")
Example #2
0
 def testValueFromMessageWithTimeZone(self):
   message = message_types.DateTimeMessage(milliseconds=1991128000000,
                                           time_zone_offset=300)
   field = message_types.DateTimeField(1)
   timestamp = field.value_from_message(message)
   time_zone = util.TimeZoneOffset(60 * 5)
   self.assertEqual(datetime.datetime(2033, 2, 4, 11, 6, 40, tzinfo=time_zone),
                    timestamp)
Example #3
0
 def testValueToMessageWithTimeZone(self):
   time_zone = util.TimeZoneOffset(60 * 10)
   field = message_types.DateTimeField(1)
   message = field.value_to_message(
       datetime.datetime(2033, 2, 4, 11, 22, 10, tzinfo=time_zone))
   self.assertEqual(message_types.DateTimeMessage(milliseconds=1991128930000,
                                                  time_zone_offset=600),
                    message)
Example #4
0
 def testJsonDatetime(self):
     msg = TimeMessage(timefield=datetime.datetime(
         2014,
         7,
         2,
         23,
         33,
         25,
         541000,
         tzinfo=util.TimeZoneOffset(datetime.timedelta(0))))
     self.assertEqual('{"timefield": "2014-07-02T23:33:25.541000+00:00"}',
                      encoding.MessageToJson(msg))
Example #5
0
    def testProtobufEncodeDateTimeMessageWithTimeZone(self):
        """Test what happens when encoding a DateTimeField with a time zone."""
        for tz_offset in (30, -30, 8 * 60, 0):
            mine = HasDateTimeMessage(value=datetime.datetime(
                1970, 1, 1, tzinfo=util.TimeZoneOffset(tz_offset)))
            nested = NestedDateTimeMessage()
            nested.value = message_types.DateTimeMessage(
                milliseconds=0, time_zone_offset=tz_offset)

            my_encoded = protobuf.encode_message(mine)
            encoded = protobuf.encode_message(nested)
            self.assertEquals(my_encoded, encoded)
Example #6
0
 def testProtobufDecodeDateTimeMessageWithTimeZone(self):
     """Test what happens when decoding a DateTimeMessage with a time zone."""
     nested = NestedDateTimeMessage()
     nested.value = message_types.DateTimeMessage(milliseconds=12345678,
                                                  time_zone_offset=60)
     value = protobuf.decode_message(HasDateTimeMessage,
                                     protobuf.encode_message(nested)).value
     self.assertEqual(
         datetime.datetime(1970,
                           1,
                           1,
                           3,
                           25,
                           45,
                           678000,
                           tzinfo=util.TimeZoneOffset(60)), value)
Example #7
0
 def testMessageToReprWithTime(self):
     msg = TimeMessage(timefield=datetime.datetime(
         2014,
         7,
         2,
         23,
         33,
         25,
         541000,
         tzinfo=util.TimeZoneOffset(datetime.timedelta(0))))
     self.assertEqual(
         encoding.MessageToRepr(msg, multiline=True),
         ('%s.TimeMessage(\n    '
          'timefield=datetime.datetime(2014, 7, 2, 23, 33, 25, 541000, '
          'tzinfo=protorpc.util.TimeZoneOffset('
          'datetime.timedelta(0))),\n)') % __name__)
     self.assertEqual(
         encoding.MessageToRepr(msg, multiline=True, no_modules=True),
         'TimeMessage(\n    '
         'timefield=datetime.datetime(2014, 7, 2, 23, 33, 25, 541000, '
         'tzinfo=TimeZoneOffset(datetime.timedelta(0))),\n)')
 def testDateTimeTimeZones(self):
   """Test that a datetime string with a timezone is decoded correctly."""
   for datetime_string, datetime_vals in (
       ('2012-09-30T15:31:50.262-06:00',
        (2012, 9, 30, 15, 31, 50, 262000, util.TimeZoneOffset(-360))),
       ('2012-09-30T15:31:50.262+01:30',
        (2012, 9, 30, 15, 31, 50, 262000, util.TimeZoneOffset(90))),
       ('2012-09-30T15:31:50+00:05',
        (2012, 9, 30, 15, 31, 50, 0, util.TimeZoneOffset(5))),
       ('2012-09-30T15:31:50+00:00',
        (2012, 9, 30, 15, 31, 50, 0, util.TimeZoneOffset(0))),
       ('2012-09-30t15:31:50-00:00',
        (2012, 9, 30, 15, 31, 50, 0, util.TimeZoneOffset(0))),
       ('2012-09-30t15:31:50z',
        (2012, 9, 30, 15, 31, 50, 0, util.TimeZoneOffset(0))),
       ('2012-09-30T15:31:50-23:00',
        (2012, 9, 30, 15, 31, 50, 0, util.TimeZoneOffset(-1380)))):
     decoded = util.decode_datetime(datetime_string)
     expected = datetime.datetime(*datetime_vals)
     self.assertEquals(expected, decoded)
Example #9
0
 def to_model(Message, property, field, value):
     timezone = None
     if value.time_zone_offset:
         timezone = util.TimeZoneOffset(value.time_zone_offset)
     return datetime.time(value.hour, value.minute, value.second,
                          value.microsecond, timezone)
Example #10
0
 def testTimeZoneOffsetDelta(self):
   """Test that delta works with TimeZoneOffset."""
   time_zone = util.TimeZoneOffset(datetime.timedelta(minutes=3))
   epoch = time_zone.utcoffset(datetime.datetime.utcfromtimestamp(0))
   self.assertEqual(180, util.total_seconds(epoch))