Difference between revisions of "Scl test class"

From STRIDE Wiki
Jump to: navigation, search
(Notes)
(Examples)
Line 42: Line 42:
 
#include <srtest.h>
 
#include <srtest.h>
  
class RuntimeServices_dynamic {
+
class RuntimeServices_dynamic  
 +
{
 
public:
 
public:
  void dynamic(void);
 
   
 
 
   // Declaring a constructor for an scl_test_class is optional, but
 
   // Declaring a constructor for an scl_test_class is optional, but
   // if a constructor is declared all parameters must be of plain old data (POD) type.
+
   // if a constructor is declared all arguments must be of plain old data (POD) type.
 
   RuntimeServices_dynamic(int i, const char* s);
 
   RuntimeServices_dynamic(int i, const char* s);
 +
 +
  void dynamic();
 
};
 
};
 
      
 
      

Revision as of 00:41, 30 November 2014

The scl_test_class pragma

The scl_test_class pragma is one of the Test Unit pragmas. It declares a test class as captured. Once captured, the STRIDE compiler will generate the appropriate code in the Intercept Module (IM) for instantiating the class and executing its test methods.

Syntax

#pragma scl_test_class(class-name)
Parameters Type Description
class-name Identifier The name of the test unit. This is must be the name of an existing C++ class or a struct.

Notes

  • This pragma requires the compilation language to be C++. If the compilation language is not C++ and this pragma is encountered, then an error is issued and this pragma is ignored.
  • The test class identified:
    • must have single public constructor - default or explicit.
    • must not be a templated class
    • must not be a nested class
    • must not be a pure virtual class
    • must have one or more member functions that is suitable as a test method. For a member function to be a test method it:
      • must be declared within the test class (a method that is inherited from a base class cannot be a test method)
      • must be declared with public access
      • must have a return type of bool, an integral type (signed or unsigned long, int, short, char) or void.
      • must have an empty parameter list - declared as f() or f(void).
      • must not be a templatized function
      • must not be an overloaded operator
      • must not be a static member.
  • Optionally if desired a set of setup/teardown fixtures could be applied.
  • Optionally if desired the public constructor may have parameters (they must all be POD type). For which concrete values could be specified when running the test unit.

Examples

#include <srtest.h>

class RuntimeServices_dynamic 
{
public:
  // Declaring a constructor for an scl_test_class is optional, but
  // if a constructor is declared all arguments must be of plain old data (POD) type.
  RuntimeServices_dynamic(int i, const char* s);

  void dynamic();
};
    
#ifdef _SCL
#pragma scl_test_class(RuntimeServices_dynamic)
#endif

See Also

  • Refer to the Test Class Samples page for more information on capturing and qualifying test classes.