3 SLj @sdZdZddlZddlZddlZddlZy ddlZWnek rPddlZYnXddl m Z ddl m Z ddl m Z ddl mZddl mZdd l mZdd l mZddl m Zdd l mZdd l mZdd l mZddl mZGdddejZGdddejZe jeeGdddeZGdddeZGdddeZGdddejZGdddejZe jeeGdddeZ e!dkrej"dS) z%Test for google.protobuf.text_format.z kenton@google.com (Kenton Varda)N)_parameterized) any_test_pb2)map_unittest_pb2)unittest_mset_pb2) unittest_pb2)unittest_proto3_arena_pb2)api_implementation)message_set_extensions_pb2) test_util)descriptor_pool) text_formatc@seZdZddZdS)SimpleTextFormatTestscCs$xtjD]}|jdt|qWdS)N)r Z_QUOTES assertEquallen)selfZquoter&/usr/lib/python3.6/text_format_test.pytestQuoteMarksAreSingleCharsFs z2SimpleTextFormatTests.testQuoteMarksAreSingleCharsN)__name__ __module__ __qualname__rrrrrr @sr c@s,eZdZddZddZddZddZd S) TextFormatBasec Cs4tj| }ttkr|jSdd|DSQRXdS)NcSsg|]}|jdqS)zutf-8)decode).0Z golden_linerrr Qsz-TextFormatBase.ReadGolden..)r Z GoldenFilestrbytes readlines)rgolden_filenamefrrr ReadGoldenNs zTextFormatBase.ReadGoldencCs |j|}|j|dj|dS)N)r!ZassertMultiLineEqualjoin)rtextrZ golden_linesrrrCompareToGoldenFileSs z"TextFormatBase.CompareToGoldenFilecCs|j||dS)N)r)rr$ golden_textrrrCompareToGoldenTextWsz"TextFormatBase.CompareToGoldenTextcCs>|jddjddjddjdd}tjdtjjd|}|S)Nze+0ze+ze-0ze-z\.0$r")replacerecompile MULTILINEsub)rr$rrrRemoveRedundantZerosZsz#TextFormatBase.RemoveRedundantZerosN)rrrr!r%r'r-rrrrrLsrc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Z d=S)>TextFormatTestcCsx|j}|jjd |jjd|jjd|jjd|jjd|jjd|jjd|j|jtj |ddS) Nllgw/^@gtQFքDg‚6.UnicodeSubN)rrrrrrr UnicodeSub~sr9uüꜟz(repeated_string: "\303\274\352\234\237" )sixZ text_typer/r4r1r'r r5)rr6r9r7rrrtestPrintExoticUnicodeSubclass|s z-TextFormatTest.testPrintExoticUnicodeSubclasscCs2|j}|jj}d|_|jtj|ddddS)N*T) as_one_linez"repeated_nested_message { bb: 42 })r/repeated_nested_messageaddbbr'r r5)rr6r7msgrrrtestPrintNestedMessageAsOneLines   z.TextFormatTest.testPrintNestedMessageAsOneLinecCs^|j}|jjd|jjd|jjd|jjd|jjd|jtj|ddddS)NrZGoogleZZurichT)r=zirepeated_int32: 1 repeated_int32: 1 repeated_int32: 3 repeated_string: "Google" repeated_string: "Zurich")r/Zrepeated_int32r1r4r'r r5)rr6r7rrr testPrintRepeatedFieldsAsOneLines      z/TextFormatTest.testPrintRepeatedFieldsAsOneLinecCs(|j}d|_|jtj|ddddS)Nz a new lineT)r=zoptional_string: "a\nnew\nline")r/optional_stringr'r r5)rr6r7rrr'testPrintNestedNewLineInStringAsOneLines  z6TextFormatTest.testPrintNestedNewLineInStringAsOneLinecCs||j}|jjd |jjd|jjd|jjd|jjd|jjd|jjd|j|jtj |dd d dS) Nllgw/^@gtQFքDg‚6i g⹭?zoptional_float: 1.25z%optional_double: -3.45678901234568e-6zrepeated_float: -5642zrepeated_double: 7.89e-5z.15g) float_formatz&payload {{ {0} {1} {2} {3} }} T)r=rOzpayload {{ {0} {1} {2} {3} }}g/_e̾i) ZNestedTestAllTypesZpayloadoptional_floatZoptional_doubleZrepeated_floatr1r3r r5r'r-format)rr6r7Zformatted_fieldsZ text_messagerrrtestPrintFloatFormats&z#TextFormatTest.testPrintFloatFormatcCs"|j}d|_|jdt|dS)N{zc: 123 )ZForeignMessagecrr)rr6r7rrrtestMessageToStringsz"TextFormatTest.testMessageToStringcCs|j}|jjd}|j}tjd}tj||||jd|j|j tjd}tj |}|j|||jd|j|j dS)NrPFzoptional_float: 0.0 ) r/ DESCRIPTORfields_by_namerPr TextWriterZ PrintFieldrgetvalueclose_Printer)rr6r7fieldvalueoutprinterrrrtestPrintFields     zTextFormatTest.testPrintFieldcCs|j}|jjd}|j}tjd}tj||||jd|j|j tjd}tj |}|j|||jd|j|j dS)NrPFz0.0) r/rVrWrPr rXZPrintFieldValuerrYrZr[)rr6r7r\r]r^r_rrrtestPrintFieldValues     z"TextFormatTest.testPrintFieldValuecCsT|j}tj|tj|}|j}tj|||j|||tkrPtj||dS)N) r/r SetAllFieldsr r5rIrrExpectAllFieldsSet)rr6r7 ascii_textrKrrrtestParseAllFields"s    z!TextFormatTest.testParseAllFieldscCs|j}tj|tj|}|jd}|j}tj|||j|||tkrZtj |||j tj |||j|||tkrtj ||t j r|j}d}tj |||j|jd|j tj|||j|jddS)Nzutf-8uoptional_string: "café"ucafé)r/r rbr r5encoderIrrrcClearMerger:ZPY2rE)rr6r7rdrKZmsg2r$rrrtestParseAndMergeUtf8-s,           z$TextFormatTest.testParseAndMergeUtf8cCs|j}d}tj|||jd|jd|jd|jd|jd|jd|jd|jd|jd|jd |jd |jd|jd |jd|jd |jd |jd |jddS)NuUrepeated_int64: -9223372036854775808 repeated_uint64: 18446744073709551615 repeated_double: 123.456 repeated_double: 1.23e+22 repeated_double: 1.23e-18 repeated_string: "\000\001\007\010\014\n\r\t\013\\\'\"" repeated_string: "foo" 'corge' "grault" repeated_string: "\303\274\352\234\237" repeated_string: "\xc3\xbc" repeated_string: "ü" lrlgw/^@gtQFքDrg‚6<z  \'"ZfoocorgegraultuüꜟürCl)r/r rIrr0r2r3r4)rr6r7r$rrrtestParseExoticHs zTextFormatTest.testParseExoticcCsv|j}d}tj|||jd|jd|jd|jd|jd|jd|jd|jd|jd |jddS) Nzorepeated_int64: 100; repeated_int64: 200; repeated_int64: 300, repeated_string: "one", repeated_string: "two"; drri,rjonetwo)r/r rIrr0r4)rr6r7r$rrrtestParseTrailingCommasas z&TextFormatTest.testParseTrailingCommascCsv|j}d}tj|||jd|jd|jd|jd|jd|jd|jd|jd|jd |jddS) NzRrepeated_int64: [100, 200]; repeated_int64: 300, repeated_string: ["one", "two"]; rmrrnri,rjrorp)r/r rIrr0r4)rr6r7r$rrr"testParseRepeatedScalarShortFormatps z1TextFormatTest.testParseRepeatedScalarShortFormatcCsl|j}d}tj|||jd|jdj|jd|jdj|jd|jdj|jd|jd jdS) Nzyrepeated_nested_message: [{bb: 100}, {bb: 200}], repeated_nested_message: {bb: 300} repeated_nested_message [{bb: 400}]; rmrrnri,rjirC)r/r rIrr>r@)rr6r7r$rrr#testParseRepeatedMessageShortFormat}s z2TextFormatTest.testParseRepeatedMessageShortFormatcCs,|j}d}tj|||j|j|dS)Nr")r/r rIr)rr6r7r$rrrtestParseEmptyTexts z!TextFormatTest.testParseEmptyTextc CsX|j}d}|jtj}tj||WdQRX|j|jjd|j|jjddS)Nzrepeated_string: "\xc3\xc3"r) r/ assertRaisesr ParseErrorrIr exceptionZGetLineZ GetColumn)rr6r7r$errrtestParseInvalidUtf8s z#TextFormatTest.testParseInvalidUtf8cCs(|j}d}tj|tjdtj||dS)Nfooz?1:1 : Message type "\w+.TestAllTypes" has no field named "foo".)r/r:assertRaisesRegexr rwrI)rr6r7r$rrrtestParseSingleWords  z"TextFormatTest.testParseSingleWordcCs(|j}d}tj|tjdtj||dS)Nzunknown_field: 8 zI1:1 : Message type "\w+.TestAllTypes" has no field named "unknown_field".)r/r:r|r rwrI)rr6r7r$rrrtestParseUnknownFields  z$TextFormatTest.testParseUnknownFieldcCs(|j}d}tj|tjdtj||dS)Nzoptional_nested_enum: BARRzG1:23 : Enum type "\w+.TestAllTypes.NestedEnum" has no value named BARR.)r/r:r|r rwrI)rr6r7r$rrrtestParseBadEnumValues  z$TextFormatTest.testParseBadEnumValuecCs(|j}d}tj|tjdtj||dS)Nzoptional_int32: borkz#1:17 : Couldn't parse integer: bork)r/r:r|r rwrI)rr6r7r$rrrtestParseBadIntValues  z#TextFormatTest.testParseBadIntValuecCs|j}d}tj||d}|jd|jd|j|d|d|jd|j|d|d |jd |j||d||d|jd |j||d||d |jd |j|d |jddS)Narepeated_string: "\xf\x62" repeated_string: "\\xf\\x62" repeated_string: "\\\xf\\\x62" repeated_string: "\\\\xf\\\\x62" repeated_string: "\\\\\xf\\\\\x62" repeated_string: "\x5cx20"\zbrZxfZx62rbrjrCZx20)r/r rIrr4)rr6r7r$SLASHrrrtestParseStringFieldUnescapes   z+TextFormatTest.testParseStringFieldUnescapecCs6|j}d}tj||}|j|||jd|jdS)Nz%optional_int32: 42 optional_int32: 67C)r/r rhrJroptional_int32)rr6r7r$rLrrrtestMergeDuplicateScalarss   z(TextFormatTest.testMergeDuplicateScalarscCs:|j}d}tj||}|j||k|jd|jjdS)NzCoptional_nested_message { bb: 1 } optional_nested_message { bb: 2 }rj)r/r rh assertTrueroptional_nested_messager@)rr6r7r$rLrrr&testMergeDuplicateNestedMessageScalarss  z5TextFormatTest.testMergeDuplicateNestedMessageScalarscCs>|j}d|_|j}tjtj|||jd|jddS)N oneof_uint32 oneof_field)r/rr rIr5r WhichOneof)rr6mm2rrrtestParseOneofs zTextFormatTest.testParseOneofcCs8djddg}|j}tj|||jd|jddS)N zoneof_uint32: 11zoneof_string: "foo"Z oneof_stringr)r#r/r rhrr)rr6m_stringrrrrtestMergeMultipleOneofs z%TextFormatTest.testMergeMultipleOneofc Cs@djddg}|j}|jtjdtj||WdQRXdS)Nrzoneof_uint32: 11zoneof_string: "foo"z is specified along with field )r#r/ZassertRaisesRegexpr rwrI)rr6rrrrrtestParseMultipleOneofs z%TextFormatTest.testParseMultipleOneofN)!rrrr8r;rBrDrFrGrMrNrRrUr`rarerirlrqrrrsrtrzr}r~rrrrrrrrrrrrr.es<   !   r.c@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS) OnlyWorksWithProto2RightNowTestscCs2tj}tj||j|jtj|ddddS)NT)pointy_bracketsz*text_format_unittest_data_pointy_oneof.txt)rr/r rbr%r-r r5)rr7rrrtestPrintAllFieldsPointys   z9OnlyWorksWithProto2RightNowTests.testPrintAllFieldsPointycCsRdj|jd}tj}tj||}|j||tj}tj||j ||dS)Nrz/text_format_unittest_data_oneof_implemented.txt) r#r!rr/r rIrJr rbr)rr&rKrLr7rrrtestParseGoldens   z0OnlyWorksWithProto2RightNowTests.testParseGoldencCs.tj}tj||j|jtj|ddS)Nz/text_format_unittest_data_oneof_implemented.txt)rr/r rbr%r-r r5)rr7rrrtestPrintAllFieldss  z3OnlyWorksWithProto2RightNowTests.testPrintAllFieldscCsbtj}d|_d|_d|_d|j_d|j_|j|j t j |ddd|j|j t j |d dS) NZ115eorrT)Zuse_index_orderzWmy_string: "115" my_int: 101 my_float: 111 optional_nested_message { oo: 0 bb: 1 } zWmy_int: 101 my_string: "115" my_float: 111 optional_nested_message { bb: 1 oo: 0 } ) rZTestFieldOrderingsZ my_stringZmy_intZmy_floatrZoor@r'r-r r5)rr7rrrtestPrintInIndexOrder s z6OnlyWorksWithProto2RightNowTests.testPrintInIndexOrdercCsL|jd}tj}tj||}|j||tj}tj||j||dS)Nz/text_format_unittest_data_oneof_implemented.txt) r!rr/r Z MergeLinesrJr rbr)ropenedrKrLr7rrrtestMergeLinesGoldens    z5OnlyWorksWithProto2RightNowTests.testMergeLinesGoldencCsL|jd}tj}tj||}|j||tj}tj||j||dS)Nz/text_format_unittest_data_oneof_implemented.txt) r!rr/r Z ParseLinesrJr rbr)rrrKrLr7rrrtestParseLinesGolden's    z5OnlyWorksWithProto2RightNowTests.testParseLinesGoldencCs\tj}d |jd <d|jd<d|jd<d|jd<d|jd<d|jd _|j t j |d dS)NirSrj"!123abcrraHmap_int32_int32 { key: -123 value: -456 } map_int64_int64 { key: -8589934592 value: -17179869184 } map_uint32_uint32 { key: 123 value: 456 } map_uint64_uint64 { key: 8589934592 value: 17179869184 } map_string_string { key: "abc" value: "123" } map_int32_foreign_message { key: 111 value { c: 5 } } i8illllll) rTestMapmap_int32_int32map_int64_int64map_uint32_uint32map_uint64_uint64map_string_stringmap_int32_foreign_messagerTr'r r5)rr7rrr testPrintMap1s      z-OnlyWorksWithProto2RightNowTests.testPrintMapcCs|tj}x tjddD]}d|j|<qWx$ttjddD]}d|j|<q>WdjddtjD}|jtj ||dS)N Zdummyrr"css|]}d|fVqdS)z3map_string_string { key: "%c" value: "dummy" } Nr)rletterrrr _szKOnlyWorksWithProto2RightNowTests.testMapOrderEnforcement..) rrstringZascii_uppercaserreversedr#r'r r5)rr7rgoldenrrrtestMapOrderEnforcementYs  z8OnlyWorksWithProto2RightNowTests.testMapOrderEnforcementN) rrrrrrrrrrrrrrrrs   (rc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+S), Proto2TestscCsvtj}tjj}tjj}d|jj|_d|jj|_|j t j |dt j }t j}d|j|_|j t j |ddS)Nr{zmessage_set { [protobuf_unittest.TestMessageSetExtension1] { i: 23 } [protobuf_unittest.TestMessageSetExtension2] { str: "foo" } } ZbarzF[google.protobuf.internal.TestMessageSetExtension3] { text: "bar" } )rTestMessageSetContainerTestMessageSetExtension1message_set_extensionTestMessageSetExtension2 message_set Extensionsirr'r r5r ZTestMessageSetZmessage_set_extension3r$)rr7ext1ext2ZextrrrtestPrintMessageSetvs  zProto2Tests.testPrintMessageSetcCsjtjd}tj}tjj}tjj}d|jj|_ d|jj|_ tj ||dd|j |j d|jdS)NFrr{T)Zuse_field_numberz?1 { 1545008 { 15: 23 } 1547769 { 25: "foo" } } )r rXrrrrrrrrrZ PrintMessager'rYrZ)rr^r7rrrrr testPrintMessageSetByFieldNumbers z,Proto2Tests.testPrintMessageSetByFieldNumbercCsNtj}tjj}tjj}d|jj|_d|jj|_|j t j |ddddS)Nrr{T)r=zmessage_set { [protobuf_unittest.TestMessageSetExtension1] { i: 23 } [protobuf_unittest.TestMessageSetExtension2] { str: "foo" } }) rrrrrrrrrr'r r5)rr7rrrrrtestPrintMessageSetAsOneLines z(Proto2Tests.testPrintMessageSetAsOneLinecCstj}d}tj|||jd|jd|jd|jdtj}d}tj||tjj }tj j }|jd|j j |j |jd|j j |jdS)Nz&repeated_uint64: 1 repeated_uint64: 2 rrrjzmessage_set { [protobuf_unittest.TestMessageSetExtension1] { i: 23 } [protobuf_unittest.TestMessageSetExtension2] { str: "foo" } } rr{)rr/r rIrr2rrrrrrrrr)rr7r$rrrrrtestParseMessageSets  zProto2Tests.testParseMessageSetcCs>tj}d}tj||tjd|jtj|tjd|dS)Nzvalue { [type.googleapis.com/google.protobuf.internal.TestAny] { [google.protobuf.internal.TestAnyExtension1.extension1] { i: 10 } } } )r )test_extend_anyTestAnyr rhr Defaultr'r5)rr7r$rrrtestExtensionInsideAnyMessages z)Proto2Tests.testExtensionInsideAnyMessagec Cstj}d}tj||dd|jd|jd|jd|jdtj}d}tj||ddtjj }tj j }|jd|j j |j |jd |j j |jtj}d }tj|tjd tj||d }tj|tjd tj||dddS)Nz34: 1 repeated_uint64: 2 T)Zallow_field_numberrrrjz?1 { 1545008 { 15: 23 } 1547769 { 25: "foo" } } rr{z34:1 z>1:1 : Message type "\w+.TestAllTypes" has no field named "34".z1234:1 z@1:1 : Message type "\w+.TestAllTypes" has no field named "1234".)rr/r rIrr2rrrrrrrrrr:r|rw)rr7r$rrrrrtestParseMessageByFieldNumbers4  z)Proto2Tests.testParseMessageByFieldNumbercCs.tj}tj||j|jtj|ddS)Nz(text_format_unittest_extensions_data.txt)rTestAllExtensionsr SetAllExtensionsr%r-r r5)rr7rrrtestPrintAllExtensionss  z"Proto2Tests.testPrintAllExtensionscCs2tj}tj||j|jtj|ddddS)NT)rz/text_format_unittest_extensions_data_pointy.txt)rrr rr%r-r r5)rr7rrrtestPrintAllExtensionsPointys   z(Proto2Tests.testPrintAllExtensionsPointycCsFdj|jd}tj}tj||tj}tj||j||dS)Nrz(text_format_unittest_extensions_data.txt) r#r!rrr rIr rr)rr&rKr7rrrtestParseGoldenExtensionss  z%Proto2Tests.testParseGoldenExtensionscCs@tj}tj|tj|}tj}tj|||j||dS)N)rrr rr r5rIr)rr7rdrKrrrtestParseAllExtensionss    z"Proto2Tests.testParseAllExtensionsc CsVtj}d}tj||ddd}|jtj||tj}d}tj|tjdtj||ddtj}d}tj|tjdtj||ddtj}d }tj|tjdtj||ddtj}d }tj|tjd tj||ddtj}d }tj|tjd tj||ddtj}d}tj||ddtj j }tj j }|j d|j j|j|j d|j j|jdS)Numessage_set { [unknown_extension] { i: 23 bin: "à" [nested_unknown_ext]: { i: 23 x: x test: "test_string" floaty_float: -0.315 num: -inf multiline_str: "abc" "def" "xyz." [nested_unknown_ext.ext]: < i: 23 i: 24 pointfloat: .3 test: "test_string" floaty_float: -0.315 num: -inf long_string: "test" "test2" > } } [unknown_extension]: 5 } T)Zallow_unknown_extensionzmessage_set { } z3message_set { [unknown_extension] { i: } } zInvalid field value: }zGmessage_set { [unknown_extension] { str: "malformed string } } zInvalid field value: "zSmessage_set { [unknown_extension] { str: "malformed multiline string } } z7message_set { [malformed_extension] < i: -5 } z5:1 : Expected ">".z)message_set { unknown_field: true } zb2:3 : Message type "proto2_wireformat_unittest.TestMessageSet" has no field named "unknown_field".zmessage_set { [protobuf_unittest.TestMessageSetExtension1] { i: 23 } [protobuf_unittest.TestMessageSetExtension2] { str: "foo" } } rr{)rrr rIr'r5r:r|rwrrrrrrrr)rr7r$rZ malformedrrrrr testParseAllowedUnknownExtension"srz,Proto2Tests.testParseAllowedUnknownExtensionc CsFtj}d}|jtj}tj||WdQRX|jt|jddS)Nz#optional_nested_message { "bb": 1 }z/1:27 : Expected identifier or number, got "bb".) rr/rvr rwrIrrrx)rr7r$ryrrrtestParseBadIdentifiers  z"Proto2Tests.testParseBadIdentifiercCsHtj}d}tj|tjdtj||tj}tj|tjdtj||dS)Nz[unknown_extension]: 8 z31:2 : Extension "unknown_extension" not registered.zM1:2 : Message type "protobuf_unittest.TestAllTypes" does not have extensions.)rrr:r|r rwrIr/)rr7r$rrrtestParseBadExtensions   z!Proto2Tests.testParseBadExtensioncCs(tj}d}tj|tjdtj||dS)Nzoptional_nested_enum: 100zL1:23 : Enum type "\w+.TestAllTypes.NestedEnum" has no value with number 100.)rr/r:r|r rwrI)rr7r$rrrtestParseNumericUnknownEnums  z'Proto2Tests.testParseNumericUnknownEnumcCs0tj}d}tj|||jd|jtjdS)Nza[protobuf_unittest.optional_int32_extension]: 42 [protobuf_unittest.optional_int32_extension]: 67r)rrr rhrrZoptional_int32_extension)rr7r$rrr"testMergeDuplicateExtensionScalarss  z.Proto2Tests.testMergeDuplicateExtensionScalarscCs(tj}d}tj|tjdtj||dS)Nza[protobuf_unittest.optional_int32_extension]: 42 [protobuf_unittest.optional_int32_extension]: 67z1:96 : Message type "protobuf_unittest.TestAllExtensions" should not have multiple "protobuf_unittest.optional_int32_extension" extensions.)rrr:r|r rwrI)rr7r$rrr"testParseDuplicateExtensionScalarss  z.Proto2Tests.testParseDuplicateExtensionScalarscCs(tj}d}tj|tjdtj||dS)NzCoptional_nested_message { bb: 1 } optional_nested_message { bb: 2 }zh1:65 : Message type "protobuf_unittest.TestAllTypes.NestedMessage" should not have multiple "bb" fields.)rr/r:r|r rwrI)rr7r$rrr&testParseDuplicateNestedMessageScalarss  z2Proto2Tests.testParseDuplicateNestedMessageScalarscCs(tj}d}tj|tjdtj||dS)Nz%optional_int32: 42 optional_int32: 67zf1:36 : Message type "protobuf_unittest.TestAllTypes" should not have multiple "optional_int32" fields.)rr/r:r|r rwrI)rr7r$rrrtestParseDuplicateScalarss  z%Proto2Tests.testParseDuplicateScalarscCsDtj}d}tj|tjdtj||d}tj|tjdtj||dS)NzRepeatedGroup: ".zRepeatedGroup: {z1:16 : Expected "}".)rr/r:r|r rwrI)rr7r$rrrtestParseGroupNotCloseds   z#Proto2Tests.testParseGroupNotClosedcCs\tj}d}tj|||j|jd|jtj}d}tj|||j|jddS)NzOptionalGroup: {}Z optionalgroupzOptionalGroup: <>)rr/r rIrZHasFieldrg)rr7r$rrrtestParseEmptyGroups  zProto2Tests.testParseEmptyGroupcCsd}tj}tj|||jd |jd |jd|jd|jd|jd|jd|jd|jd|j d|jd |j d j dS)NaHmap_int32_int32 { key: -123 value: -456 } map_int64_int64 { key: -8589934592 value: -17179869184 } map_uint32_uint32 { key: 123 value: 456 } map_uint64_uint64 { key: 8589934592 value: 17179869184 } map_string_string { key: "abc" value: "123" } map_int32_foreign_message { key: 111 value { c: 5 } } irSrjrrrrrri8illllll) rrr rIrrrrrrrrT)rr$r7rrr testParseMaps zProto2Tests.testParseMapN)rrrrrrrrrrrrrrrrrrrrrrrrrrrrrts*)  z    rc@s|eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdS) Proto3TestscCs@tj}d|_tj}|jj||jtj |t j dddS)Nr)r z[any_value { [type.googleapis.com/protobuf_unittest.OneString] { data: "string" } } ) r OneStringdatarr any_valuePackrr r5r r)rpacked_messager7rrrtestPrintMessageExpandAnys  z%Proto3Tests.testPrintMessageExpandAnycCsRtj}tj}d|_|jjj|d|_|jjj||jt j |ddS)Nstring0string1zrepeated_any_value { [type.googleapis.com/protobuf_unittest.OneString] { data: "string0" } } repeated_any_value { [type.googleapis.com/protobuf_unittest.OneString] { data: "string1" } } ) rrrrrrepeated_any_valuer?rrr r5)rrr7rrr!testPrintMessageExpandAnyRepeated(sz-Proto3Tests.testPrintMessageExpandAnyRepeatedcCsDtj}d|_tj}|jj|tj}|j t j ||dddS)Nr)r zdany_value { type_url: "type.googleapis.com/protobuf_unittest.OneString" value: "\n\006string" } ) rrrrrrrr DescriptorPoolrr r5)rrr7 empty_poolrrr2testPrintMessageExpandAnyDescriptorPoolMissingType<s  z>Proto3Tests.testPrintMessageExpandAnyDescriptorPoolMissingTypecCs<tj}d|_tj}|jj||jtj |ddddS)NrT)rz[any_value < [type.googleapis.com/protobuf_unittest.OneString] < data: "string" > > ) rrrrrrrrr r5)rrr7rrr'testPrintMessageExpandAnyPointyBracketsIs z3Proto3Tests.testPrintMessageExpandAnyPointyBracketscCs<tj}d|_tj}|jj||jtj |ddddS)NrT)r=zRany_value { [type.googleapis.com/protobuf_unittest.OneString] { data: "string" } }) rrrrrrrrr r5)rrr7rrr"testPrintMessageExpandAnyAsOneLineWs z.Proto3Tests.testPrintMessageExpandAnyAsOneLinecCsDtj}d|_tj}|jj||jtj |ddt j dddS)NrT)r=rr zRany_value < [type.googleapis.com/protobuf_unittest.OneString] < data: "string" > >) rrrrrrrrr r5r r)rrr7rrr0testPrintMessageExpandAnyAsOneLinePointyBracketsds  ztj}tj}d|_tj|}tj|||jd|jdS)Ni)rr/Zoptional_nested_enumr r5rIr)rr7Zmessage2Z text_stringrrrtestUnknownEnumsss   zProto3Tests.testUnknownEnumscCsttj}d}tj||tj}|jj||jd|j |j tj ||tj}|jj||jd|j dS)Nz[any_value { [type.googleapis.com/protobuf_unittest.OneString] { data: "string" } } r) rrr rhrrrUnpackrrrgrI)rr7r$rrrrtestMergeExpandedAny{s    z Proto3Tests.testMergeExpandedAnycCs`tj}d}tj||tj}|jdj||jd|j |jdj||jd|j dS)Nzrepeated_any_value { [type.googleapis.com/protobuf_unittest.OneString] { data: "string0" } } repeated_any_value { [type.googleapis.com/protobuf_unittest.OneString] { data: "string1" } } rrrr) rrr rhrrrrrr)rr7r$rrrrtestMergeExpandedAnyRepeateds z(Proto3Tests.testMergeExpandedAnyRepeatedcCs>tj}d}tj||tj}|jj||jd|j dS)Nz[any_value { [type.googleapis.com/protobuf_unittest.OneString] < data: "string" > } r) rrr rhrrrrrr)rr7r$rrrr"testMergeExpandedAnyPointyBracketss   z.Proto3Tests.testMergeExpandedAnyPointyBracketscCs4tj}d}tj||tj}|jd|jjdS)NzYany_value { [type.otherapi.com/protobuf_unittest.OneString] { data: "string" } } z-type.otherapi.com/protobuf_unittest.OneString) rrr rhrrrrZtype_url)rr7r$rrrrtestMergeAlternativeUrls  z#Proto3Tests.testMergeAlternativeUrlc CsRtj}d}|jtj}tj}tj|||dWdQRX|jt |j ddS)Nz[any_value { [type.googleapis.com/protobuf_unittest.OneString] { data: "string" } } )r z=Type protobuf_unittest.OneString not found in descriptor pool) rrrvr rwr rrhrrrx)rr7r$ryrrrr-testMergeExpandedAnyDescriptorPoolMissingTypesz9Proto3Tests.testMergeExpandedAnyDescriptorPoolMissingTypecCs>d}tj}tj||tj}|jj||jd|j dS)Nzdany_value { type_url: "type.googleapis.com/protobuf_unittest.OneString" value: "\n\006string" } r) rrr rhrrrrrr)rr$r7rrrrtestMergeUnexpandedAnys   z"Proto3Tests.testMergeUnexpandedAnyc CsFtj}d}|jtj}tj||WdQRX|jt|jddS)NzUany_value { [type.googleapis.com/protobuf_unittest.OneString] { data: "string" z3:11 : Expected "}".) rrrvr rwrhrrrx)rr7r$ryrrrtestMergeMissingAnyEndTokens z'Proto3Tests.testMergeMissingAnyEndTokenN)rrrrrrrrrrrrrrrrrrrrrrs     rc@steZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZdS) TokenizerTestcTCsd}tj|j}|jdfd|jdf|jdfd|jdf|jdfd|jdf|jd fd|jd f|jd fd|jd3f|jd fd|jdf|jdfd|jdf|jdfdd|jdfd|jtdf|jdfd|jtd f|jdfd|jdf|jdfd|jdfd|jdfd|jdf|jdfd|jd4f|jdfd|jd5f|jd fd|jd!f|jd"fd|jd#f|jd$fd|jd%f|jd&fd|jdf|jd'fd|jdf|jd(fd|jdf|jd)fd|jdf|jd*fd|jdf|jd+fd|jdf|jd,fd|jtdf|jd-fd|jtd.f|jd/fd|jtd0fgR}d1}x|j s||}t |t rN|j }|j |||jnNt |d2trtj|d2r|jtj|d1n|j |d2|d1|d27}qWdS)6Naidentifier1:"string1" identifier2 : 123 identifier3 :'string' identifiER_4 : 1.1e+2 ID5:-0.23 ID6:'aaaa\'bbbb' ID7 : "aa\"bb" ID8: {A:inf B:-inf C:true D:false} ID9: 22 ID10: -111111111111111111 ID11: -22 ID12: 2222222222222222222 ID13: 1.23456f ID14: 1.2e+2f false_bool: 0 true_BOOL:t true_bool1: 1 false_BOOL1:f False_bool: False True_bool: True X:iNf Y:-inF Z:nANZ identifier1:rZ identifier2rSZ identifier3rZ identifiER_4g[@ZID5gq= ףp?ZID6z aaaa'bbbbZID7zaa"bbZID8{AinfBCTDF}ZID9ZID10lq{U ZID11ZID12lc/Y-vZID13g82?ZID14g^@Z false_boolZ true_BOOLZ true_bool1Z false_BOOL1Z False_boolZ True_boolXYz-infZnanrrgq= ףpͿlq{U i)r Tokenizer splitlinesConsumeIdentifierZ ConsumeStringConsumeInteger ConsumeFloatfloat ConsumeBoolAtEnd isinstancertokenr NextTokenmathZisnanr)rr$ tokenizermethodsrrrrrrtestSimpleTokenCasess                                    z"TokenizerTest.testSimpleTokenCasesc Csd }d }d|d|df}tj|j}|jd|j|j|d|j|j|d|j|j|jd}tj|j}|jd|j|jd|j|jd|j|jd|j|jtj |jWdQRX|jd |j |j|jdS)Nr? z-1 %d %dz -0 0 0 1.2rTFg333333?llll) r rrrrrr ZTryConsumeIntegerrvrwr )r int64_max uint32_maxr$rrrrtestConsumeAbstractIntegers)s$z)TokenizerTest.testConsumeAbstractIntegerscCs<d}d }d|d|df}tj|j}|jtjtj||jtjtj||jd tj||jtjtj||jtjtj||j|dtj ||jtjtj ||j|dtj||j |j d}tj|j}|jdtj||jdtj||jdtj||jdtj||j |j dS) Nrrrz-1 %d %dz -0 -0 0 0rllllr) r rrrvrwZ_ConsumeUint32Z_ConsumeUint64rZ _ConsumeInt32Z _ConsumeInt64rr )rrrr$rrrrtestConsumeIntegersBs2     z!TokenizerTest.testConsumeIntegerscCsd}tj|j}|jtj|jd}tj|j}|jtj|jd}tj|j}|jtj|jd}tj|j}|jtj|jd}tj|j}|jtj|jdS)Nz "string1'zstring1"z "\xt"z "\"z "\x")r rrrvrwZConsumeByteString)rr$rrrrtestConsumeByteStringbsz#TokenizerTest.testConsumeByteStringcCs&d}tj|j}|jtj|jdS)Nz not-a-bool)r rrrvrwr )rr$rrrrtestConsumeBoolwszTokenizerTest.testConsumeBoolcCs0tjdj}|j|j|jtj|jdS)Nz# some comment)r rrrr rvrwConsumeComment)rrrrrtestSkipComment|szTokenizerTest.testSkipCommentcCsBtjdjdd}|j|j|jd|j|j|jdS)Nz# some commentF) skip_comments)r rr assertFalser rrr)rrrrrtestConsumeComments  z TokenizerTest.testConsumeCommentcCsVd}tj|jdd}|jd|j|j|j|jd|j|j|jdS)Nz # some comment # another commentF)rz# some commentz# another comment)r rrrrr r r)rr$rrrrtestConsumeTwoCommentss z$TokenizerTest.testConsumeTwoCommentscCsd}tj|jdd}|jtj|j|jd|j|j|jd|j |jtj|j|jd|j |j |j |jd|j|j |j dS)Nzsome_number: 4 # some commentF)r some_numberrrz# some comment)r rrrvrwrrrrrrr r r)rr$rrrrtestConsumeTrailingCommentsz(TokenizerTest.testConsumeTrailingCommentcCsBtjdjdd}|j|j|jd|j|j|jdS)N# some commentF)r)Fr%)r rrr r rConsumeCommentOrTrailingCommentr)rrrrrtestConsumeLineComments   z$TokenizerTest.testConsumeLineCommentcCsVd}tj|jdd}|jd|j|j|j|jd|j|j|jdS)Nz # some comment # another commentF)r# some comment# another comment)Fr()Fr))r rrrr&r r r)rr$rrrrtestConsumeTwoLineCommentss  z(TokenizerTest.testConsumeTwoLineCommentscCsd}tj|jdd}|jtj|j|jd|j|j|jd|j |jtj|j|jd|j |j |j |jd |j|j |j dS) Nzsome_number: 4 # some commentF)rr#rrT# some comment)Tr+)r rrrvrwr&rrrrrr r r)rr$rrrr"testConsumeAndCheckTrailingComments z0TokenizerTest.testConsumeAndCheckTrailingCommentcCsnd}tj|jdd}|jd|j|j|jd|j|jd|j|jd |j|j |j dS) Nz2some_number: 4 # some comment # not a new commentF)rr#rrT"# some comment # not a new comment)Tr-) r rrrrrrrr&rr )rr$rrrrtestHashinComments zTokenizerTest.testHashinCommentN)rrrrrrrrrr!r"r$r'r*r,r.rrrrrsM  rc@s4eZdZddZddZddZddZd d Zd S) PrettyPrinterTestcCs<dd}|j}|jj}d|_|jtj|d|dddS)NcSs ~~~dS)Nr)r7indentr=rrrr_sz9PrettyPrinterTest.testPrettyPrintNoMatch..printerr<T)r=message_formatterz"repeated_nested_message { bb: 42 })r/r>r?r@r'r r5)rr6r_r7rArrrtestPrettyPrintNoMatchs  z(PrettyPrinterTest.testPrettyPrintNoMatchcs@fdd}j}|jj}d|_|jtj|d|dddS)Ncs"~~|jjjjkrd|jSdS)NzMy lucky number is %s)rVr/ NestedMessager@)rr0r=)r6rrr_sz9PrettyPrinterTest.testPrettyPrintOneLine..printerr<T)r=r1z1repeated_nested_message { My lucky number is 42 })r/r>r?r@r'r r5)rr6r_r7rAr)r6rtestPrettyPrintOneLines   z(PrettyPrinterTest.testPrettyPrintOneLinecsXfdd}j}|jj}d|_|jtj|d|dd|jtj|d|dddS) Ncs6|jjjjkr2|rdndd|}d||jfSdS)N rzMy lucky number is:%s%s)rVr/r3r@)rr0r=Zline_deliminator)r6rrr_sz;PrettyPrinterTest.testPrettyPrintMultiLine..printerr<T)r=r1z2repeated_nested_message { My lucky number is: 42 }Fz7repeated_nested_message { My lucky number is: 42 } )r/r>r?r@r'r r5)rr6r_r7rAr)r6rtestPrettyPrintMultiLines    z*PrettyPrinterTest.testPrettyPrintMultiLinecsHfdd}j}|jtj|d|dd|jtj|d|dddS)Ncs~~|jjjkrdSdS)NzThe is the message!)rVr/)rr0r=)r6rrr_sz?PrettyPrinterTest.testPrettyPrintEntireMessage..printerF)r=r1zThe is the message! TzThe is the message!)r/r'r r5)rr6r_r7r)r6rtestPrettyPrintEntireMessages   z.PrettyPrinterTest.testPrettyPrintEntireMessagecsbfdd}j}d|_|jj}d|_|jj}d|_|j}d|_|jtj|d|dd dS) Ncs"~~|jjjjkrd|jSdS)NzMy lucky number is %s)rVr/r3r@)rr0r=)r6rrr_s z?PrettyPrinterTest.testPrettyPrintMultipleParts..printer=r<crT)r=r1zoptional_int32: 61 optional_nested_message { My lucky number is 1 } repeated_nested_message { My lucky number is 42 } repeated_nested_message { My lucky number is 99 }) r/rr>r?r@rr'r r5)rr6r_r7rAr)r6rtestPrettyPrintMultiplePartss    z.PrettyPrinterTest.testPrettyPrintMultiplePartsN)rrrr2r4r6r7r:rrrrr/s r/__main__)#__doc__ __author__rr)r:rZ unittest2Zunittest ImportErrorZgoogle.protobuf.internalrZgoogle.protobufrrrrrrrr r r r ZTestCaser rZ Parametersr.rrrrr/rmainrrrr!sT               'Cw]