emittertests.cpp 1.03 KB
Newer Older
1
#include <iostream>
2

Jesse Beder's avatar
Jesse Beder committed
3
4
5
6
#include "teststruct.h"
#include "yaml-cpp/eventhandler.h"
#include "yaml-cpp/yaml.h"  // IWYU pragma: keep

Jesse Beder's avatar
Jesse Beder committed
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
namespace Test {
namespace Emitter {
namespace {
void RunGenEmitterTest(TEST (*test)(YAML::Emitter&), const std::string& name,
                       int& passed, int& total) {
  YAML::Emitter out;
  TEST ret;

  try {
    ret = test(out);
  }
  catch (const YAML::Exception& e) {
    ret.ok = false;
    ret.error = std::string("  Exception caught: ") + e.what();
  }

  if (!out.good()) {
    ret.ok = false;
    ret.error = out.GetLastError();
  }

  if (!ret.ok) {
    std::cout << "Generated emitter test failed: " << name << "\n";
    std::cout << "Output:\n";
    std::cout << out.c_str() << "<<<\n";
    std::cout << ret.error << "\n";
  }

  if (ret.ok)
    passed++;
  total++;
}
}
Jesse Beder's avatar
Jesse Beder committed
40
}
Jesse Beder's avatar
Jesse Beder committed
41
42
43
44
45
46
47
48
49
50
51
52

#include "genemittertests.h"

bool RunEmitterTests() {
  int passed = 0;
  int total = 0;
  RunGenEmitterTests(passed, total);

  std::cout << "Emitter tests: " << passed << "/" << total << " passed\n";
  return passed == total;
}
}