Skip to content

kurrrru/toolbox

Repository files navigation

tests format

toolbox

アルゴリズムとデータ構造のヘッダオンリー集。各実装は include/toolbox/ 以下に置き、 テストは tests/ 以下に置く。ビルド・テストは CMake + CTest で行う。

必要環境

  • CMake 3.20 以上
  • C++20 対応コンパイラ(GCC / Clang)
  • (整形チェックを行う場合)clang-format 21

ビルドとテスト

CMake プリセットを利用する。

# 構成(Debug + テスト有効)
cmake --preset default
# ビルド
cmake --build --preset default
# テスト実行
ctest --preset default

利用可能なプリセット:

プリセット 内容
default Debug ビルド + テスト
release Release ビルド + テスト
asan AddressSanitizer + UndefinedBehaviorSanitizer 付き

サニタイザ付きで実行する場合:

cmake --preset asan
cmake --build --preset asan
ctest --preset asan

新しいアルゴリズムの追加

  1. 実装を include/toolbox/<category>/<algorithm>/<algorithm>.hpp に置く。
  2. テストを tests/<category>/<algorithm>/main.cpp に置く。
    • ライブラリのヘッダはすべて #include "toolbox/..." の形で参照する (include ルートは include/)。
    • テストヘルパは #include "utils/test_util.hpp" で参照する (tests/ が include パスに入っている)。
    • テストランナは tests/utils/test_util.hpptoolbox::test_utils::run_tests を使う。
  3. これだけでよい。main.cpp は CMake が自動検出し、<ディレクトリ名>_test という名前のテストとして登録する(CMakeLists.txt の編集は不要)。

自動検出は file(GLOB_RECURSE ... CONFIGURE_DEPENDS) で行っている。ファイルを 追加・削除した後は、再度 cmake --build すれば構成が更新される。

コード整形

.clang-format(Google ベース)に従う。CI で整形チェックが走る。

# 差分チェック(CI と同じ)
find include tests \( -name '*.hpp' -o -name '*.cpp' \) -print0 \
  | xargs -0 clang-format --dry-run --Werror

# 一括整形
find include tests \( -name '*.hpp' -o -name '*.cpp' \) -print0 \
  | xargs -0 clang-format -i

CI

GitHub Actions で以下を実行する(.github/workflows/)。

  • tests.yml — GCC / Clang それぞれでビルド + CTest、加えて ASan + UBSan 実行。
  • format.yml — clang-format による整形チェック。

About

my library

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors