pest/1.0.1

[brief]

pest is macro free otherwise simplistic c++17 unit testing

antibloat & turbo simplistic header only cxx unit testing & benchmarking thingy.

implemented this because a hackable solution for unit testing was needed not causing excessive compile times once you have more than one assertion.

pest includes a xoshiro prng and a zipfian distribution helper class:

requires

examples

unit tests ( using emptyspace::pest )

source file ...

#include <pest/pest.hxx>

namespace {

emptyspace::pest::suite basic( "pest self test", []( auto& test ) {
  using namespace emptyspace::pest;

  test( "true equal_to true", []( auto& expect ) {
    expect( true, equal_to( true ) );
  } );

  test( "vector<> equal_to initializer_list<>", []( auto& expect ) {
    auto const inputs = std::vector<int>{ 3, 4, 7 };
    expect( inputs, equal_to( { 3, 4, 7 } ) );
  } );
} );

} // namespace

int main() {
  basic( std::clog );
  return 0;
}

... and example output

# assuming the example from above is in `example.cxx`
pest $ clang++10 -I. -std=c++17 example.cxx -o ex
pest $ ./ex
[suite <pest self test> | true equal_to true]
[suite <pest self test> | vector<> equal_to initializer_list<>]
[suite <pest self test> | summary]
  total assertions failed = 0
  total assertions pass = 2
  total assertions skipped = 0
  total uncaught exceptions = 0
  total tests = 2

benchmarks ( using emptyspace::pnch )

suppose we want to benchmark the strftime function ...

#include <pest/pnch.hxx>
#include <ctime>

int main() {
  emptyspace::pnch::config cfg;
  std::size_t n = 0;
  char buffer[128];
  cfg.run(
         "strftime",
         [&]() {
           auto stamp1 = std::chrono::system_clock::now();
           auto epoch = std::chrono::system_clock::to_time_t( stamp1 );
           auto gmtime = std::gmtime( &epoch );
           n += std::strftime( buffer, 64, "%Y.%m.%d:%T.", gmtime );
         } )
      .touch( n )
      .report_to( std::cerr );
      
  return n > 0;
}

... could lead to the following output

[benchmark | strftime]
  stats/total = 2.27702e+09
  stats/average = 990.007
  stats/stddev = 7.18419

development & packaging

build2 is used for life cycle management. for using without build2 just drop the header into your project.

cloning the repository and running the test driver test/unit/driver.cxx

$ git clone https://github.com/stackless-goto/pest
$ cd pest
$ bdep init -C @clang10 cc config.cxx=clang++10
$ bdep test
test tests/unit/testscript{testscript}@../pest-clang10/pest/tests/unit/ ../pest-clang10/pest/tests/unit/exe{driver}

declaring pest as dependency in a build2 project:

TODO

references

similar libraries. might be better suited ...

unit test helpers

benchmark helpers

mirrors

license

choose between UNLICENSE or LICENSE freely. zipfian and xoshiro are derived work and therefore -- as indicated in the corresponding source files -- MIT licensed.

support and blame-game

magenbluten < mb [at] 64k.by > :: https://64k.by

version 1.0.1
license public domain
repository https://pkg.cppget.org/1/stable
download pest-1.0.1.tar.gz
sha256 cc4e2c83c78cd5d86d6412c6cc29558e17304f2b93728978719da6a9d42d9fde
project pest
url hub.darcs.net/magenbluten/pest

Requires (1)

c++17

Reviews

fail 0
pass 1

Builds

toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-static_O3
timestamp 2026-04-03 02:58:28 UTC (05:14:44 hours ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14
timestamp 2026-04-03 02:56:51 UTC (05:16:21 hours ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-ndebug_O3
timestamp 2026-04-03 02:56:09 UTC (05:17:03 hours ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-O3
timestamp 2026-04-03 02:50:27 UTC (05:22:45 hours ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-static_O3
timestamp 2026-04-02 22:03:02 UTC (10:10:10 hours ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-O3
timestamp 2026-04-02 22:02:32 UTC (10:10:40 hours ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18_libc++
timestamp 2026-04-02 22:02:26 UTC (10:10:46 hours ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18-static_O3
timestamp 2026-04-02 22:01:59 UTC (10:11:13 hours ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18-O3
timestamp 2026-04-02 22:01:52 UTC (10:11:20 hours ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18
timestamp 2026-04-02 22:01:17 UTC (10:11:55 hours ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-apple-darwin22.5.0
tgt config macos_13-clang_15.0
timestamp 2026-04-02 21:35:06 UTC (10:38:06 hours ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_fedora_39-gcc_13-bindist
timestamp 2026-04-02 21:34:18 UTC (10:38:54 hours ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-static_O3
timestamp 2026-04-02 12:38:45 UTC (19:34:27 hours ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-O3
timestamp 2026-04-02 12:36:37 UTC (19:36:35 hours ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++
timestamp 2026-04-02 12:35:11 UTC (19:38:01 hours ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18-O3
timestamp 2026-04-02 12:34:41 UTC (19:38:31 hours ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18-static_O3
timestamp 2026-04-02 12:33:50 UTC (19:39:22 hours ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18
timestamp 2026-04-02 12:33:08 UTC (19:40:04 hours ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew-static_O3
timestamp 2026-04-02 06:54:25 UTC (01 01:18:47 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew-O3
timestamp 2026-04-02 06:53:41 UTC (01 01:19:31 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew
timestamp 2026-04-02 06:52:59 UTC (01 01:20:13 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_18_llvm_msvc_17.10-static_O2
timestamp 2026-03-31 10:29:59 UTC (02 21:43:13 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_18_llvm_msvc_17.10-O2
timestamp 2026-03-31 10:29:20 UTC (02 21:43:52 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_18_llvm_msvc_17.10
timestamp 2026-03-31 10:27:53 UTC (02 21:45:19 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_12-bindist
timestamp 2026-03-31 10:26:08 UTC (02 21:47:04 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-w64-mingw32
tgt config windows_10-gcc_13.2_mingw_w64
timestamp 2026-03-31 10:24:55 UTC (02 21:48:17 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-w64-mingw32
tgt config windows_10-gcc_13.2_mingw_w64-static_O2
timestamp 2026-03-31 10:24:23 UTC (02 21:48:49 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-w64-mingw32
tgt config windows_10-gcc_13.2_mingw_w64-O2
timestamp 2026-03-31 10:23:30 UTC (02 21:49:42 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_ubuntu_24.04-gcc_13-bindist
timestamp 2026-03-31 10:19:40 UTC (02 21:53:32 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14-O3
timestamp 2026-03-31 10:19:35 UTC (02 21:53:37 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14-static_O3
timestamp 2026-03-31 10:19:01 UTC (02 21:54:11 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-freebsd14.1
tgt config freebsd_14-clang_18-static_O3
timestamp 2026-03-31 10:18:42 UTC (02 21:54:30 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14
timestamp 2026-03-31 10:18:35 UTC (02 21:54:37 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14-ndebug_O3
timestamp 2026-03-31 10:18:35 UTC (02 21:54:37 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-freebsd14.1
tgt config freebsd_14-clang_18
timestamp 2026-03-31 10:17:31 UTC (02 21:55:42 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-freebsd14.1
tgt config freebsd_14-clang_18-O3
timestamp 2026-03-31 10:17:18 UTC (02 21:55:54 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-freebsd13.3
tgt config freebsd_13-clang_17
timestamp 2026-03-31 10:17:13 UTC (02 21:55:59 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_17_libc++
timestamp 2026-03-31 10:14:18 UTC (02 21:58:54 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_13.1
timestamp 2026-03-31 10:12:57 UTC (02 22:00:15 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_17
timestamp 2026-03-31 10:12:50 UTC (02 22:00:22 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-linux-gnu
tgt config linux_fedora_40-gcc_14-bindist
timestamp 2026-03-27 10:18:47 UTC (06 21:54:25 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_13
timestamp 2026-03-27 10:03:04 UTC (06 22:10:08 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.10
timestamp 2026-03-20 10:07:28 UTC (13 22:05:44 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.10-static_O2
timestamp 2026-03-20 10:07:28 UTC (13 22:05:45 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.10-O2
timestamp 2026-03-20 10:07:02 UTC (13 22:06:10 days ago)
result error (update) | log | rebuild
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_17
result unbuilt
toolchain public-0.17.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_17_libc++
result unbuilt
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0
result unbuilt
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0-O3
result unbuilt
toolchain public-0.17.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0-static_O3
result unbuilt
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_17_msvc_msvc_17.10
result unbuilt
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.8
result unbuilt
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.8-O2
result unbuilt
toolchain public-0.17.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.8-static_O2
result unbuilt
toolchain queue-0.18.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_17
result unbuilt
toolchain queue-0.18.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_17_libc++
result unbuilt
toolchain queue-0.18.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18
result unbuilt
toolchain queue-0.18.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18-O3
result unbuilt
toolchain queue-0.18.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18-static_O3
result unbuilt
toolchain queue-0.18.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++
result unbuilt
toolchain queue-0.18.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-O3
result unbuilt
toolchain queue-0.18.0
target aarch64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-static_O3
result unbuilt
toolchain queue-0.18.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_13
result unbuilt
toolchain queue-0.18.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14
result unbuilt
toolchain queue-0.18.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-O3
result unbuilt
toolchain queue-0.18.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-ndebug_O3
result unbuilt
toolchain queue-0.18.0
target aarch64-linux-gnu
tgt config linux_debian_12-gcc_14-static_O3
result unbuilt
toolchain queue-0.18.0
target x86_64-freebsd13.3
tgt config freebsd_13-clang_17
result unbuilt
toolchain queue-0.18.0
target x86_64-freebsd14.1
tgt config freebsd_14-clang_18
result unbuilt
toolchain queue-0.18.0
target x86_64-freebsd14.1
tgt config freebsd_14-clang_18-O3
result unbuilt
toolchain queue-0.18.0
target x86_64-freebsd14.1
tgt config freebsd_14-clang_18-static_O3
result unbuilt
toolchain queue-0.18.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_17
result unbuilt
toolchain queue-0.18.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_17_libc++
result unbuilt
toolchain queue-0.18.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18
result unbuilt
toolchain queue-0.18.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18-O3
result unbuilt
toolchain queue-0.18.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18-static_O3
result unbuilt
toolchain queue-0.18.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18_libc++
result unbuilt
toolchain queue-0.18.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-O3
result unbuilt
toolchain queue-0.18.0
target x86_64-linux-gnu
tgt config linux_debian_12-clang_18_libc++-static_O3
result unbuilt
toolchain queue-0.18.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_12-bindist
result unbuilt
toolchain queue-0.18.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_13.1
result unbuilt
toolchain queue-0.18.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14
result unbuilt
toolchain queue-0.18.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14-O3
result unbuilt
toolchain queue-0.18.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14-ndebug_O3
result unbuilt
toolchain queue-0.18.0
target x86_64-linux-gnu
tgt config linux_debian_12-gcc_14-static_O3
result unbuilt
toolchain queue-0.18.0
target x86_64-linux-gnu
tgt config linux_fedora_39-gcc_13-bindist
result unbuilt
toolchain queue-0.18.0
target x86_64-linux-gnu
tgt config linux_fedora_40-gcc_14-bindist
result unbuilt
toolchain queue-0.18.0
target x86_64-linux-gnu
tgt config linux_ubuntu_24.04-gcc_13-bindist
result unbuilt
toolchain queue-0.18.0
target x86_64-apple-darwin22.5.0
tgt config macos_13-clang_15.0
result unbuilt
toolchain queue-0.18.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0
result unbuilt
toolchain queue-0.18.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0-O3
result unbuilt
toolchain queue-0.18.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-clang_15.0-static_O3
result unbuilt
toolchain queue-0.18.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew
result unbuilt
toolchain queue-0.18.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew-O3
result unbuilt
toolchain queue-0.18.0
target x86_64-apple-darwin23.5.0
tgt config macos_14-gcc_14_homebrew-static_O3
result unbuilt
toolchain queue-0.18.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_17_msvc_msvc_17.10
result unbuilt
toolchain queue-0.18.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_18_llvm_msvc_17.10
result unbuilt
toolchain queue-0.18.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_18_llvm_msvc_17.10-O2
result unbuilt
toolchain queue-0.18.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-clang_18_llvm_msvc_17.10-static_O2
result unbuilt
toolchain queue-0.18.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.10
result unbuilt
toolchain queue-0.18.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.10-O2
result unbuilt
toolchain queue-0.18.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.10-static_O2
result unbuilt
toolchain queue-0.18.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.8
result unbuilt
toolchain queue-0.18.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.8-O2
result unbuilt
toolchain queue-0.18.0
target x86_64-microsoft-win32-msvc14.3
tgt config windows_10-msvc_17.8-static_O2
result unbuilt
toolchain queue-0.18.0
target x86_64-w64-mingw32
tgt config windows_10-gcc_13.2_mingw_w64
result unbuilt
toolchain queue-0.18.0
target x86_64-w64-mingw32
tgt config windows_10-gcc_13.2_mingw_w64-O2
result unbuilt
toolchain queue-0.18.0
target x86_64-w64-mingw32
tgt config windows_10-gcc_13.2_mingw_w64-static_O2
result unbuilt