xtd 0.2.0
unit_test.h
Go to the documentation of this file.
1 #pragma once
5 #include "../tunit_export.h"
6 #include "event_listener.h"
8 #include "settings.h"
9 #include <xtd/convert>
10 #include <xtd/date_time>
11 #include <xtd/random>
12 #include <xtd/ustring>
13 #include <xtd/system_exception>
14 #include <iomanip>
15 #include <fstream>
16 #include <memory>
17 #include <random>
18 
20 namespace xtd {
22  namespace tunit {
24  template <typename test_class_t>
25  class test_class_attribute;
27 
35  class tunit_export_ unit_test {
36  public:
38 
43  explicit unit_test(std::unique_ptr<xtd::tunit::event_listener> event_listener) noexcept;
44 
49  unit_test(std::unique_ptr<xtd::tunit::event_listener> event_listener, int argc, char* argv[]) noexcept;
51 
53  virtual ~unit_test();
55 
57 
61  int32 repeat_iteration() const noexcept;
62 
66  int32 repeat_iteration_count() const noexcept;
67 
71  bool repeat_tests() const noexcept;
72 
75  size_t test_cases_count() const noexcept;
76 
79  size_t test_count() const noexcept;
80 
83  size_t aborted_test_count() const noexcept;
84 
87  std::vector<xtd::ustring> aborted_test_names() const noexcept;
88 
91  std::chrono::milliseconds elapsed_time() const noexcept;
92 
95  size_t ignored_test_count() const noexcept;
96 
99  std::vector<xtd::ustring> ignored_test_names() const noexcept;
100 
103  size_t failed_test_count() const noexcept;
104 
107  std::vector<xtd::ustring> failed_test_names() const noexcept;
108 
111  size_t succeed_test_count() const noexcept;
112 
115  std::vector<xtd::ustring> succeed_test_names() const noexcept;
117 
118 
120 
124  int32 run();
126 
127 
128  protected:
130 
137  virtual int32 count_tests(int32 count);
138 
144  virtual int32 list_tests(const std::vector<xtd::ustring>& tests);
145 
150  virtual bool parse_arguments(const std::vector<ustring>& args);
152 
153  private:
154  template <typename test_class_t>
156  friend class xtd::tunit::test_class;
157  friend class xtd::tunit::test;
158  friend class xtd::tunit::base_assert;
159 
161  static std::vector<xtd::tunit::registered_test_class>& test_classes();
162  xtd::ustring get_filename(const xtd::ustring& path);
163  xtd::ustring cdata_message_to_xml_string(const xtd::tunit::test& test);
164  xtd::ustring escape_path_to_json_string(const xtd::ustring& path);
165  xtd::ustring escape_to_json_string(const xtd::ustring& str);
166  xtd::ustring escape_to_xml_string(const xtd::ustring& str);
167  xtd::ustring message_to_json_string(const xtd::tunit::test& test);
168  xtd::ustring message_to_xml_string(const xtd::tunit::test& test);
169  xtd::ustring name_to_string(const xtd::ustring& name);
170  xtd::ustring status_to_string(const xtd::tunit::test& test);
171  xtd::ustring to_string(const std::chrono::milliseconds& ms);
172  xtd::ustring to_string(const std::chrono::time_point<std::chrono::system_clock>& time);
173  void unit_test_cleanup();
174  void unit_test_initialize();
175  void write_list_tests_json();
176  void write_list_tests_xml();
177  void write_tests_json();
178  void write_tests_xml();
179 
180  std::vector<ustring> arguments;
181  xtd::ustring name_ = "AllTests";
182  std::unique_ptr<xtd::tunit::event_listener> event_listener_;
183  xtd::date_time end_time_point_;
184  int32 repeat_iteration_ = 0;
185  xtd::date_time start_time_point_;
186  };
187  }
188 }
The base class for assert.
Definition: base_assert.h:29
Contains xtd::tunit::registered_test_class class.
Represents a test class attribute.
Definition: test_class_attribute.h:24
Represents a test method.
Definition: test.h:31
The xtd namespace contains all fundamental classes to access Hardware, Os, System, and more.
Definition: system_report.h:17
Contains xtd::tunit::settings class.
Represent the event listener class. Unit test call theses events when unit tests are processing...
Definition: event_listener.h:23
Represents text as a sequence of UTF-8 code units.
Definition: ustring.h:46
std::string to_string(const date_time &value, const std::string &fmt, const std::locale &loc)
Convert a specified value into a string with specified format and locale.
Definition: date_time.h:1063
Represents a test class.
Definition: test_class.h:39
Represents an instant in time, typically expressed as a date and time of day.
Definition: date_time.h:78
The xtd::uri::local_path data.
int_least32_t int32
Represents a 32-bit signed integer.
Definition: types.h:129
Contains xtd::tunit::event_listener class.
Represents the registered test class.
Definition: registered_test_class.h:20
The unit_test class is unit test base interface.
Definition: unit_test.h:35