| OLD | NEW |
| 1 #! /usr/bin/python | 1 #! /usr/bin/env python |
| 2 # | 2 # |
| 3 # Protocol Buffers - Google's data interchange format | 3 # Protocol Buffers - Google's data interchange format |
| 4 # Copyright 2008 Google Inc. All rights reserved. | 4 # Copyright 2008 Google Inc. All rights reserved. |
| 5 # http://code.google.com/p/protobuf/ | 5 # https://developers.google.com/protocol-buffers/ |
| 6 # | 6 # |
| 7 # Redistribution and use in source and binary forms, with or without | 7 # Redistribution and use in source and binary forms, with or without |
| 8 # modification, are permitted provided that the following conditions are | 8 # modification, are permitted provided that the following conditions are |
| 9 # met: | 9 # met: |
| 10 # | 10 # |
| 11 # * Redistributions of source code must retain the above copyright | 11 # * Redistributions of source code must retain the above copyright |
| 12 # notice, this list of conditions and the following disclaimer. | 12 # notice, this list of conditions and the following disclaimer. |
| 13 # * Redistributions in binary form must reproduce the above | 13 # * Redistributions in binary form must reproduce the above |
| 14 # copyright notice, this list of conditions and the following disclaimer | 14 # copyright notice, this list of conditions and the following disclaimer |
| 15 # in the documentation and/or other materials provided with the | 15 # in the documentation and/or other materials provided with the |
| 16 # distribution. | 16 # distribution. |
| 17 # * Neither the name of Google Inc. nor the names of its | 17 # * Neither the name of Google Inc. nor the names of its |
| 18 # contributors may be used to endorse or promote products derived from | 18 # contributors may be used to endorse or promote products derived from |
| 19 # this software without specific prior written permission. | 19 # this software without specific prior written permission. |
| 20 # | 20 # |
| 21 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | 21 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| 22 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | 22 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| 23 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | 23 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| 24 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | 24 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| 25 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 25 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| 26 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 26 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| 27 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 27 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 28 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 28 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 29 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 29 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 30 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 30 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 31 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 31 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 32 | 32 |
| 33 """Tests for google.protobuf.descriptor_database.""" | 33 """Tests for google.protobuf.text_encoding.""" |
| 34 | 34 |
| 35 __author__ = 'matthewtoia@google.com (Matt Toia)' | 35 try: |
| 36 import unittest2 as unittest |
| 37 except ImportError: |
| 38 import unittest |
| 39 from google.protobuf import text_encoding |
| 36 | 40 |
| 37 import unittest | 41 TEST_VALUES = [ |
| 38 from google.protobuf import descriptor_pb2 | 42 ("foo\\rbar\\nbaz\\t", |
| 39 from google.protobuf.internal import factory_test2_pb2 | 43 "foo\\rbar\\nbaz\\t", |
| 40 from google.protobuf import descriptor_database | 44 b"foo\rbar\nbaz\t"), |
| 45 ("\\'full of \\\"sound\\\" and \\\"fury\\\"\\'", |
| 46 "\\'full of \\\"sound\\\" and \\\"fury\\\"\\'", |
| 47 b"'full of \"sound\" and \"fury\"'"), |
| 48 ("signi\\\\fying\\\\ nothing\\\\", |
| 49 "signi\\\\fying\\\\ nothing\\\\", |
| 50 b"signi\\fying\\ nothing\\"), |
| 51 ("\\010\\t\\n\\013\\014\\r", |
| 52 "\x08\\t\\n\x0b\x0c\\r", |
| 53 b"\010\011\012\013\014\015")] |
| 41 | 54 |
| 42 | 55 |
| 43 class DescriptorDatabaseTest(unittest.TestCase): | 56 class TextEncodingTestCase(unittest.TestCase): |
| 57 def testCEscape(self): |
| 58 for escaped, escaped_utf8, unescaped in TEST_VALUES: |
| 59 self.assertEqual(escaped, |
| 60 text_encoding.CEscape(unescaped, as_utf8=False)) |
| 61 self.assertEqual(escaped_utf8, |
| 62 text_encoding.CEscape(unescaped, as_utf8=True)) |
| 44 | 63 |
| 45 def testAdd(self): | 64 def testCUnescape(self): |
| 46 db = descriptor_database.DescriptorDatabase() | 65 for escaped, escaped_utf8, unescaped in TEST_VALUES: |
| 47 file_desc_proto = descriptor_pb2.FileDescriptorProto.FromString( | 66 self.assertEqual(unescaped, text_encoding.CUnescape(escaped)) |
| 48 factory_test2_pb2.DESCRIPTOR.serialized_pb) | 67 self.assertEqual(unescaped, text_encoding.CUnescape(escaped_utf8)) |
| 49 db.Add(file_desc_proto) | |
| 50 | 68 |
| 51 self.assertEquals(file_desc_proto, db.FindFileByName( | |
| 52 'net/proto2/python/internal/factory_test2.proto')) | |
| 53 self.assertEquals(file_desc_proto, db.FindFileContainingSymbol( | |
| 54 'net.proto2.python.internal.Factory2Message')) | |
| 55 self.assertEquals(file_desc_proto, db.FindFileContainingSymbol( | |
| 56 'net.proto2.python.internal.Factory2Message.NestedFactory2Message')) | |
| 57 self.assertEquals(file_desc_proto, db.FindFileContainingSymbol( | |
| 58 'net.proto2.python.internal.Factory2Enum')) | |
| 59 self.assertEquals(file_desc_proto, db.FindFileContainingSymbol( | |
| 60 'net.proto2.python.internal.Factory2Message.NestedFactory2Enum')) | |
| 61 | 69 |
| 62 if __name__ == '__main__': | 70 if __name__ == "__main__": |
| 63 unittest.main() | 71 unittest.main() |
| OLD | NEW |