c++ testing framework

Overview

AppVeyor Build status Azure Pipelines Build Status Bitrise iOS Build Status Buddy branch CircleCI Cirrus Build Status Codefresh build status Codeship Status for srz-zumix/iutest Drone Build Status GitHub Actions Status GitLab CI pipeline status Peakflow Build Status RazorOps Build Status Scrutinizer Build Status Semaphore Build Status Semaphore 2.0 Build Status Shippable Run Status Travis-CI Build Status Wercker status

Codacy Badge Language grade: C/C++ Language grade: Python Codecov Coveralls Coverage Status Coverity Scan Build Status GuardRails badge GitHub Actions reviewdog Status
New(3-clause) BSD License NuGet version
support

iutest

iutest - iris unit test framework

Welcome to the iutest

iutest is framework for writing C++ tests.

Features

  • An XUnit test framework.
  • Header only, no external dependencies.
  • Test discovery.
  • XML/JUnit test report generation.
  • Assertions.
    • A rich set of assertions.
    • User-defined assertions.
    • Power-assert (expression-assert).
    • Matchers.
    • Fatal and non-fatal, warning, assume failures.
  • Value-parameterized tests.
  • Type-parameterized tests.
  • Advanced parameter generation.
    • Pairwise parameter.
    • CSV parameter.
    • Any parameter.
    • Random parameter.
    • Multiple parameters can be concatenated.
  • Test packages (grouping).
  • Skip test.
  • Private member test.
  • Japanese test name (C++03).
  • Various options for running the tests.
  • Compatible with Google Test. (1.5 or later)

Platforms

  • Windows
  • Linux
  • MacOS
  • FreeBSD
  • Cygwin
  • MinGW

Compiler

  • VC++6~
  • GCC 3.4.6~
  • Clang 3.1~
  • Intel Compiler
  • Zapcc

Documentation

Project page

Support

Tools

  • fused
    make fused-src.
  • Twilio
    notifies the test results using Twilio
  • Wandbox (deprecated) tools to make use of the iutest in Wandbox

Tests

CI master develop Tests
AppVeyor AppVeyor Build status AppVeyor Build status Windows, Visual Studio, Cygwin, MINGW, NuGet, Visual Studio PREFAST (Code Analysis)
Azure Pipelines Build Status Build Status Config matrix test, Visual Studio build option matrix
Bitrise Bitrise iOS Build Status Bitrise iOS Build Status iOS
Bitrise Android Build Status Bitrise Android Build Status Android
Buddy buddy branch buddy branch benchmark test
Circle CI CircleCI CircleCI Basic test with opmimize options
Cirrus CI Cirrus Build Status Cirrus Build Status g++/clang std=c++14,17.. Basic tests, FreeBSD Basic tests
Codacy Codacy Badge Codacy Badge Shellcheck, Cppcheck, PyLint, etc...
Codefresh Codefresh build status Codefresh build status Build tools/docker/Dockerfile, Benchmark test, Gcc 8/9 basic test
Codeship Codeship Status for srz-zumix/iutest Codeship Status for srz-zumix/iutest Check coding standard of the project
Coverity Scan Coverity Scan Build Status Coverity Scan
Drone Cloud Drone Build Status Build Status gcc/clang each version Basic test
GitHub Actions GitHub Actions Status GitHub Actions Status Basic test (Windows LLVM clang and mingw and zapcc), EditorConfig Lint, Include What You Use, arm-none-eabi-gcc build
GitHub Actions - Google Test Compatible GitHub ActionsGoogle Test Compatible Build Status Google Test/Mock compatible test for released versions
GitHub Actions - reviewdog GitHub Actions Reviewdog Status Reviewdog (shellcheck, cpplint)
GitHub Actions - Update GitHubPages Update GitHubPages Status Update documents
GitLab CI GitLab CI pipeline status GitLab CI pipeline status Google Test/Google Mock compatibility (HEAD)
JFrog Pipelines CentOS gcc/clang Baisc test
Peakflow Peakflow Build Status Peakflow Build Status fused-src tests
Razorops RazorOps Build Status RazorOps Build Status gcc3 Basic test
Scrutinizer Scrutinizer Build Status Scrutinizer Build Status iuwandbox tests
Semaphore Semaphore Build Status Semaphore Build Status Scan-build
Semaphore 2.0 Semaphore 2.0 Build Status Semaphore 2.0 Build Status Scan-build, Basic test, sample run
Travis CI Travis-CI Build Status Travis-CI Build Status Basic tests, Coverity-scan
Wercker wercker status wercker status test/cmake project check, iuwandbox make build

Basic test

Compiler and OS tests status

Coverage

Coveralls Coverage Status

Codecov
Codecov

Contributing change

Please read the CONTRIBUTING.md for details on how to contribute to this project.

License

Copyright (c) 2011-2021, Takazumi Shirayanagi,
All rights reserved.

This software is released under the New(3-clause) BSD License, see LICENSE

If you distribute iutest, you might enjoy the [LICENSE-MIXING](docs/LICENSE-MIXING) document.
Comments
  • iuwandbox: -fオプションのパーサーはスペースを\nに置換するべきではないか

    iuwandbox: -fオプションのパーサーはスペースを\nに置換するべきではないか

    -fオプションで -f"-O2 -DNO_RDSEED" のように渡すと

    compiler_message:
    cc1plus: error: argument to '-O' should be a non-negative integer, 'g', 's' or 'fast'
    cc1plus: error: argument to '-O' should be a non-negative integer, 'g', 's' or 'fast'
    cc1plus: error: argument to '-O' should be a non-negative integer, 'g', 's' or 'fast'
    cc1plus: error: argument to '-O' should be a non-negative integer, 'g', 's' or 'fast'
    cc1plus: error: argument to '-O' should be a non-negative integer, 'g', 's' or 'fast'
    

    のように怒られる。

    ex.) http://melpon.org/wandbox/permlink/LA263I1vQuyfMqlE

    つまりspaceを\nに置換する必要がある。

    ただ、(ほとんど指定することないけど)-x c++みたいなオプションもあるので置換が面倒そう。

    iuwandbox 
    opened by yumetodo 8
  • msys2 mingw clangでコンパイルエラー

    msys2 mingw clangでコンパイルエラー

    $ make Debug CXX=clang++
    clang++ test.cpp -o test.out -g -O0 -Wall -Wextra -std=c++14
    In file included from test.cpp:6:
    In file included from ./../iutest/include/iutest.hpp:23:
    In file included from ./../iutest/include/iutest_core.hpp:20:
    In file included from ./../iutest/include/internal/iutest_result_reporter.hpp:20:
    In file included from ./../iutest/include/internal/iutest_core_impl.hpp:20:
    In file included from ./../iutest/include/internal/iutest_internal.hpp:20:
    In file included from ./../iutest/include/internal/../iutest_pred.hpp:20:
    In file included from ./../iutest/include/iutest_assertion.hpp:20:
    In file included from ./../iutest/include/iutest_result.hpp:20:
    In file included from ./../iutest/include/internal/iutest_message.hpp:20:
    In file included from ./../iutest/include/internal/../iutest_env.hpp:20:
    In file included from ./../iutest/include/internal/../impl/../internal/iutest_charcode.hpp:194:
    In file included from ./../iutest/include/internal/../impl/iutest_charcode.ipp:22:
    D:\msys64\mingw32\i686-w64-mingw32\include\uchar.h:34:24: error: cannot combine with previous 'type-name' declaration specifier
    typedef uint_least16_t char16_t;
                           ^
    D:\msys64\mingw32\i686-w64-mingw32\include\uchar.h:35:24: error: cannot combine with previous 'type-name' declaration specifier
    typedef uint_least32_t char32_t;
                           ^
    2 errors generated.
    make: *** [Makefile:30: test.out] エラー 1
    

    原因は./include/impl/iutest_charcode.ipp

    // include
    #include "../internal/iutest_charcode.hpp"
    #if IUTEST_HAS_HDR_UCHAR
    #  include <uchar.h>
    #endif
    

    のようにuchar.hがincludeされているため。msys2 mingw gccでは発生しない。

    再現手順

    1. http://sourceforge.net/projects/msys2/files/Base/ よりmsys2-base-[アーキテクチャ]-[日付].tar.xzをDLし展開する
    2. msys2_shell.cmdをダブルクリック、Close Windowと言われたらばってんを押して閉じる
    3. 再びmsys2_shell.cmdをダブルクリック、pacman -Syuuと打ち実行、また閉じる
    4. 再びmsys2_shell.cmdをダブルクリック、pacman -S git mingw-w64-i686-clang mingw-w64-x86_64-clangとと打ち実行、また閉じる
    5. コマンドプロンプトでmsys2_shell.cmdのあるパスに移動し、call msys2_shell.cmd -mingw64(64bit向けのコンパイル)またはcall msys2_shell.cmd -mingw32(32bit向けのコンパイル)を実行
    $ git clone https://github.com/yumetodo/string_split.git
    $ git submodule update --init
    $ make Debug CXX=clang++
    
    opened by yumetodo 8
  • osdnのほうのドキュメントページについて

    osdnのほうのドキュメントページについて

    iutestのドキュメントのWebページは大きく分けて

    • http://iutest.osdn.jp/doc/
    • https://srz-zumix.github.io/iutest/

    の2つがあり、Github Pagesのほうのみが更新されていると把握しています(レポジトリそのものは双方更新が続いていることは把握しています)。

    下に2020/04/28 23:54にGoogleでiutestで検索したときの結果を示します。 image

    まず最初にosdnのレポのページが出てきて、次にosdnにあるドキュメントページの入門が出てきて、3番目にGithub Pagesが出てきます(~~4番目私のQiitaの記事だ・・・~~)。

    下に2020/04/28 23:58にBingでiutestで検索したときの結果を示します。 image

    1,2番目は変わらず、3番目はGithub Pagesのiuwandboxのページです。

    このように、Github Pagesで公開されているドキュメントよりも、更新されていないosdnのページが上位に来る状態にあります。

    また、このプロジェクトのREADME.mdには

    Documentation
    --------------------------------------------------
    
    * in repository  
      doc/index.html  
    * online document  
      [least released version(OSDN)](http://iutest.osdn.jp/doc/index.html)  
      [GitHub master branch (gh-pages)](http://srz-zumix.github.io/iutest/)  
    

    のように記載されているのですが、least released version(OSDN)という文言に反して2017年で更新が止まっています。

    したがって3つの選択肢を提案します。

    1. least released versionのドキュメント公開をやめてosdnで公開しているドキュメントページからはJavaScriptなどでリダイレクトを掛ける(Googleの検索評価を引き継げます)
    2. osdnで公開しているドキュメントページの更新を再開する
    3. github pagesでleast released versionとmaster追従しているドキュメントをどちらも公開する(https://docs.opencv.org/ のようにdirectoryを分けるなどして実現)
    feature 
    opened by yumetodo 7
  • 各CI向けのブランチフィルタ対応

    各CI向けのブランチフィルタ対応

    |service|branch filter|PR|comment| |:--|:--|:--|:--| | AppVeyor| [x] | [x] | | | Azure Pipelines| [x] | [x] | | | Bitrise | [x] | [x] | | | Buddy | [x] | [ ] | PR は実行されなくて ok| | Circle CI | [x] | [ ] | | | Cirrus CI | [x] | [x] | | | Codefresh | [x] | [x] | | | Codeship | [ ] | [ ] | 今回は見送り| | GitLab CI | [ ] | [ ] | 対象外| | INSPECODE | [x ] | [x] | | | Scrutinizer | [x] | [ ] | | | Semaphore | [x] | [ ] | | | Shippable | [x] | [x] | | | Travis CI | [x] | [x] | | | Wercker | [ ] | [ ] | 今回は見送り|

    CI 
    opened by srz-zumix 7
  • warning C4267(UTF8ToSJIS): size_tからintへの変換

    warning C4267(UTF8ToSJIS): size_tからintへの変換

    iutest_charcode.ippiutest::detail::UTF8ToSJIS関数にて。

    MultiByteToWideCharの第4引数にsize_t型の値を渡しているが、要求されているのはint型なので

    warning C4267: '引数': 'size_t' から 'int' に変換しました。データが失われているかもしれません。
    

    という警告が出る。

    opened by yumetodo 7
  • iuwandbox.py : --expand_includeしない場合について

    iuwandbox.py : --expand_includeしない場合について

    現在--expand_includeする場合はmake_code関数が再帰処理するので確実にヘッダーファイルをコンパイルできるが、しない場合はそれができない。

    たとえば

    #include "../include/string_split.hpp"
    

    とあったとして、現状ではこのヘッダーはwandboxに送られるものの、パスが違うのでincludeに失敗します。

    現状の--expand_includeしない場合のルーチンは

    1. make_code関数が呼ばれる
    2. #includeを見つける
    3. 存在すればファイルパスを記録
    4. setup_includes関数でファイルを開く

    となっていますが、これではincludeしているヘッダーからincludeしているファイルを追加できないのでまずいです。

    includeしているヘッダーからincludeしていない場合は

    #ifdef __WANDBOX__
    #include "string_split.hpp"
    #else
    #include "../include/string_split.hpp"
    #endif
    

    のように対処できたりしますが。

    --expand_includeすればいいだろ、という話は有りますが。

    opened by yumetodo 7
  • iuwandbox.pyはpython3では使えないのか?

    iuwandbox.pyはpython3では使えないのか?

    現在 https://github.com/yumetodo/string_split でiutest+shippableを利用しています。

    iuwandbox.py ../../../test/test.cpp --boost nothing --default --encode utf-8-sig
    

    のように--boostを利用すると動きません。

    D:\user\documents\git\string_split\iutest\tools\wandbox>iuwandbox.py ../../../te
    st/test.cpp --boost 1.60 --default --encoding utf-8-sig -s
    Traceback (most recent call last):
      File "D:\user\documents\git\string_split\iutest\tools\wandbox\iuwandbox.py", l
    ine 395, in <module>
        main()
      File "D:\user\documents\git\string_split\iutest\tools\wandbox\iuwandbox.py", l
    ine 392, in main
        run(options)
      File "D:\user\documents\git\string_split\iutest\tools\wandbox\iuwandbox.py", l
    ine 300, in run
        r = run_wandbox(code, includes, options)
      File "D:\user\documents\git\string_split\iutest\tools\wandbox\iuwandbox.py", l
    ine 205, in run_wandbox
        opt.append('boost-' + options.boost)
    AttributeError: 'filter' object has no attribute 'append'
    

    環境

    Windows 7 64bit python 3.4.4(x86)

    D:\user\documents\git\string_split\iutest\tools\wandbox>pip list
    cycler (0.10.0)
    matplotlib (1.5.0)
    numpy (1.10.2)
    pip (8.0.2)
    pyparsing (2.1.0)
    python-dateutil (2.4.2)
    pytz (2015.7)
    requests (2.10.0)
    scipy (0.16.1)
    setuptools (20.1.1)
    six (1.10.0)
    wheel (0.29.0)
    You are using pip version 8.0.2, however version 8.1.2 is available.
    You should consider upgrading via the 'python -m pip install --upgrade pip' comm
    and.
    
    opened by yumetodo 6
  • テスト数 0 の場合の xml 出力について

    テスト数 0 の場合の xml 出力について

    [warning]Invalid results file. Make sure the result format of the file '/home/vsts/work/1/s/test/gtest_version_tests.xml' matches 'JUnit' test results format.

    https://dev.azure.com/srz-zumix/iutest/_build/results?buildId=177&view=logs

    0 の場合 testsuites を出力しているものの、Azure Pipelines で warning になっていた。 0 の場合のフォーマットを確認する

    bug 
    opened by srz-zumix 5
  • fix: avoid deprecated special function call

    fix: avoid deprecated special function call

    when copy ctor/assign op is user-provided, calling copy assign op/ctor is deprecated in C++11 or later.

    ref:

    • http://d.hatena.ne.jp/yohhoy/20140704/p1
    opened by yumetodo 5
  • CRLF混入

    CRLF混入

    v1.16.2からv1.16.3にあげようとしたところ、

    $git config --global core.autocrlf
    false
    
    $git config --local core.autocrlf
    
    $git submodule update --init
    Submodule path 'iutest': checked out '3b7ebd720cc22e4d25996ef1133118a729b65730'
    
    $cd iutest
    
    $git checkout v1.16.2
    Previous HEAD position was 3b7ebd7... update tox.ini
    HEAD is now at 6e307aa... version 1.16.2
    
    $ cd ..
    
    $git submodule status
    +6e307aa60b6f620933d4597febcef04d6a778177 iutest (v1.16.2)
    
    $cd iutest
    
    $git checkout v1.16.3
    Previous HEAD position was 6e307aa... version 1.16.2
    HEAD is now at 8c65397... version 1.6.3
    warning: CRLF will be replaced by LF in .gitignore.
    The file will have its original line endings in your working directory.
    
    $git status
    HEAD detached at v1.16.3
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
            modified:   .gitignore
            modified:   CHANGES
            modified:   LICENSE
            modified:   docs/.gitignore
            modified:   projects/cmake/CMakeLists.txt
            modified:   projects/nuget/iutest.nuspec
            modified:   test/.gitignore
    
    no changes added to commit (use "git add" and/or "git commit -a")
    warning: CRLF will be replaced by LF in .gitignore.
    The file will have its original line endings in your working directory.
    

    のようになる。CRLFが混入しているのではないか?

    opened by yumetodo 5
  • AppVeyor ジョブの削減

    AppVeyor ジョブの削減

    Webhook をジョブの数だけ消費するので減らしたい

    • iutest
    • iutest_menu
    • iutest_prefast
    • iutest_nuget_deploy
    • iutest_package

    これを

    • iutest
      • iutest_menu
      • iutest_prefast
      • iutest_package (テスト)
    • iutest_deploy
      • iutest_nuget_deploy
      • iutest_package

    くらいにまとめたい

    CI 
    opened by srz-zumix 4
  • Cpp Core Check

    Cpp Core Check

    C++ Core Guidelines checkers

    • [x] C26400: Do not assign the result of an allocation or a function call with an owner return value to a raw pointer, use owner instead (i.11).
    • [x] C26401: Do not delete a raw pointer that is not an owner (i.11).
    • [x] C26403: Reset or explicitly delete an owner pointer 'xxx' (r.3).
    • [x] C26405: Do not assign to an owner which may be in valid state (r.3).
      • 26400,26403,26405 は RAII で解放を保証できるものは修正
      • それ以外は除外
    • [x] C26409: Avoid calling new and delete explicitly, use std::make_unique instead (r.11).
      • C++03 対応のため対応が面倒なので対応しない
    • [x] C26426: Global initializer calls a non-constexpr function 'XXX' (i.22).
      • 対応しないので除外
    • [x] C26429: Symbol 'xxx' is never tested for nullness, it can be marked as not_null (f.23).
      • 許容するので警告は除外
    • [x] C26432: If you define or delete any default operation in the type 'class XXX', define or delete them all (c.21).
      • メンドクサイので対応しない
    • [x] C26435: Function 'XXX' should specify exactly one of 'virtual', 'override', or 'final' (c.128).
      • override がないころは virtual は override してますよという意図を示すのに使っていた
      • IUTEST_CXX_OVERRIDE マクロでその意図は示すことは可能だが変えることにメリットを感じないので除外する
    • [x] C26434: Function 'YYY::XXX' hides a non-virtual function 'ZZZ::XXX'.
    • [x] C26436: The type 'class YYY' with a virtual function needs either public virtual or protected non-virtual destructor (c.35).
    • [x] C26440: Function 'XXX' can be declared 'noexcept' (f.6).
    • [x] C26446: Prefer to use gsl::at() instead of unchecked subscript operator (bounds.4).
      • at が使えるところは変更
      • それ以外は gsl::at 相当のものを使用
    • [x] C26447: The function is declared 'noexcept' but calls function 'XXX' which may throw exceptions (f.6).
      • ちゃんと直すことにする
    • [x] C26455: Default constructor may not throw. Declare it 'noexcept' (f.6).
    • [x] C26461: The pointer argument 'xxx' for function 'XXX' can be marked as a pointer to const (con.3).
    • [x] C26466: Don't use static_cast downcasts. A cast from a polymorphic type should use dynamic_cast (type.2).
      • dynamic_cast は使わないので suppress
      • 設計の問題のヒントになりうるので警告は除外しない
    • [x] C26472: Don't use a static_cast for arithmetic conversions. Use brace initialization, gsl::narrow_cast or gsl::narrow (type.1).
      • gsl::narrow 相当に対応したら消す
      • それまでは除外
    • [x] C26473: Don't cast between pointer types where the source type and the target type are the same (type.1).
    • [x] C26477: Use 'nullptr' rather than 0 or NULL (es.47).
      • テスト・サンプルソースは除外
    • [ ] C26481: Don't use pointer arithmetic. Use span instead (bounds.1).
      • #633 で対応するので一旦除外
    • [x] C26482: Only index into arrays using constant expressions (bounds.2).
      • ignore
    • [ ] C26485: Expression 'func': No array to pointer decay (bounds.3).
      • #633 で対応するので一旦除外
    • [x] C26492: Don't use const_cast to cast away const or volatile (type.3).
      • va_start が誤検知するのを抑止
    • [x] C26493: Don't use C-style casts (type.4).
    • [x] C26494: Variable 'XXX' is uninitialized. Always initialize an object (type.5).
    • [x] C26495: Variable 'XXX::YYY' is uninitialized. Always initialize a member variable (type.6).
    • [x] C26496: The variable 'XXX' does not change after construction, mark it as const (con.4).
    • [x] C26497: You can attempt to make 'XXX' constexpr unless it contains any undefined behavior (f.4).
      • テスト・サンプルソースは除外
    • [x] C26814: The const variable 'XXX' can be computed at compile-time. Consider using constexpr (con.5).
      • テスト・サンプルソースは除外
    • [x] C26818: Switch statement does not cover all cases. Consider adding a 'default' label (es.79).
      • 誤検知だったので SUPPRESS
    • [x] C26826: Don't use C-style variable arguments (f.55).
      • C++03 サポートするので対応しない。
    CI AppVeyor 
    opened by srz-zumix 121
Releases(v1.17.1)
  • v1.17.1(Jul 26, 2020)

    • New

      • GTEST_SKIP 対応
      • IUTEST_*_NE_RANGE アサーションを追加
      • IUTEST_*_NE_COLLECTIONS アサーションを追加
    • Improved

      • ::std::wstring_view / ::std::u16string_view / ::std::u32string_view 対応
      • Variadic Templates 非対応コンパイラーでの型パラメータの型表示を改善
    • Changes

      • アサーションに operator << したときの出力を PrintToString したものと同じになるように変更
      • iuwandbox: Wandbox 向けにサイズ圧縮したヘッダーをデフォルトで使用するように変更
      • iuwandbox: 上記に伴いフルバージョンのヘッダーを使うオプション(--no-iutest-use-wandbox-min)を追加
      • deprecated: iuwandbox: --iutest-use-wandbox-min
      • Python2 のサポート終了
    • Bug fixes

      • C++20 で削除された basic_ostream::operator << に対応
      • IUTEST_AP が同じ名前空間に複数定義できない問題を修正
      • Google Test 旧バージョンとの互換性を修正
      • その他いくつかの不具合を修正
    Source code(tar.gz)
    Source code(zip)
  • v1.17.0(Nov 12, 2019)

    • New

      • ::std::string_view 対応
      • ::std::filesystem 対応
      • FreeBSD 対応
      • ALMOST_EQ アサーション を追加
      • --iutest_locale_ctype オプションを追加
    • Improved

      • setlocale(LC_CTYPE, IUTEST_FLAG(locale_ctype)) をテスト実行開始時に行うように修正
      • Visual Studio 2019 対応
    • Changes

      • 大きな配列/コンテナ/オブジェクトの pinter を修正
      • iutest_main で setlocale していたものを廃止
      • junit xml 出力で出力するテストが 0 だった場合にファイル書き出ししないように修正
      • CSV パラメータ生成でファイルオープン失敗した場合の警告レベルを FATAL から WARNING に変更
      • CSV パラメータ生成で要素がなかった場合に WARNING 出力
      • deprecated: IUTEST_USE_OWN_LIST
    • Bug fixes

      • いくつかの不具合を修正
    Source code(tar.gz)
    Source code(zip)
  • v1.16.7(Oct 25, 2018)

    • Improved

      • iuwandbox: コードサイズをさらに削減したヘッダーファイルに対応(--iutest-use-wandbox-min)
    • Bug fixes

      • 古い google mock の互換性エラー修正
      • いくつかの不具合を修正
    Source code(tar.gz)
    Source code(zip)
  • v1.16.6(Sep 19, 2018)

    • Improved

      • Matcher に (NanSensitive)FloatNear/DoubleNear を追加
      • Matcher に template 版の浮動小数点数比較を追加・(NanSensitive)FloatingPointEq/FloatingPointNear
      • long double に対応
    • Changes

      • iuwandbox: -D__WANDBOX__ コンパイラーオプションを必ずつけるように変更
    • Bug fixes

      • iuwandbox: dryrun オプションが失敗を返す問題を修正
      • いくつかのコンパイラー警告を修正
    Source code(tar.gz)
    Source code(zip)
The fastest feature-rich C++11/14/17/20 single-header testing framework

master branch Windows All dev branch Windows All doctest is a new C++ testing framework but is by far the fastest both in compile times (by orders of

Viktor Kirilov 4.5k Jan 4, 2023
Googletest - Google Testing and Mocking Framework

GoogleTest OSS Builds Status Announcements Release 1.10.x Release 1.10.x is now available. Coming Soon Post 1.10.x googletest will follow Abseil Live

Google 28.8k Jan 9, 2023
C++ xUnit-like testing framework without macros

tst C++ testing framework. Installation, documentation, tutorials See WiKi. Features xUnit-like concepts minimal use of preprocessor macros declarativ

cppfw 9 Sep 26, 2022
c++ testing framework

iutest iutest - iris unit test framework Welcome to the iutest iutest is framework for writing C++ tests. Features An XUnit test framework. Header onl

srz_zumix 60 Sep 12, 2022
UT: C++20 μ(micro)/Unit Testing Framework

"If you liked it then you "should have put a"_test on it", Beyonce rule UT / μt | Motivation | Quick Start | Overview | Tutorial | Examples | User Gui

boost::ext 956 Jan 3, 2023
A complete unit testing framework in a header

liblittletest A complete unit testing framework in a header liblittletest is an easy to use all-in-an-header testing framework; all you have to do in

Sebastiano Merlino 13 Nov 11, 2021
Modern c++17 unit testing framework on Microsoft Windows, Apple macOS, Linux, iOS and android.

tunit Modern c++17 unit testing framework on Windows, macOS, Linux, iOS and android. Continuous Integration build status Operating system Status Windo

Gammasoft 8 Apr 5, 2022
Simple C testing framework

MrTest Simple C testing framework Usage Copy the mrtest.c and mrtest.h file into your project. In order to use the mrtest main: create a .c file that

Maarten Raasveldt 2 Jul 20, 2022
xtest is a C++ testing framework inspired by googletest.

xtest C++ testing framework inspired by googletest Explore the docs » Wiki · Report Bug · Request Feature Contents xtest Commence Prerequisites Ubuntu

Ayush Joshi 2 Dec 13, 2022
A minimal testing framework for C/C++

mtest About mtest is a minimal testing framework for C++. Requirements Windows or UNIX-like host A compiler supporting C++11 Usage To include mtest in

Justin S 1 Jan 10, 2022
Kernel-mode C++ unit testing framework in BDD-style

There is a lack of unit testing frameworks that work in OS kernel. This library closes that gap and is targeted for windows driver developers.

Sergey Podobry 43 Dec 28, 2022
The fastest feature-rich C++11/14/17/20 single-header testing framework

master branch dev branch doctest is a new C++ testing framework but is by far the fastest both in compile times (by orders of magnitude) and runtime c

null 4.5k Jan 5, 2023
Header-only C++11 library for property-based testing.

autocheck Header-only C++11 library for QuickCheck (and later, SmallCheck) testing. Please consult the wiki for documentation. Install conan remote ad

John Freeman 120 Dec 22, 2022
Practical mutation testing tool for C and C++

Mull Mull is a tool for Mutation Testing based on LLVM/Clang with a strong focus on C and C++ languages. For installation and usage please refer to th

Mull Project 652 Dec 30, 2022
proftest is a C application for testing the quality of different operating system APIs for profiling.

proftest is a C application for testing the quality of different operating system APIs for profiling.

Felix Geisendörfer 5 Jul 23, 2021
A micro unit-testing library for C/C++

µ-test A micro unit testing framework for C/C++ to get you up and running with unit-testing ASAP (even without libc). Usage Simply include the C and h

Trevor McKay 1 Dec 8, 2021
A tool to help in testing client/server robustness in the presence of malformed data.

Tool to assist in testing robustness of network-attached services in the presence of malformed data.

Peter Farley 1 Aug 27, 2022
Bayesian A/B testing calculations for C++

BayesTest C++ Bayesian A/B testing calculations for C++ Based on this post by Evan Miller Also available in Rust Installation Include the header in yo

Andrew Kane 2 Nov 14, 2022
5G core testing solution

CoreScope CoreScope combines gNodeB and UE components without any radio transmission. It behaves like a UE and exposes an IP interface, but to the cor

srsRAN 37 Oct 21, 2022