Test.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include "test/Test.h"
  2. Core::HashMap<Core::Test::Internal::FileName, Core::Test::Internal::Result>
  3. Core::Test::Internal::results;
  4. bool Core::Test::Internal::checkFloat(const char* file, int line, float wanted,
  5. float actual, float error) {
  6. Error e = Error::NONE;
  7. FileName fileName;
  8. if(checkError(e, fileName.append(file))) {
  9. CORE_LOG_WARNING("cannot append file name '#' with error '#'", file, e);
  10. return false;
  11. }
  12. Result* result = results.search(fileName);
  13. if(result == nullptr &&
  14. checkError(e, results.tryEmplace(result, fileName))) {
  15. CORE_LOG_WARNING("cannot add test result for #, error '#'", file, e);
  16. return false;
  17. }
  18. result->tests++;
  19. float diff = wanted - actual;
  20. diff = diff < 0.0f ? -diff : diff;
  21. if(diff <= error) {
  22. result->successTests++;
  23. return true;
  24. }
  25. CORE_LOG_ERROR("#:# - expected '#' got '#'", fileName, line, wanted, actual)
  26. return false;
  27. }
  28. void Core::Test::finalize() {
  29. using namespace Internal;
  30. for(const auto& e : results) {
  31. if(e.value.successTests == e.value.tests) {
  32. CORE_LOG_DEBUG("# - # / # tests succeeded", e.getKey(),
  33. e.value.successTests, e.value.tests);
  34. } else {
  35. CORE_LOG_ERROR("# - # / # tests succeeded", e.getKey(),
  36. e.value.successTests, e.value.tests);
  37. }
  38. }
  39. results.clear();
  40. }