xtd 0.2.0
class_cleanup_attribute.h
Go to the documentation of this file.
1 #pragma once
5 #include "test.h"
6 
8 namespace xtd {
10  namespace tunit {
22  public:
24 
30  template<typename test_class_t>
31  class_cleanup_attribute(const std::string& name, test_class_t& test_class, void (*method)()) noexcept : class_cleanup_attribute(name, test_class, method, xtd::diagnostics::stack_frame()) {}
37  template<typename test_class_t>
38  class_cleanup_attribute(const std::string& name, test_class_t& test_class, void (*method)(), const xtd::diagnostics::stack_frame& stack_frame) noexcept {test_class.add_class_cleanup({name, method, stack_frame});}
40  };
41  }
42 }
43 
52 #define class_cleanup_(method_name) \
53  __##method_name##_static() {} \
54  class __class_cleanup_attribute : public xtd::tunit::class_cleanup_attribute { \
55  public:\
56  template<typename test_class> __class_cleanup_attribute(test_class& test) : class_cleanup_attribute(#method_name, test, &method_name, {__FILE__, __LINE__, __func__}) {__##method_name##_static();} \
57  } __class_cleanup_attribute {*this}; \
58  static void method_name()
59 
Contains xtd::tunit::test class.
The xtd namespace contains all fundamental classes to access Hardware, Os, System, and more.
Definition: system_report.h:17
This attribute is use to add cleanup class method to class test attribute.
Definition: class_cleanup_attribute.h:21
Represents a test class.
Definition: test_class.h:39
Provides information about a xtd::diagnostics::stack_frame, which represents a function call on the c...
Definition: stack_frame.h:37
class_cleanup_attribute(const std::string &name, test_class_t &test_class, void(*method)(), const xtd::diagnostics::stack_frame &stack_frame) noexcept
Creates new instance of class_cleanup_attribute attribute.
Definition: class_cleanup_attribute.h:38
class_cleanup_attribute(const std::string &name, test_class_t &test_class, void(*method)()) noexcept
Creates new instance of class_cleanup_attribute attribute.
Definition: class_cleanup_attribute.h:31