1ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// Protocol Buffers - Google's data interchange format 2ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// Copyright 2008 Google Inc. All rights reserved. 3ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// http://code.google.com/p/protobuf/ 4ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// 5ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// Redistribution and use in source and binary forms, with or without 6ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// modification, are permitted provided that the following conditions are 7ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// met: 8ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// 9ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// * Redistributions of source code must retain the above copyright 10ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// notice, this list of conditions and the following disclaimer. 11ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// * Redistributions in binary form must reproduce the above 12ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// copyright notice, this list of conditions and the following disclaimer 13ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// in the documentation and/or other materials provided with the 14ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// distribution. 15ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// * Neither the name of Google Inc. nor the names of its 16ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// contributors may be used to endorse or promote products derived from 17ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// this software without specific prior written permission. 18ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// 19ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 31ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// Author: kenton@google.com (Kenton Varda) 32ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 33ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include <google/protobuf/compiler/java/java_doc_comment.h> 34ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 35ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include <gtest/gtest.h> 36ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 37ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochnamespace google { 38ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochnamespace protobuf { 39ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochnamespace compiler { 40ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochnamespace java { 41ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochnamespace { 42ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 43ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochTEST(JavaDocCommentTest, Escaping) { 44ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ("foo /* bar */ baz", EscapeJavadoc("foo /* bar */ baz")); 45ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ("foo /*/ baz", EscapeJavadoc("foo /*/ baz")); 46ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ("{@foo}", EscapeJavadoc("{@foo}")); 47ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ("<i>&</i>", EscapeJavadoc("<i>&</i>")); 48ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ("foo\u1234bar", EscapeJavadoc("foo\\u1234bar")); 49ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 50ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 51ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// TODO(kenton): It's hard to write a robust test of the doc comments -- we 52ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// can only really compare the output against a golden value, which is a 53ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// fairly tedious and fragile testing strategy. If we want to go that route, 54ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// it probably makes sense to bite the bullet and write a test that compares 55ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// the whole generated output for unittest.proto against a golden value, with 56ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// a very simple script that can be run to regenerate it with the latest code. 57ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// This would mean that updates to the golden file would have to be included 58ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// in any change to the code generator, which would actually be fairly useful 59ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// as it allows the reviewer to see clearly how the generated code is 60ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// changing. 61ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 62ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} // namespace 63ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} // namespace java 64ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} // namespace compiler 65ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} // namespace protobuf 66ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} // namespace google 67