cppjieba_rb 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +3 -0
  3. data/README.md +1 -1
  4. data/Rakefile +2 -2
  5. data/cppjieba_rb.gemspec +4 -4
  6. data/lib/cppjieba_rb/version.rb +1 -1
  7. metadata +17 -135
  8. data/ext/cppjieba/.gitignore +0 -17
  9. data/ext/cppjieba/.travis.yml +0 -21
  10. data/ext/cppjieba/CMakeLists.txt +0 -28
  11. data/ext/cppjieba/ChangeLog.md +0 -236
  12. data/ext/cppjieba/README.md +0 -292
  13. data/ext/cppjieba/README_EN.md +0 -113
  14. data/ext/cppjieba/appveyor.yml +0 -32
  15. data/ext/cppjieba/deps/CMakeLists.txt +0 -1
  16. data/ext/cppjieba/deps/gtest/CMakeLists.txt +0 -5
  17. data/ext/cppjieba/deps/gtest/include/gtest/gtest-death-test.h +0 -283
  18. data/ext/cppjieba/deps/gtest/include/gtest/gtest-message.h +0 -230
  19. data/ext/cppjieba/deps/gtest/include/gtest/gtest-param-test.h +0 -1421
  20. data/ext/cppjieba/deps/gtest/include/gtest/gtest-param-test.h.pump +0 -487
  21. data/ext/cppjieba/deps/gtest/include/gtest/gtest-printers.h +0 -796
  22. data/ext/cppjieba/deps/gtest/include/gtest/gtest-spi.h +0 -232
  23. data/ext/cppjieba/deps/gtest/include/gtest/gtest-test-part.h +0 -176
  24. data/ext/cppjieba/deps/gtest/include/gtest/gtest-typed-test.h +0 -259
  25. data/ext/cppjieba/deps/gtest/include/gtest/gtest.h +0 -2155
  26. data/ext/cppjieba/deps/gtest/include/gtest/gtest_pred_impl.h +0 -358
  27. data/ext/cppjieba/deps/gtest/include/gtest/gtest_prod.h +0 -58
  28. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-death-test-internal.h +0 -308
  29. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-filepath.h +0 -210
  30. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-internal.h +0 -1226
  31. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-linked_ptr.h +0 -233
  32. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-param-util-generated.h +0 -4822
  33. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-param-util-generated.h.pump +0 -301
  34. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-param-util.h +0 -619
  35. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-port.h +0 -1788
  36. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-string.h +0 -350
  37. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-tuple.h +0 -968
  38. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-tuple.h.pump +0 -336
  39. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-type-util.h +0 -3330
  40. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-type-util.h.pump +0 -296
  41. data/ext/cppjieba/deps/gtest/src/.deps/.dirstamp +0 -0
  42. data/ext/cppjieba/deps/gtest/src/.deps/gtest-all.Plo +0 -681
  43. data/ext/cppjieba/deps/gtest/src/.deps/gtest_main.Plo +0 -509
  44. data/ext/cppjieba/deps/gtest/src/.dirstamp +0 -0
  45. data/ext/cppjieba/deps/gtest/src/gtest-all.cc +0 -48
  46. data/ext/cppjieba/deps/gtest/src/gtest-death-test.cc +0 -1234
  47. data/ext/cppjieba/deps/gtest/src/gtest-filepath.cc +0 -380
  48. data/ext/cppjieba/deps/gtest/src/gtest-internal-inl.h +0 -1038
  49. data/ext/cppjieba/deps/gtest/src/gtest-port.cc +0 -746
  50. data/ext/cppjieba/deps/gtest/src/gtest-printers.cc +0 -356
  51. data/ext/cppjieba/deps/gtest/src/gtest-test-part.cc +0 -110
  52. data/ext/cppjieba/deps/gtest/src/gtest-typed-test.cc +0 -110
  53. data/ext/cppjieba/deps/gtest/src/gtest.cc +0 -4898
  54. data/ext/cppjieba/deps/gtest/src/gtest_main.cc +0 -39
  55. data/ext/cppjieba/deps/limonp/ArgvContext.hpp +0 -70
  56. data/ext/cppjieba/deps/limonp/BlockingQueue.hpp +0 -49
  57. data/ext/cppjieba/deps/limonp/BoundedBlockingQueue.hpp +0 -67
  58. data/ext/cppjieba/deps/limonp/BoundedQueue.hpp +0 -65
  59. data/ext/cppjieba/deps/limonp/Closure.hpp +0 -206
  60. data/ext/cppjieba/deps/limonp/Colors.hpp +0 -31
  61. data/ext/cppjieba/deps/limonp/Condition.hpp +0 -38
  62. data/ext/cppjieba/deps/limonp/Config.hpp +0 -103
  63. data/ext/cppjieba/deps/limonp/FileLock.hpp +0 -74
  64. data/ext/cppjieba/deps/limonp/ForcePublic.hpp +0 -7
  65. data/ext/cppjieba/deps/limonp/LocalVector.hpp +0 -139
  66. data/ext/cppjieba/deps/limonp/Logging.hpp +0 -76
  67. data/ext/cppjieba/deps/limonp/Md5.hpp +0 -411
  68. data/ext/cppjieba/deps/limonp/MutexLock.hpp +0 -51
  69. data/ext/cppjieba/deps/limonp/NonCopyable.hpp +0 -21
  70. data/ext/cppjieba/deps/limonp/StdExtension.hpp +0 -159
  71. data/ext/cppjieba/deps/limonp/StringUtil.hpp +0 -365
  72. data/ext/cppjieba/deps/limonp/Thread.hpp +0 -44
  73. data/ext/cppjieba/deps/limonp/ThreadPool.hpp +0 -86
  74. data/ext/cppjieba/dict/README.md +0 -31
  75. data/ext/cppjieba/dict/hmm_model.utf8 +0 -34
  76. data/ext/cppjieba/dict/idf.utf8 +0 -258826
  77. data/ext/cppjieba/dict/jieba.dict.utf8 +0 -348982
  78. data/ext/cppjieba/dict/pos_dict/char_state_tab.utf8 +0 -6653
  79. data/ext/cppjieba/dict/pos_dict/prob_emit.utf8 +0 -166
  80. data/ext/cppjieba/dict/pos_dict/prob_start.utf8 +0 -259
  81. data/ext/cppjieba/dict/pos_dict/prob_trans.utf8 +0 -5222
  82. data/ext/cppjieba/dict/stop_words.utf8 +0 -1534
  83. data/ext/cppjieba/dict/user.dict.utf8 +0 -4
  84. data/ext/cppjieba/include/cppjieba/DictTrie.hpp +0 -277
  85. data/ext/cppjieba/include/cppjieba/FullSegment.hpp +0 -93
  86. data/ext/cppjieba/include/cppjieba/HMMModel.hpp +0 -129
  87. data/ext/cppjieba/include/cppjieba/HMMSegment.hpp +0 -190
  88. data/ext/cppjieba/include/cppjieba/Jieba.hpp +0 -130
  89. data/ext/cppjieba/include/cppjieba/KeywordExtractor.hpp +0 -153
  90. data/ext/cppjieba/include/cppjieba/MPSegment.hpp +0 -137
  91. data/ext/cppjieba/include/cppjieba/MixSegment.hpp +0 -109
  92. data/ext/cppjieba/include/cppjieba/PosTagger.hpp +0 -77
  93. data/ext/cppjieba/include/cppjieba/PreFilter.hpp +0 -54
  94. data/ext/cppjieba/include/cppjieba/QuerySegment.hpp +0 -90
  95. data/ext/cppjieba/include/cppjieba/SegmentBase.hpp +0 -46
  96. data/ext/cppjieba/include/cppjieba/SegmentTagged.hpp +0 -23
  97. data/ext/cppjieba/include/cppjieba/TextRankExtractor.hpp +0 -190
  98. data/ext/cppjieba/include/cppjieba/Trie.hpp +0 -174
  99. data/ext/cppjieba/include/cppjieba/Unicode.hpp +0 -227
  100. data/ext/cppjieba/test/CMakeLists.txt +0 -5
  101. data/ext/cppjieba/test/demo.cpp +0 -80
  102. data/ext/cppjieba/test/load_test.cpp +0 -54
  103. data/ext/cppjieba/test/testdata/curl.res +0 -1
  104. data/ext/cppjieba/test/testdata/extra_dict/jieba.dict.small.utf8 +0 -109750
  105. data/ext/cppjieba/test/testdata/gbk_dict/hmm_model.gbk +0 -34
  106. data/ext/cppjieba/test/testdata/gbk_dict/jieba.dict.gbk +0 -348982
  107. data/ext/cppjieba/test/testdata/jieba.dict.0.1.utf8 +0 -93
  108. data/ext/cppjieba/test/testdata/jieba.dict.0.utf8 +0 -93
  109. data/ext/cppjieba/test/testdata/jieba.dict.1.utf8 +0 -67
  110. data/ext/cppjieba/test/testdata/jieba.dict.2.utf8 +0 -64
  111. data/ext/cppjieba/test/testdata/load_test.urls +0 -2
  112. data/ext/cppjieba/test/testdata/review.100 +0 -100
  113. data/ext/cppjieba/test/testdata/review.100.res +0 -200
  114. data/ext/cppjieba/test/testdata/server.conf +0 -19
  115. data/ext/cppjieba/test/testdata/testlines.gbk +0 -9
  116. data/ext/cppjieba/test/testdata/testlines.utf8 +0 -8
  117. data/ext/cppjieba/test/testdata/userdict.2.utf8 +0 -1
  118. data/ext/cppjieba/test/testdata/userdict.english +0 -2
  119. data/ext/cppjieba/test/testdata/userdict.utf8 +0 -8
  120. data/ext/cppjieba/test/testdata/weicheng.utf8 +0 -247
  121. data/ext/cppjieba/test/unittest/CMakeLists.txt +0 -24
  122. data/ext/cppjieba/test/unittest/gtest_main.cpp +0 -39
  123. data/ext/cppjieba/test/unittest/jieba_test.cpp +0 -133
  124. data/ext/cppjieba/test/unittest/keyword_extractor_test.cpp +0 -79
  125. data/ext/cppjieba/test/unittest/pos_tagger_test.cpp +0 -41
  126. data/ext/cppjieba/test/unittest/pre_filter_test.cpp +0 -43
  127. data/ext/cppjieba/test/unittest/segments_test.cpp +0 -256
  128. data/ext/cppjieba/test/unittest/textrank_test.cpp +0 -86
  129. data/ext/cppjieba/test/unittest/trie_test.cpp +0 -177
  130. data/ext/cppjieba/test/unittest/unicode_test.cpp +0 -43
@@ -1,283 +0,0 @@
1
- // Copyright 2005, Google Inc.
2
- // All rights reserved.
3
- //
4
- // Redistribution and use in source and binary forms, with or without
5
- // modification, are permitted provided that the following conditions are
6
- // met:
7
- //
8
- // * Redistributions of source code must retain the above copyright
9
- // notice, this list of conditions and the following disclaimer.
10
- // * Redistributions in binary form must reproduce the above
11
- // copyright notice, this list of conditions and the following disclaimer
12
- // in the documentation and/or other materials provided with the
13
- // distribution.
14
- // * Neither the name of Google Inc. nor the names of its
15
- // contributors may be used to endorse or promote products derived from
16
- // this software without specific prior written permission.
17
- //
18
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
- //
30
- // Author: wan@google.com (Zhanyong Wan)
31
- //
32
- // The Google C++ Testing Framework (Google Test)
33
- //
34
- // This header file defines the public API for death tests. It is
35
- // #included by gtest.h so a user doesn't need to include this
36
- // directly.
37
-
38
- #ifndef GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
39
- #define GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
40
-
41
- #include "gtest/internal/gtest-death-test-internal.h"
42
-
43
- namespace testing {
44
-
45
- // This flag controls the style of death tests. Valid values are "threadsafe",
46
- // meaning that the death test child process will re-execute the test binary
47
- // from the start, running only a single death test, or "fast",
48
- // meaning that the child process will execute the test logic immediately
49
- // after forking.
50
- GTEST_DECLARE_string_(death_test_style);
51
-
52
- #if GTEST_HAS_DEATH_TEST
53
-
54
- // The following macros are useful for writing death tests.
55
-
56
- // Here's what happens when an ASSERT_DEATH* or EXPECT_DEATH* is
57
- // executed:
58
- //
59
- // 1. It generates a warning if there is more than one active
60
- // thread. This is because it's safe to fork() or clone() only
61
- // when there is a single thread.
62
- //
63
- // 2. The parent process clone()s a sub-process and runs the death
64
- // test in it; the sub-process exits with code 0 at the end of the
65
- // death test, if it hasn't exited already.
66
- //
67
- // 3. The parent process waits for the sub-process to terminate.
68
- //
69
- // 4. The parent process checks the exit code and error message of
70
- // the sub-process.
71
- //
72
- // Examples:
73
- //
74
- // ASSERT_DEATH(server.SendMessage(56, "Hello"), "Invalid port number");
75
- // for (int i = 0; i < 5; i++) {
76
- // EXPECT_DEATH(server.ProcessRequest(i),
77
- // "Invalid request .* in ProcessRequest()")
78
- // << "Failed to die on request " << i);
79
- // }
80
- //
81
- // ASSERT_EXIT(server.ExitNow(), ::testing::ExitedWithCode(0), "Exiting");
82
- //
83
- // bool KilledBySIGHUP(int exit_code) {
84
- // return WIFSIGNALED(exit_code) && WTERMSIG(exit_code) == SIGHUP;
85
- // }
86
- //
87
- // ASSERT_EXIT(client.HangUpServer(), KilledBySIGHUP, "Hanging up!");
88
- //
89
- // On the regular expressions used in death tests:
90
- //
91
- // On POSIX-compliant systems (*nix), we use the <regex.h> library,
92
- // which uses the POSIX extended regex syntax.
93
- //
94
- // On other platforms (e.g. Windows), we only support a simple regex
95
- // syntax implemented as part of Google Test. This limited
96
- // implementation should be enough most of the time when writing
97
- // death tests; though it lacks many features you can find in PCRE
98
- // or POSIX extended regex syntax. For example, we don't support
99
- // union ("x|y"), grouping ("(xy)"), brackets ("[xy]"), and
100
- // repetition count ("x{5,7}"), among others.
101
- //
102
- // Below is the syntax that we do support. We chose it to be a
103
- // subset of both PCRE and POSIX extended regex, so it's easy to
104
- // learn wherever you come from. In the following: 'A' denotes a
105
- // literal character, period (.), or a single \\ escape sequence;
106
- // 'x' and 'y' denote regular expressions; 'm' and 'n' are for
107
- // natural numbers.
108
- //
109
- // c matches any literal character c
110
- // \\d matches any decimal digit
111
- // \\D matches any character that's not a decimal digit
112
- // \\f matches \f
113
- // \\n matches \n
114
- // \\r matches \r
115
- // \\s matches any ASCII whitespace, including \n
116
- // \\S matches any character that's not a whitespace
117
- // \\t matches \t
118
- // \\v matches \v
119
- // \\w matches any letter, _, or decimal digit
120
- // \\W matches any character that \\w doesn't match
121
- // \\c matches any literal character c, which must be a punctuation
122
- // . matches any single character except \n
123
- // A? matches 0 or 1 occurrences of A
124
- // A* matches 0 or many occurrences of A
125
- // A+ matches 1 or many occurrences of A
126
- // ^ matches the beginning of a string (not that of each line)
127
- // $ matches the end of a string (not that of each line)
128
- // xy matches x followed by y
129
- //
130
- // If you accidentally use PCRE or POSIX extended regex features
131
- // not implemented by us, you will get a run-time failure. In that
132
- // case, please try to rewrite your regular expression within the
133
- // above syntax.
134
- //
135
- // This implementation is *not* meant to be as highly tuned or robust
136
- // as a compiled regex library, but should perform well enough for a
137
- // death test, which already incurs significant overhead by launching
138
- // a child process.
139
- //
140
- // Known caveats:
141
- //
142
- // A "threadsafe" style death test obtains the path to the test
143
- // program from argv[0] and re-executes it in the sub-process. For
144
- // simplicity, the current implementation doesn't search the PATH
145
- // when launching the sub-process. This means that the user must
146
- // invoke the test program via a path that contains at least one
147
- // path separator (e.g. path/to/foo_test and
148
- // /absolute/path/to/bar_test are fine, but foo_test is not). This
149
- // is rarely a problem as people usually don't put the test binary
150
- // directory in PATH.
151
- //
152
- // TODO(wan@google.com): make thread-safe death tests search the PATH.
153
-
154
- // Asserts that a given statement causes the program to exit, with an
155
- // integer exit status that satisfies predicate, and emitting error output
156
- // that matches regex.
157
- # define ASSERT_EXIT(statement, predicate, regex) \
158
- GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_)
159
-
160
- // Like ASSERT_EXIT, but continues on to successive tests in the
161
- // test case, if any:
162
- # define EXPECT_EXIT(statement, predicate, regex) \
163
- GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_)
164
-
165
- // Asserts that a given statement causes the program to exit, either by
166
- // explicitly exiting with a nonzero exit code or being killed by a
167
- // signal, and emitting error output that matches regex.
168
- # define ASSERT_DEATH(statement, regex) \
169
- ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
170
-
171
- // Like ASSERT_DEATH, but continues on to successive tests in the
172
- // test case, if any:
173
- # define EXPECT_DEATH(statement, regex) \
174
- EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
175
-
176
- // Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*:
177
-
178
- // Tests that an exit code describes a normal exit with a given exit code.
179
- class GTEST_API_ ExitedWithCode {
180
- public:
181
- explicit ExitedWithCode(int exit_code);
182
- bool operator()(int exit_status) const;
183
- private:
184
- // No implementation - assignment is unsupported.
185
- void operator=(const ExitedWithCode& other);
186
-
187
- const int exit_code_;
188
- };
189
-
190
- # if !GTEST_OS_WINDOWS
191
- // Tests that an exit code describes an exit due to termination by a
192
- // given signal.
193
- class GTEST_API_ KilledBySignal {
194
- public:
195
- explicit KilledBySignal(int signum);
196
- bool operator()(int exit_status) const;
197
- private:
198
- const int signum_;
199
- };
200
- # endif // !GTEST_OS_WINDOWS
201
-
202
- // EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode.
203
- // The death testing framework causes this to have interesting semantics,
204
- // since the sideeffects of the call are only visible in opt mode, and not
205
- // in debug mode.
206
- //
207
- // In practice, this can be used to test functions that utilize the
208
- // LOG(DFATAL) macro using the following style:
209
- //
210
- // int DieInDebugOr12(int* sideeffect) {
211
- // if (sideeffect) {
212
- // *sideeffect = 12;
213
- // }
214
- // LOG(DFATAL) << "death";
215
- // return 12;
216
- // }
217
- //
218
- // TEST(TestCase, TestDieOr12WorksInDgbAndOpt) {
219
- // int sideeffect = 0;
220
- // // Only asserts in dbg.
221
- // EXPECT_DEBUG_DEATH(DieInDebugOr12(&sideeffect), "death");
222
- //
223
- // #ifdef NDEBUG
224
- // // opt-mode has sideeffect visible.
225
- // EXPECT_EQ(12, sideeffect);
226
- // #else
227
- // // dbg-mode no visible sideeffect.
228
- // EXPECT_EQ(0, sideeffect);
229
- // #endif
230
- // }
231
- //
232
- // This will assert that DieInDebugReturn12InOpt() crashes in debug
233
- // mode, usually due to a DCHECK or LOG(DFATAL), but returns the
234
- // appropriate fallback value (12 in this case) in opt mode. If you
235
- // need to test that a function has appropriate side-effects in opt
236
- // mode, include assertions against the side-effects. A general
237
- // pattern for this is:
238
- //
239
- // EXPECT_DEBUG_DEATH({
240
- // // Side-effects here will have an effect after this statement in
241
- // // opt mode, but none in debug mode.
242
- // EXPECT_EQ(12, DieInDebugOr12(&sideeffect));
243
- // }, "death");
244
- //
245
- # ifdef NDEBUG
246
-
247
- # define EXPECT_DEBUG_DEATH(statement, regex) \
248
- do { statement; } while (::testing::internal::AlwaysFalse())
249
-
250
- # define ASSERT_DEBUG_DEATH(statement, regex) \
251
- do { statement; } while (::testing::internal::AlwaysFalse())
252
-
253
- # else
254
-
255
- # define EXPECT_DEBUG_DEATH(statement, regex) \
256
- EXPECT_DEATH(statement, regex)
257
-
258
- # define ASSERT_DEBUG_DEATH(statement, regex) \
259
- ASSERT_DEATH(statement, regex)
260
-
261
- # endif // NDEBUG for EXPECT_DEBUG_DEATH
262
- #endif // GTEST_HAS_DEATH_TEST
263
-
264
- // EXPECT_DEATH_IF_SUPPORTED(statement, regex) and
265
- // ASSERT_DEATH_IF_SUPPORTED(statement, regex) expand to real death tests if
266
- // death tests are supported; otherwise they just issue a warning. This is
267
- // useful when you are combining death test assertions with normal test
268
- // assertions in one test.
269
- #if GTEST_HAS_DEATH_TEST
270
- # define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
271
- EXPECT_DEATH(statement, regex)
272
- # define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
273
- ASSERT_DEATH(statement, regex)
274
- #else
275
- # define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
276
- GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, )
277
- # define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
278
- GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, return)
279
- #endif
280
-
281
- } // namespace testing
282
-
283
- #endif // GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
@@ -1,230 +0,0 @@
1
- // Copyright 2005, Google Inc.
2
- // All rights reserved.
3
- //
4
- // Redistribution and use in source and binary forms, with or without
5
- // modification, are permitted provided that the following conditions are
6
- // met:
7
- //
8
- // * Redistributions of source code must retain the above copyright
9
- // notice, this list of conditions and the following disclaimer.
10
- // * Redistributions in binary form must reproduce the above
11
- // copyright notice, this list of conditions and the following disclaimer
12
- // in the documentation and/or other materials provided with the
13
- // distribution.
14
- // * Neither the name of Google Inc. nor the names of its
15
- // contributors may be used to endorse or promote products derived from
16
- // this software without specific prior written permission.
17
- //
18
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
- //
30
- // Author: wan@google.com (Zhanyong Wan)
31
- //
32
- // The Google C++ Testing Framework (Google Test)
33
- //
34
- // This header file defines the Message class.
35
- //
36
- // IMPORTANT NOTE: Due to limitation of the C++ language, we have to
37
- // leave some internal implementation details in this header file.
38
- // They are clearly marked by comments like this:
39
- //
40
- // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
41
- //
42
- // Such code is NOT meant to be used by a user directly, and is subject
43
- // to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user
44
- // program!
45
-
46
- #ifndef GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
47
- #define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
48
-
49
- #include <limits>
50
-
51
- #include "gtest/internal/gtest-string.h"
52
- #include "gtest/internal/gtest-internal.h"
53
-
54
- namespace testing {
55
-
56
- // The Message class works like an ostream repeater.
57
- //
58
- // Typical usage:
59
- //
60
- // 1. You stream a bunch of values to a Message object.
61
- // It will remember the text in a stringstream.
62
- // 2. Then you stream the Message object to an ostream.
63
- // This causes the text in the Message to be streamed
64
- // to the ostream.
65
- //
66
- // For example;
67
- //
68
- // testing::Message foo;
69
- // foo << 1 << " != " << 2;
70
- // std::cout << foo;
71
- //
72
- // will print "1 != 2".
73
- //
74
- // Message is not intended to be inherited from. In particular, its
75
- // destructor is not virtual.
76
- //
77
- // Note that stringstream behaves differently in gcc and in MSVC. You
78
- // can stream a NULL char pointer to it in the former, but not in the
79
- // latter (it causes an access violation if you do). The Message
80
- // class hides this difference by treating a NULL char pointer as
81
- // "(null)".
82
- class GTEST_API_ Message {
83
- private:
84
- // The type of basic IO manipulators (endl, ends, and flush) for
85
- // narrow streams.
86
- typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&);
87
-
88
- public:
89
- // Constructs an empty Message.
90
- // We allocate the stringstream separately because otherwise each use of
91
- // ASSERT/EXPECT in a procedure adds over 200 bytes to the procedure's
92
- // stack frame leading to huge stack frames in some cases; gcc does not reuse
93
- // the stack space.
94
- Message() : ss_(new ::std::stringstream) {
95
- // By default, we want there to be enough precision when printing
96
- // a double to a Message.
97
- *ss_ << std::setprecision(std::numeric_limits<double>::digits10 + 2);
98
- }
99
-
100
- // Copy constructor.
101
- Message(const Message& msg) : ss_(new ::std::stringstream) { // NOLINT
102
- *ss_ << msg.GetString();
103
- }
104
-
105
- // Constructs a Message from a C-string.
106
- explicit Message(const char* str) : ss_(new ::std::stringstream) {
107
- *ss_ << str;
108
- }
109
-
110
- #if GTEST_OS_SYMBIAN
111
- // Streams a value (either a pointer or not) to this object.
112
- template <typename T>
113
- inline Message& operator <<(const T& value) {
114
- StreamHelper(typename internal::is_pointer<T>::type(), value);
115
- return *this;
116
- }
117
- #else
118
- // Streams a non-pointer value to this object.
119
- template <typename T>
120
- inline Message& operator <<(const T& val) {
121
- ::GTestStreamToHelper(ss_.get(), val);
122
- return *this;
123
- }
124
-
125
- // Streams a pointer value to this object.
126
- //
127
- // This function is an overload of the previous one. When you
128
- // stream a pointer to a Message, this definition will be used as it
129
- // is more specialized. (The C++ Standard, section
130
- // [temp.func.order].) If you stream a non-pointer, then the
131
- // previous definition will be used.
132
- //
133
- // The reason for this overload is that streaming a NULL pointer to
134
- // ostream is undefined behavior. Depending on the compiler, you
135
- // may get "0", "(nil)", "(null)", or an access violation. To
136
- // ensure consistent result across compilers, we always treat NULL
137
- // as "(null)".
138
- template <typename T>
139
- inline Message& operator <<(T* const& pointer) { // NOLINT
140
- if (pointer == NULL) {
141
- *ss_ << "(null)";
142
- } else {
143
- ::GTestStreamToHelper(ss_.get(), pointer);
144
- }
145
- return *this;
146
- }
147
- #endif // GTEST_OS_SYMBIAN
148
-
149
- // Since the basic IO manipulators are overloaded for both narrow
150
- // and wide streams, we have to provide this specialized definition
151
- // of operator <<, even though its body is the same as the
152
- // templatized version above. Without this definition, streaming
153
- // endl or other basic IO manipulators to Message will confuse the
154
- // compiler.
155
- Message& operator <<(BasicNarrowIoManip val) {
156
- *ss_ << val;
157
- return *this;
158
- }
159
-
160
- // Instead of 1/0, we want to see true/false for bool values.
161
- Message& operator <<(bool b) {
162
- return *this << (b ? "true" : "false");
163
- }
164
-
165
- // These two overloads allow streaming a wide C string to a Message
166
- // using the UTF-8 encoding.
167
- Message& operator <<(const wchar_t* wide_c_str) {
168
- return *this << internal::String::ShowWideCString(wide_c_str);
169
- }
170
- Message& operator <<(wchar_t* wide_c_str) {
171
- return *this << internal::String::ShowWideCString(wide_c_str);
172
- }
173
-
174
- #if GTEST_HAS_STD_WSTRING
175
- // Converts the given wide string to a narrow string using the UTF-8
176
- // encoding, and streams the result to this Message object.
177
- Message& operator <<(const ::std::wstring& wstr);
178
- #endif // GTEST_HAS_STD_WSTRING
179
-
180
- #if GTEST_HAS_GLOBAL_WSTRING
181
- // Converts the given wide string to a narrow string using the UTF-8
182
- // encoding, and streams the result to this Message object.
183
- Message& operator <<(const ::wstring& wstr);
184
- #endif // GTEST_HAS_GLOBAL_WSTRING
185
-
186
- // Gets the text streamed to this object so far as a String.
187
- // Each '\0' character in the buffer is replaced with "\\0".
188
- //
189
- // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
190
- internal::String GetString() const {
191
- return internal::StringStreamToString(ss_.get());
192
- }
193
-
194
- private:
195
-
196
- #if GTEST_OS_SYMBIAN
197
- // These are needed as the Nokia Symbian Compiler cannot decide between
198
- // const T& and const T* in a function template. The Nokia compiler _can_
199
- // decide between class template specializations for T and T*, so a
200
- // tr1::type_traits-like is_pointer works, and we can overload on that.
201
- template <typename T>
202
- inline void StreamHelper(internal::true_type /*dummy*/, T* pointer) {
203
- if (pointer == NULL) {
204
- *ss_ << "(null)";
205
- } else {
206
- ::GTestStreamToHelper(ss_.get(), pointer);
207
- }
208
- }
209
- template <typename T>
210
- inline void StreamHelper(internal::false_type /*dummy*/, const T& value) {
211
- ::GTestStreamToHelper(ss_.get(), value);
212
- }
213
- #endif // GTEST_OS_SYMBIAN
214
-
215
- // We'll hold the text streamed to this object here.
216
- const internal::scoped_ptr< ::std::stringstream> ss_;
217
-
218
- // We declare (but don't implement) this to prevent the compiler
219
- // from implementing the assignment operator.
220
- void operator=(const Message&);
221
- };
222
-
223
- // Streams a Message to an ostream.
224
- inline std::ostream& operator <<(std::ostream& os, const Message& sb) {
225
- return os << sb.GetString();
226
- }
227
-
228
- } // namespace testing
229
-
230
- #endif // GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_