FastLED 3.9.15
Loading...
Searching...
No Matches
fltest.h File Reference

Detailed Description

Portable test framework for FastLED.

This is a lightweight test framework that can run on both host computers and embedded devices. It provides macros similar to doctest but with minimal dependencies on the standard library.

Features:

  • TEST_CASE / SUBCASE hierarchy with proper re-entry
  • CHECK / REQUIRE assertion macros
  • Support for embedded devices (serial output)

Usage: #include "fl/test/fltest.h"

FL_TEST_CASE("MyTest") { FL_CHECK(1 + 1 == 2); FL_SUBCASE("nested") { FL_CHECK_EQ(2, 2); } }

Definition in file fltest.h.

+ Include dependency graph for fltest.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  fl::test::Approx
 Helper class for approximate floating-point comparisons. More...
 
struct  fl::test::AssertResult
 
struct  fl::test::CompareEq< L, R >
 
struct  fl::test::CompareGe< L, R >
 
struct  fl::test::CompareGt< L, R >
 
struct  fl::test::CompareLe< L, R >
 
struct  fl::test::CompareLt< L, R >
 
struct  fl::test::CompareNe< L, R >
 
class  fl::test::DefaultReporter
 
struct  fl::test::detail::SuiteScope
 
struct  fl::test::detail::TypeIterator< TypeList< T, Rest... >, TestFunc >
 
struct  fl::test::detail::TypeIterator< TypeList<>, TestFunc >
 
struct  fl::test::detail::TypeList< Ts >
 
struct  fl::test::detail::TypeNameHolder< T >
 
struct  fl::test::ExpressionValue< T >
 
class  fl::test::IReporter
 
class  fl::test::JSONReporter
 JSON reporter that outputs test results in JSON format. More...
 
class  fl::test::SerialReporter
 Serial reporter for embedded devices Usage: SerialReporter reporter(mySerialPrint); fl::test::TestContext::instance().setReporter(&reporter);. More...
 
struct  fl::test::SourceLocation
 
class  fl::test::Subcase
 
struct  fl::test::SubcaseSignature
 
class  fl::test::TAPReporter
 TAP reporter that outputs TAP-compatible test results Can output to a string buffer or use a print function for streaming output. More...
 
class  fl::test::TestContext
 
struct  fl::test::TestContext::TestCaseInfo
 
struct  fl::test::TestRegistrar
 
struct  fl::test::TestStats
 
class  fl::test::XMLReporter
 XML reporter that outputs JUnit-compatible XML format The output is accumulated in a string buffer provided by the user. More...
 

Namespaces

namespace  fl
 Base definition for an LED controller.
 
namespace  fl::test
 
namespace  fl::test::detail
 

Macros

#define FL_AND_THEN(name)
 
#define FL_AND_WHEN(name)
 
#define FL_CAPTURE(x)
 
#define FL_CHECK(expr)
 
#define FL_CHECK_ARRAY_EQ(actual, expected, arrsize)
 
#define FL_CHECK_CLOSE(a, b, epsilon)
 
#define FL_CHECK_EQ(lhs, rhs)
 
#define FL_CHECK_FALSE(expr)
 
#define FL_CHECK_GE(lhs, rhs)
 
#define FL_CHECK_GT(lhs, rhs)
 
#define FL_CHECK_LE(lhs, rhs)
 
#define FL_CHECK_LT(lhs, rhs)
 
#define FL_CHECK_MESSAGE(expr, msg)
 
#define FL_CHECK_NE(lhs, rhs)
 
#define FL_CHECK_NOTHROW(expr)
 
#define FL_CHECK_STR_CONTAINS(haystack, needle)
 
#define FL_CHECK_STR_EQ(a, b)
 
#define FL_CHECK_STR_NE(a, b)
 
#define FL_CHECK_THROWS(expr)
 
#define FL_CHECK_THROWS_AS(expr, exType)
 
#define FL_CHECK_THROWS_WITH(expr, msg)
 
#define FL_FAIL(msg)
 
#define FL_FAIL_CHECK(msg)
 
#define FL_GIVEN(name)
 
#define FL_INFO(msg)
 
#define FL_MESSAGE(msg)
 
#define FL_REQUIRE(expr)
 
#define FL_REQUIRE_ARRAY_EQ(actual, expected, arrsize)
 
#define FL_REQUIRE_CLOSE(a, b, epsilon)
 
#define FL_REQUIRE_EQ(lhs, rhs)
 
#define FL_REQUIRE_FALSE(expr)
 
#define FL_REQUIRE_GE(lhs, rhs)
 
#define FL_REQUIRE_GT(lhs, rhs)
 
#define FL_REQUIRE_LE(lhs, rhs)
 
#define FL_REQUIRE_LT(lhs, rhs)
 
#define FL_REQUIRE_MESSAGE(expr, msg)
 
#define FL_REQUIRE_NE(lhs, rhs)
 
#define FL_REQUIRE_NOTHROW(expr)
 
#define FL_REQUIRE_STR_CONTAINS(haystack, needle)
 
#define FL_REQUIRE_STR_EQ(a, b)
 
#define FL_REQUIRE_THROWS(expr)
 
#define FL_REQUIRE_THROWS_AS(expr, exType)
 
#define FL_REQUIRE_THROWS_WITH(expr, msg)
 
#define FL_RUN_ALL_TESTS_ARDUINO(serial_obj)
 
#define FL_SCENARIO(name)
 
#define FL_SKIP(reason)
 
#define FL_SUBCASE(name)
 
#define FL_TEST_CASE(name)
 
#define FL_TEST_CASE_FIXTURE(fixture, name)
 
#define FL_TEST_CASE_TEMPLATE(name, T, ...)
 
#define FL_TEST_CASE_TEMPLATE_APPLY(id, typelist)
 
#define FL_TEST_CASE_TEMPLATE_DEFINE(name, T, id)
 
#define FL_TEST_CASE_TEMPLATE_INVOKE(id, ...)
 
#define FL_TEST_SUITE(name)
 
#define FL_TEST_SUITE_BEGIN(name)
 
#define FL_TEST_SUITE_END()
 
#define FL_THEN(name)
 
#define FL_TYPE_TO_STRING(type, str)
 
#define FL_TYPE_TO_STRING_AS(str, type)
 
#define FL_WARN(expr)
 
#define FL_WARN_EQ(lhs, rhs)
 
#define FL_WARN_FALSE(expr)
 
#define FL_WARN_GE(lhs, rhs)
 
#define FL_WARN_GT(lhs, rhs)
 
#define FL_WARN_LE(lhs, rhs)
 
#define FL_WARN_LT(lhs, rhs)
 
#define FL_WARN_NE(lhs, rhs)
 
#define FL_WARN_NOTHROW(expr)
 
#define FL_WARN_THROWS(expr)
 
#define FL_WARN_THROWS_AS(expr, exType)
 
#define FL_WARN_THROWS_WITH(expr, msg)
 
#define FL_WHEN(name)
 
#define FLTEST_CAT(a, b)
 
#define FLTEST_CAT_IMPL(a, b)
 
#define FLTEST_EXCEPTIONS_ENABLED   0
 
#define FLTEST_MAX_SUBCASE_DEPTH   8
 
#define FLTEST_MAX_TEST_CASES   512
 
#define FLTEST_UNIQUE(x)
 

Typedefs

typedef fl::u32(* fl::test::GetMillisFunc) ()
 Callback type for getting current time in milliseconds Example: uint32_t getMillis() { return millis(); } // Arduino.
 
typedef void(* fl::test::SerialPrintFunc) (const char *msg)
 Type for the serial print function callback.
 
typedef bool(* fl::test::TimeoutHandlerFunc) (const char *testName, fl::u32 elapsedMs)
 Callback type for timeout handler Called when a test times out.
 

Functions

template<typename L, typename R, typename Cmp>
bool fl::test::binaryAssert (const L &lhs, const R &rhs, Cmp cmp, const char *lhsExpr, const char *op, const char *rhsExpr, const char *file, int line) FL_NOEXCEPT
 
const char *& fl::test::detail::currentSuiteName () FL_NOEXCEPT
 
void fl::test::fail (const char *msg, const char *file, int line, bool isFatal) FL_NOEXCEPT
 Helper for FAIL macros.
 
template<typename T>
fl::string fl::test::detail::getTypeName () FL_NOEXCEPT
 
fl::u32 fl::test::hashSubcaseSignature (const SubcaseSignature &sig) FL_NOEXCEPT
 
bool fl::test::isTestSkipped () FL_NOEXCEPT
 Check if current test has been marked as skipped.
 
fl::sstreamfl::test::operator<< (fl::sstream &os, const Approx &approx) FL_NOEXCEPT
 
void fl::test::outputCapture (const char *name, const char *value, const char *file, int line) FL_NOEXCEPT
 Helper to output CAPTURE variable.
 
void fl::test::outputMessage (const char *msg, const char *file, int line) FL_NOEXCEPT
 Helper to output INFO/MESSAGE during test execution.
 
void fl::test::skipTest (const char *reason, const char *file, int line) FL_NOEXCEPT
 Record that the current test should be skipped.
 

Class Documentation

◆ fl::test::detail::TypeList

struct fl::test::detail::TypeList

◆ fl::test::TestContext::TestCaseInfo

struct fl::test::TestContext::TestCaseInfo
+ Collaboration diagram for fl::test::TestContext::TestCaseInfo:
Class Members
const char * mFile
TestFunc mFunc
int mLine
string mName