def test_invalid(self):
     cases = ['', '1900-01-01T00:00:00.00Z', '1900-21-01T00:00:00.000Z']
     for c in cases:
         try:
             parse_timestamp(c)
         except IndexError:
             continue
         except ValueError:
             continue
         assert(False)
    def test_valid(self):
        cases = [
            { 'string': '2018-10-07T13:14:33.015Z'
            , 'data': datetime(2018, 10, 7, 13, 14, 33, 15 * 1000) },

            { 'string': '1900-01-01T00:00:00.000Z'
            , 'data': datetime(1900, 1, 1) },

            { 'string': '2000-01-01T00:00:00.000Z'
            , 'data': datetime(2000, 1, 1) },

            { 'string': '3000-10-21T00:59:00.000Z'
            , 'data': datetime(3000, 10, 21, 0, 59) },

            { 'string': '1902-02-02T00:00:00.000Z'
            , 'data': datetime(1902, 2, 2) },

            { 'string': '0022-02-22T22:22:22.220Z'
            , 'data': datetime(22, 2, 22, 22, 22, 22, 220 * 1000) },

            { 'string': '1900-01-01T00:00:00.331Z'
            , 'data': datetime(1900, 1, 1, 0, 0, 0, 331 * 1000) },

            { 'string': '2015-12-07T13:14:33.915Z'
            , 'data': datetime(2015, 12, 7, 13, 14, 33, 915 * 1000) }
        ]
        for c in cases:
            assert(c['data'] == parse_timestamp(c['string']))