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 /&#42; bar *&#47; baz", EscapeJavadoc("foo /* bar */ baz"));
45ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_EQ("foo /&#42;&#47; baz", EscapeJavadoc("foo /*/ baz"));
46ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_EQ("{&#64;foo}", EscapeJavadoc("{@foo}"));
47ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_EQ("&lt;i&gt;&amp;&lt;/i&gt;", EscapeJavadoc("<i>&</i>"));
48ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_EQ("foo&#92;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