tesseract v5.3.3.20231005
googletest-listener-test.cc File Reference
#include <vector>
#include "gtest/gtest.h"
#include "gtest/internal/custom/gtest.h"

Go to the source code of this file.

Classes

class  testing::internal::EventRecordingListener
 
class  testing::internal::EventRecordingListener2
 
class  testing::internal::EnvironmentInvocationCatcher
 
class  testing::internal::ListenerTest
 

Namespaces

namespace  testing
 
namespace  testing::internal
 

Functions

 testing::internal::TEST_F (ListenerTest, DoesFoo)
 
 testing::internal::TEST_F (ListenerTest, DoesBar)
 
void VerifyResults (const std::vector< std::string > &data, const char *const *expected_data, size_t expected_data_size)
 
int main (int argc, char **argv)
 

Variables

std::vector< std::string > * g_events = nullptr
 

Function Documentation

◆ main()

int main ( int  argc,
char **  argv 
)

Definition at line 270 of file googletest-listener-test.cc.

270 {
271 std::vector<std::string> events;
272 g_events = &events;
273 InitGoogleTest(&argc, argv);
274
275 UnitTest::GetInstance()->listeners().Append(
276 new EventRecordingListener("1st"));
277 UnitTest::GetInstance()->listeners().Append(
278 new EventRecordingListener("2nd"));
279 UnitTest::GetInstance()->listeners().Append(
280 new EventRecordingListener2("3rd"));
281
282 AddGlobalTestEnvironment(new EnvironmentInvocationCatcher);
283
284 GTEST_CHECK_(events.size() == 0)
285 << "AddGlobalTestEnvironment should not generate any events itself.";
286
287 ::testing::GTEST_FLAG(repeat) = 2;
288 int ret_val = RUN_ALL_TESTS();
289
290#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
291
292 // The deprecated OnTestSuiteStart/OnTestCaseStart events are included
293 const char* const expected_events[] = {"1st.OnTestProgramStart",
294 "2nd.OnTestProgramStart",
295 "3rd.OnTestProgramStart",
296 "1st.OnTestIterationStart(0)",
297 "2nd.OnTestIterationStart(0)",
298 "3rd.OnTestIterationStart(0)",
299 "1st.OnEnvironmentsSetUpStart",
300 "2nd.OnEnvironmentsSetUpStart",
301 "3rd.OnEnvironmentsSetUpStart",
302 "Environment::SetUp",
303 "3rd.OnEnvironmentsSetUpEnd",
304 "2nd.OnEnvironmentsSetUpEnd",
305 "1st.OnEnvironmentsSetUpEnd",
306 "3rd.OnTestSuiteStart",
307 "1st.OnTestCaseStart",
308 "2nd.OnTestCaseStart",
309 "ListenerTest::SetUpTestSuite",
310 "1st.OnTestStart",
311 "2nd.OnTestStart",
312 "3rd.OnTestStart",
313 "ListenerTest::SetUp",
314 "ListenerTest::* Test Body",
315 "1st.OnTestPartResult",
316 "2nd.OnTestPartResult",
317 "3rd.OnTestPartResult",
318 "ListenerTest::TearDown",
319 "3rd.OnTestEnd",
320 "2nd.OnTestEnd",
321 "1st.OnTestEnd",
322 "1st.OnTestStart",
323 "2nd.OnTestStart",
324 "3rd.OnTestStart",
325 "ListenerTest::SetUp",
326 "ListenerTest::* Test Body",
327 "1st.OnTestPartResult",
328 "2nd.OnTestPartResult",
329 "3rd.OnTestPartResult",
330 "ListenerTest::TearDown",
331 "3rd.OnTestEnd",
332 "2nd.OnTestEnd",
333 "1st.OnTestEnd",
334 "ListenerTest::TearDownTestSuite",
335 "3rd.OnTestSuiteEnd",
336 "2nd.OnTestCaseEnd",
337 "1st.OnTestCaseEnd",
338 "1st.OnEnvironmentsTearDownStart",
339 "2nd.OnEnvironmentsTearDownStart",
340 "3rd.OnEnvironmentsTearDownStart",
341 "Environment::TearDown",
342 "3rd.OnEnvironmentsTearDownEnd",
343 "2nd.OnEnvironmentsTearDownEnd",
344 "1st.OnEnvironmentsTearDownEnd",
345 "3rd.OnTestIterationEnd(0)",
346 "2nd.OnTestIterationEnd(0)",
347 "1st.OnTestIterationEnd(0)",
348 "1st.OnTestIterationStart(1)",
349 "2nd.OnTestIterationStart(1)",
350 "3rd.OnTestIterationStart(1)",
351 "1st.OnEnvironmentsSetUpStart",
352 "2nd.OnEnvironmentsSetUpStart",
353 "3rd.OnEnvironmentsSetUpStart",
354 "Environment::SetUp",
355 "3rd.OnEnvironmentsSetUpEnd",
356 "2nd.OnEnvironmentsSetUpEnd",
357 "1st.OnEnvironmentsSetUpEnd",
358 "3rd.OnTestSuiteStart",
359 "1st.OnTestCaseStart",
360 "2nd.OnTestCaseStart",
361 "ListenerTest::SetUpTestSuite",
362 "1st.OnTestStart",
363 "2nd.OnTestStart",
364 "3rd.OnTestStart",
365 "ListenerTest::SetUp",
366 "ListenerTest::* Test Body",
367 "1st.OnTestPartResult",
368 "2nd.OnTestPartResult",
369 "3rd.OnTestPartResult",
370 "ListenerTest::TearDown",
371 "3rd.OnTestEnd",
372 "2nd.OnTestEnd",
373 "1st.OnTestEnd",
374 "1st.OnTestStart",
375 "2nd.OnTestStart",
376 "3rd.OnTestStart",
377 "ListenerTest::SetUp",
378 "ListenerTest::* Test Body",
379 "1st.OnTestPartResult",
380 "2nd.OnTestPartResult",
381 "3rd.OnTestPartResult",
382 "ListenerTest::TearDown",
383 "3rd.OnTestEnd",
384 "2nd.OnTestEnd",
385 "1st.OnTestEnd",
386 "ListenerTest::TearDownTestSuite",
387 "3rd.OnTestSuiteEnd",
388 "2nd.OnTestCaseEnd",
389 "1st.OnTestCaseEnd",
390 "1st.OnEnvironmentsTearDownStart",
391 "2nd.OnEnvironmentsTearDownStart",
392 "3rd.OnEnvironmentsTearDownStart",
393 "Environment::TearDown",
394 "3rd.OnEnvironmentsTearDownEnd",
395 "2nd.OnEnvironmentsTearDownEnd",
396 "1st.OnEnvironmentsTearDownEnd",
397 "3rd.OnTestIterationEnd(1)",
398 "2nd.OnTestIterationEnd(1)",
399 "1st.OnTestIterationEnd(1)",
400 "3rd.OnTestProgramEnd",
401 "2nd.OnTestProgramEnd",
402 "1st.OnTestProgramEnd"};
403#else
404 const char* const expected_events[] = {"1st.OnTestProgramStart",
405 "2nd.OnTestProgramStart",
406 "3rd.OnTestProgramStart",
407 "1st.OnTestIterationStart(0)",
408 "2nd.OnTestIterationStart(0)",
409 "3rd.OnTestIterationStart(0)",
410 "1st.OnEnvironmentsSetUpStart",
411 "2nd.OnEnvironmentsSetUpStart",
412 "3rd.OnEnvironmentsSetUpStart",
413 "Environment::SetUp",
414 "3rd.OnEnvironmentsSetUpEnd",
415 "2nd.OnEnvironmentsSetUpEnd",
416 "1st.OnEnvironmentsSetUpEnd",
417 "3rd.OnTestSuiteStart",
418 "ListenerTest::SetUpTestSuite",
419 "1st.OnTestStart",
420 "2nd.OnTestStart",
421 "3rd.OnTestStart",
422 "ListenerTest::SetUp",
423 "ListenerTest::* Test Body",
424 "1st.OnTestPartResult",
425 "2nd.OnTestPartResult",
426 "3rd.OnTestPartResult",
427 "ListenerTest::TearDown",
428 "3rd.OnTestEnd",
429 "2nd.OnTestEnd",
430 "1st.OnTestEnd",
431 "1st.OnTestStart",
432 "2nd.OnTestStart",
433 "3rd.OnTestStart",
434 "ListenerTest::SetUp",
435 "ListenerTest::* Test Body",
436 "1st.OnTestPartResult",
437 "2nd.OnTestPartResult",
438 "3rd.OnTestPartResult",
439 "ListenerTest::TearDown",
440 "3rd.OnTestEnd",
441 "2nd.OnTestEnd",
442 "1st.OnTestEnd",
443 "ListenerTest::TearDownTestSuite",
444 "3rd.OnTestSuiteEnd",
445 "1st.OnEnvironmentsTearDownStart",
446 "2nd.OnEnvironmentsTearDownStart",
447 "3rd.OnEnvironmentsTearDownStart",
448 "Environment::TearDown",
449 "3rd.OnEnvironmentsTearDownEnd",
450 "2nd.OnEnvironmentsTearDownEnd",
451 "1st.OnEnvironmentsTearDownEnd",
452 "3rd.OnTestIterationEnd(0)",
453 "2nd.OnTestIterationEnd(0)",
454 "1st.OnTestIterationEnd(0)",
455 "1st.OnTestIterationStart(1)",
456 "2nd.OnTestIterationStart(1)",
457 "3rd.OnTestIterationStart(1)",
458 "1st.OnEnvironmentsSetUpStart",
459 "2nd.OnEnvironmentsSetUpStart",
460 "3rd.OnEnvironmentsSetUpStart",
461 "Environment::SetUp",
462 "3rd.OnEnvironmentsSetUpEnd",
463 "2nd.OnEnvironmentsSetUpEnd",
464 "1st.OnEnvironmentsSetUpEnd",
465 "3rd.OnTestSuiteStart",
466 "ListenerTest::SetUpTestSuite",
467 "1st.OnTestStart",
468 "2nd.OnTestStart",
469 "3rd.OnTestStart",
470 "ListenerTest::SetUp",
471 "ListenerTest::* Test Body",
472 "1st.OnTestPartResult",
473 "2nd.OnTestPartResult",
474 "3rd.OnTestPartResult",
475 "ListenerTest::TearDown",
476 "3rd.OnTestEnd",
477 "2nd.OnTestEnd",
478 "1st.OnTestEnd",
479 "1st.OnTestStart",
480 "2nd.OnTestStart",
481 "3rd.OnTestStart",
482 "ListenerTest::SetUp",
483 "ListenerTest::* Test Body",
484 "1st.OnTestPartResult",
485 "2nd.OnTestPartResult",
486 "3rd.OnTestPartResult",
487 "ListenerTest::TearDown",
488 "3rd.OnTestEnd",
489 "2nd.OnTestEnd",
490 "1st.OnTestEnd",
491 "ListenerTest::TearDownTestSuite",
492 "3rd.OnTestSuiteEnd",
493 "1st.OnEnvironmentsTearDownStart",
494 "2nd.OnEnvironmentsTearDownStart",
495 "3rd.OnEnvironmentsTearDownStart",
496 "Environment::TearDown",
497 "3rd.OnEnvironmentsTearDownEnd",
498 "2nd.OnEnvironmentsTearDownEnd",
499 "1st.OnEnvironmentsTearDownEnd",
500 "3rd.OnTestIterationEnd(1)",
501 "2nd.OnTestIterationEnd(1)",
502 "1st.OnTestIterationEnd(1)",
503 "3rd.OnTestProgramEnd",
504 "2nd.OnTestProgramEnd",
505 "1st.OnTestProgramEnd"};
506#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
507
508 VerifyResults(events,
509 expected_events,
510 sizeof(expected_events)/sizeof(expected_events[0]));
511
512 // We need to check manually for ad hoc test failures that happen after
513 // RUN_ALL_TESTS finishes.
514 if (UnitTest::GetInstance()->Failed())
515 ret_val = 1;
516
517 return ret_val;
518}
int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_
Definition: gtest.h:2489
#define GTEST_FLAG(name)
Definition: gtest-port.h:2205
#define GTEST_CHECK_(condition)
Definition: gtest-port.h:1008
std::vector< std::string > * g_events
void VerifyResults(const std::vector< std::string > &data, const char *const *expected_data, size_t expected_data_size)
Environment * AddGlobalTestEnvironment(Environment *env)
Definition: gtest.h:1493
GTEST_API_ void InitGoogleTest(int *argc, char **argv)
Definition: gtest.cc:6660

◆ VerifyResults()

void VerifyResults ( const std::vector< std::string > &  data,
const char *const *  expected_data,
size_t  expected_data_size 
)

Definition at line 246 of file googletest-listener-test.cc.

248 {
249 const size_t actual_size = data.size();
250 // If the following assertion fails, a new entry will be appended to
251 // data. Hence we save data.size() first.
252 EXPECT_EQ(expected_data_size, actual_size);
253
254 // Compares the common prefix.
255 const size_t shorter_size = expected_data_size <= actual_size ?
256 expected_data_size : actual_size;
257 size_t i = 0;
258 for (; i < shorter_size; ++i) {
259 ASSERT_STREQ(expected_data[i], data[i].c_str())
260 << "at position " << i;
261 }
262
263 // Prints extra elements in the actual data.
264 for (; i < actual_size; ++i) {
265 printf(" Actual event #%lu: %s\n",
266 static_cast<unsigned long>(i), data[i].c_str());
267 }
268}
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:2043
#define ASSERT_STREQ(s1, s2)
Definition: gtest.h:2121

Variable Documentation

◆ g_events

std::vector<std::string>* g_events = nullptr

Definition at line 51 of file googletest-listener-test.cc.