OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #ifndef PLATFORM_ASSERT_H_ | 5 #ifndef PLATFORM_ASSERT_H_ |
6 #define PLATFORM_ASSERT_H_ | 6 #define PLATFORM_ASSERT_H_ |
7 | 7 |
8 // TODO(5411406): include sstream for now, once we have a Utils::toString() | 8 // TODO(5411406): include sstream for now, once we have a Utils::toString() |
9 // implemented for all the primitive types we can replace the usage of | 9 // implemented for all the primitive types we can replace the usage of |
10 // sstream by Utils::toString() | 10 // sstream by Utils::toString() |
11 #if defined(TESTING) | 11 #if defined(TESTING) |
12 #include <sstream> | 12 #include <sstream> |
13 #include <string> | 13 #include <string> |
14 #endif | 14 #endif |
15 | 15 |
16 #include "platform/globals.h" | 16 #include "platform/globals.h" |
| 17 #include "platform/memory_sanitizer.h" |
17 | 18 |
18 #if !defined(DEBUG) && !defined(NDEBUG) | 19 #if !defined(DEBUG) && !defined(NDEBUG) |
19 #error neither DEBUG nor NDEBUG defined | 20 #error neither DEBUG nor NDEBUG defined |
20 #elif defined(DEBUG) && defined(NDEBUG) | 21 #elif defined(DEBUG) && defined(NDEBUG) |
21 #error both DEBUG and NDEBUG defined | 22 #error both DEBUG and NDEBUG defined |
22 #endif | 23 #endif |
23 | 24 |
24 namespace dart { | 25 namespace dart { |
25 | 26 |
26 class DynamicAssertionHelper { | 27 class DynamicAssertionHelper { |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 tolss << tol; | 136 tolss << tol; |
136 std::string es = ess.str(), as = ass.str(), tols = tolss.str(); | 137 std::string es = ess.str(), as = ass.str(), tols = tolss.str(); |
137 Fail("expected: <%s> but was: <%s> (tolerance: <%s>)", | 138 Fail("expected: <%s> but was: <%s> (tolerance: <%s>)", |
138 es.c_str(), | 139 es.c_str(), |
139 as.c_str(), | 140 as.c_str(), |
140 tols.c_str()); | 141 tols.c_str()); |
141 } | 142 } |
142 | 143 |
143 | 144 |
144 template<typename E, typename A> | 145 template<typename E, typename A> |
| 146 NO_SANITIZE_MEMORY |
145 void DynamicAssertionHelper::StringEquals(const E& expected, const A& actual) { | 147 void DynamicAssertionHelper::StringEquals(const E& expected, const A& actual) { |
146 std::ostringstream ess, ass; | 148 std::ostringstream ess, ass; |
147 ess << expected; | 149 ess << expected; |
148 ass << actual; | 150 ass << actual; |
149 std::string es = ess.str(), as = ass.str(); | 151 std::string es = ess.str(), as = ass.str(); |
150 if (as == es) return; | 152 if (as == es) return; |
151 Fail("expected:\n<\"%s\">\nbut was:\n<\"%s\">", es.c_str(), as.c_str()); | 153 Fail("expected:\n<\"%s\">\nbut was:\n<\"%s\">", es.c_str(), as.c_str()); |
152 } | 154 } |
153 | 155 |
154 | 156 |
155 template<typename E, typename A> | 157 template<typename E, typename A> |
| 158 NO_SANITIZE_MEMORY |
156 void DynamicAssertionHelper::IsSubstring(const E& needle, const A& haystack) { | 159 void DynamicAssertionHelper::IsSubstring(const E& needle, const A& haystack) { |
157 std::ostringstream ess, ass; | 160 std::ostringstream ess, ass; |
158 ess << needle; | 161 ess << needle; |
159 ass << haystack; | 162 ass << haystack; |
160 std::string es = ess.str(), as = ass.str(); | 163 std::string es = ess.str(), as = ass.str(); |
161 if (as.find(es) != std::string::npos) return; | 164 if (as.find(es) != std::string::npos) return; |
162 Fail("expected <\"%s\"> to be a substring of <\"%s\">", | 165 Fail("expected <\"%s\"> to be a substring of <\"%s\">", |
163 es.c_str(), as.c_str()); | 166 es.c_str(), as.c_str()); |
164 } | 167 } |
165 | 168 |
166 | 169 |
167 template<typename E, typename A> | 170 template<typename E, typename A> |
| 171 NO_SANITIZE_MEMORY |
168 void DynamicAssertionHelper::IsNotSubstring(const E& needle, | 172 void DynamicAssertionHelper::IsNotSubstring(const E& needle, |
169 const A& haystack) { | 173 const A& haystack) { |
170 std::ostringstream ess, ass; | 174 std::ostringstream ess, ass; |
171 ess << needle; | 175 ess << needle; |
172 ass << haystack; | 176 ass << haystack; |
173 std::string es = ess.str(), as = ass.str(); | 177 std::string es = ess.str(), as = ass.str(); |
174 if (as.find(es) == std::string::npos) return; | 178 if (as.find(es) == std::string::npos) return; |
175 Fail("expected <\"%s\"> to not be a substring of <\"%s\">", | 179 Fail("expected <\"%s\"> to not be a substring of <\"%s\">", |
176 es.c_str(), as.c_str()); | 180 es.c_str(), as.c_str()); |
177 } | 181 } |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 | 370 |
367 #define FAIL1(format, p1) \ | 371 #define FAIL1(format, p1) \ |
368 dart::Expect(__FILE__, __LINE__).Fail(format, (p1)) | 372 dart::Expect(__FILE__, __LINE__).Fail(format, (p1)) |
369 | 373 |
370 #define FAIL2(format, p1, p2) \ | 374 #define FAIL2(format, p1, p2) \ |
371 dart::Expect(__FILE__, __LINE__).Fail(format, (p1), (p2)) | 375 dart::Expect(__FILE__, __LINE__).Fail(format, (p1), (p2)) |
372 | 376 |
373 #endif // defined(TESTING) | 377 #endif // defined(TESTING) |
374 | 378 |
375 #endif // PLATFORM_ASSERT_H_ | 379 #endif // PLATFORM_ASSERT_H_ |
OLD | NEW |