tunit - Reference Guide  1.0.0
Modern c++17 unit testing framework on Windows, macOS, Linux, iOS and android.
test.h
Go to the documentation of this file.
1 #pragma once
4 
5 #include "assert.h"
6 #include "assert_error.h"
7 #include "line_info.h"
8 #include <functional>
9 #include <chrono>
10 #include <string>
11 
13 namespace tunit {
15  class test_class;
16  class unit_test;
17  class valid;
19 
20  class test final {
21  enum class test_status {
22  not_started,
23  ignored,
24  succeed,
25  aborted,
26  failed
27  };
28 
29  public:
30  test() = default;
31  test(const std::string& name, const std::function<void()>& method, const tunit::line_info& caller) noexcept : test(name, method, false, caller) {}
32  test(const std::string& name, const std::function<void()>& method, bool ignore, const tunit::line_info& info) noexcept : info_(info), method_(method), name_(name), status_(ignore ? test_status::ignored : test_status::not_started) {}
33 
34  bool aborted() const noexcept {return this->status_ == test_status::aborted;}
35 
36  const std::string& actual() const noexcept {return this->actual_;}
37 
38  const std::string& expect() const noexcept {return this->expect_;}
39 
40  bool failed() const noexcept {return this->status_ == test_status::failed;}
41 
42  bool ignored() const noexcept {return this->status_ == test_status::ignored;}
43 
44  bool not_started() const noexcept {return this->status_ == test_status::not_started;}
45 
46  bool succeed() const noexcept {return this->status_ == test_status::succeed;}
47 
48  const tunit::line_info line_info() const noexcept {return this->info_;}
49 
50  std::function<void()> method() const noexcept {return this->method_;}
51 
52  const std::string& message() const noexcept {return this->message_;}
53 
54  const std::string& name() const noexcept {return this->name_;}
55 
56  const std::string& user_message() const noexcept {return this->user_message_;}
57 
58  std::chrono::milliseconds elapsed_time() const noexcept {
59  using namespace std::chrono_literals;
60  if (this->start_time_point.time_since_epoch() == 0ms && this->end_time_point.time_since_epoch() == 0ms) return 0ms;
61  if (this->end_time_point.time_since_epoch() == 0ms) return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - this->start_time_point);
62  return std::chrono::duration_cast<std::chrono::milliseconds>(this->end_time_point - this->start_time_point);
63  }
64 
65  private:
66  friend class tunit::assert;
67  friend class tunit::base_assert;
68  friend class tunit::test_class;
69  friend class tunit::valid;
70  static test& current_test() {return *current_test_;}
71  static const test_class& current_test_class() {return *current_test_class_;}
72  static const unit_test& current_unit_test() {return *current_unit_test_;}
73 
74  void run(const tunit::unit_test& unit_test, const tunit::test_class& test_class);
75 
76  std::chrono::high_resolution_clock::time_point end_time_point;
77  static test* current_test_;
78  static const test_class* current_test_class_;
79  static const unit_test* current_unit_test_;
80  std::string actual_;
81  std::string expect_;
82  tunit::line_info info_;
83  std::string message_;
84  std::function<void()> method_;
85  std::string name_;
86  std::chrono::high_resolution_clock::time_point start_time_point;
87  test_status status_ = test_status::not_started;
88  std::string user_message_;
89  };
90 }
Definition: test_class.h:21
Contains tunit::assert_error exception.
The assert class contains a collection of static methods that implement the most common assertions us...
Definition: assert.h:26
Contains tunit::line_info class.
The template class.
Definition: unit_test.h:23
Contains tunit::assert class.
line_info information class is used to store current file, current line and current function informat...
Definition: line_info.h:13
Definition: base_assert.h:15
The tunit namespace contains a unit test library.
Definition: abort_error.h:8
Definition: test.h:20
The assert class contains a collection of static methods that implement the most common assertions us...
Definition: valid.h:12