| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 | 
							- # Protocol Buffers - Google's data interchange format
 
- # Copyright 2008 Google Inc.
 
- # http://code.google.com/p/protobuf/
 
- #
 
- # Licensed under the Apache License, Version 2.0 (the "License");
 
- # you may not use this file except in compliance with the License.
 
- # You may obtain a copy of the License at
 
- #
 
- #      http://www.apache.org/licenses/LICENSE-2.0
 
- #
 
- # Unless required by applicable law or agreed to in writing, software
 
- # distributed under the License is distributed on an "AS IS" BASIS,
 
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
- # See the License for the specific language governing permissions and
 
- # limitations under the License.
 
- """Test for google.protobuf.internal.output_stream."""
 
- __author__ = 'robinson@google.com (Will Robinson)'
 
- import unittest
 
- from google.protobuf import message
 
- from google.protobuf.internal import output_stream
 
- from google.protobuf.internal import wire_format
 
- class OutputStreamTest(unittest.TestCase):
 
-   def setUp(self):
 
-     self.stream = output_stream.OutputStream()
 
-   def testAppendRawBytes(self):
 
-     # Empty string.
 
-     self.stream.AppendRawBytes('')
 
-     self.assertEqual('', self.stream.ToString())
 
-     # Nonempty string.
 
-     self.stream.AppendRawBytes('abc')
 
-     self.assertEqual('abc', self.stream.ToString())
 
-     # Ensure that we're actually appending.
 
-     self.stream.AppendRawBytes('def')
 
-     self.assertEqual('abcdef', self.stream.ToString())
 
-   def AppendNumericTestHelper(self, append_fn, values_and_strings):
 
-     """For each (value, expected_string) pair in values_and_strings,
 
-     calls an OutputStream.Append*(value) method on an OutputStream and ensures
 
-     that the string written to that stream matches expected_string.
 
-     Args:
 
-       append_fn: Unbound OutputStream method that takes an integer or
 
-         long value as input.
 
-       values_and_strings: Iterable of (value, expected_string) pairs.
 
-     """
 
-     for conversion in (int, long):
 
-       for value, string in values_and_strings:
 
-         stream = output_stream.OutputStream()
 
-         expected_string = ''
 
-         append_fn(stream, conversion(value))
 
-         expected_string += string
 
-         self.assertEqual(expected_string, stream.ToString())
 
-   def AppendOverflowTestHelper(self, append_fn, value):
 
-     """Calls an OutputStream.Append*(value) method and asserts
 
-     that the method raises message.EncodeError.
 
-     Args:
 
-       append_fn: Unbound OutputStream method that takes an integer or
 
-         long value as input.
 
-       value: Value to pass to append_fn which should cause an
 
-         message.EncodeError.
 
-     """
 
-     stream = output_stream.OutputStream()
 
-     self.assertRaises(message.EncodeError, append_fn, stream, value)
 
-   def testAppendLittleEndian32(self):
 
-     append_fn = output_stream.OutputStream.AppendLittleEndian32
 
-     values_and_expected_strings = [
 
-         (0, '\x00\x00\x00\x00'),
 
-         (1, '\x01\x00\x00\x00'),
 
-         ((1 << 32) - 1, '\xff\xff\xff\xff'),
 
-         ]
 
-     self.AppendNumericTestHelper(append_fn, values_and_expected_strings)
 
-     self.AppendOverflowTestHelper(append_fn, 1 << 32)
 
-     self.AppendOverflowTestHelper(append_fn, -1)
 
-   def testAppendLittleEndian64(self):
 
-     append_fn = output_stream.OutputStream.AppendLittleEndian64
 
-     values_and_expected_strings = [
 
-         (0, '\x00\x00\x00\x00\x00\x00\x00\x00'),
 
-         (1, '\x01\x00\x00\x00\x00\x00\x00\x00'),
 
-         ((1 << 64) - 1, '\xff\xff\xff\xff\xff\xff\xff\xff'),
 
-         ]
 
-     self.AppendNumericTestHelper(append_fn, values_and_expected_strings)
 
-     self.AppendOverflowTestHelper(append_fn, 1 << 64)
 
-     self.AppendOverflowTestHelper(append_fn, -1)
 
-   def testAppendVarint32(self):
 
-     append_fn = output_stream.OutputStream.AppendVarint32
 
-     values_and_expected_strings = [
 
-         (0, '\x00'),
 
-         (1, '\x01'),
 
-         (127, '\x7f'),
 
-         (128, '\x80\x01'),
 
-         (-1, '\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01'),
 
-         (wire_format.INT32_MAX, '\xff\xff\xff\xff\x07'),
 
-         (wire_format.INT32_MIN, '\x80\x80\x80\x80\xf8\xff\xff\xff\xff\x01'),
 
-         ]
 
-     self.AppendNumericTestHelper(append_fn, values_and_expected_strings)
 
-     self.AppendOverflowTestHelper(append_fn, wire_format.INT32_MAX + 1)
 
-     self.AppendOverflowTestHelper(append_fn, wire_format.INT32_MIN - 1)
 
-   def testAppendVarUInt32(self):
 
-     append_fn = output_stream.OutputStream.AppendVarUInt32
 
-     values_and_expected_strings = [
 
-         (0, '\x00'),
 
-         (1, '\x01'),
 
-         (127, '\x7f'),
 
-         (128, '\x80\x01'),
 
-         (wire_format.UINT32_MAX, '\xff\xff\xff\xff\x0f'),
 
-         ]
 
-     self.AppendNumericTestHelper(append_fn, values_and_expected_strings)
 
-     self.AppendOverflowTestHelper(append_fn, -1)
 
-     self.AppendOverflowTestHelper(append_fn, wire_format.UINT32_MAX + 1)
 
-   def testAppendVarint64(self):
 
-     append_fn = output_stream.OutputStream.AppendVarint64
 
-     values_and_expected_strings = [
 
-         (0, '\x00'),
 
-         (1, '\x01'),
 
-         (127, '\x7f'),
 
-         (128, '\x80\x01'),
 
-         (-1, '\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01'),
 
-         (wire_format.INT64_MAX, '\xff\xff\xff\xff\xff\xff\xff\xff\x7f'),
 
-         (wire_format.INT64_MIN, '\x80\x80\x80\x80\x80\x80\x80\x80\x80\x01'),
 
-         ]
 
-     self.AppendNumericTestHelper(append_fn, values_and_expected_strings)
 
-     self.AppendOverflowTestHelper(append_fn, wire_format.INT64_MAX + 1)
 
-     self.AppendOverflowTestHelper(append_fn, wire_format.INT64_MIN - 1)
 
-   def testAppendVarUInt64(self):
 
-     append_fn = output_stream.OutputStream.AppendVarUInt64
 
-     values_and_expected_strings = [
 
-         (0, '\x00'),
 
-         (1, '\x01'),
 
-         (127, '\x7f'),
 
-         (128, '\x80\x01'),
 
-         (wire_format.UINT64_MAX, '\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01'),
 
-         ]
 
-     self.AppendNumericTestHelper(append_fn, values_and_expected_strings)
 
-     self.AppendOverflowTestHelper(append_fn, -1)
 
-     self.AppendOverflowTestHelper(append_fn, wire_format.UINT64_MAX + 1)
 
- if __name__ == '__main__':
 
-   unittest.main()
 
 
  |