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 |