このプロジェクトについて
MathAssertions.TUnitは、TUnitフレームワーク向けの.NETテスト専用アサーションライブラリであり、DotNetAssertionsファミリーの一部です。本番コードでの使用は想定されていません。リポジトリは2つのNuGetパッケージを提供しています。フレームワーク非依存のコアで静的ヘルパークラスと幾何プリミティブを含むMathAssertionsと、12個のアダプタークラスにわたる約85のフルーエントエントリポイントを公開するTUnitアダプターのMathAssertions.TUnitです。フルーエントエントリポイントはTUnitの[GenerateAssertion]ソースジェネレーターで生成され、Assert.That(value).Method(...)に統合されます。要件はTUnit 1.66.27以降と.NET 10です。アサーションパスは実行時リフレクションを使用せず、AOT互換でトリミング可能です。
カバレッジには、スカラー、System.Numericsの複合型(Vector2/3/4、Quaternion、Matrix4x4、Plane、Complex)、スパン、およびジェネリックなReadOnlyTensorSpanの許容誤差比較、SO(3)の二重被覆を扱うクォータニオンの回転等価性、軸角形式のアサーション、位置と回転の許容誤差を別々に持つ合成ポーズおよび剛体変換の近似等価性、単調性・ソート済み・有界性・数列・Cauchy収束のシーケンス述語、Welfordの平均と分散・中央値・パーセンタイル・標準偏差による統計、Matrix4x4とVector3ペアの線形代数不変条件、整除性・オーバーフロー安全な素数判定・互いに素・GCD/LCM・完全平方・モジュラー合同などの長整数数論述語、8つのプリミティブrecord struct型・包含・最近点・交差・点群集約チェックを備えた3D幾何サーフェスが含まれます。複合型の失敗メッセージには、コンポーネント単位またはセル単位の差分と超過軸の診断が含まれます。MathAssertions.Render名前空間は、SnapshotAssertions.TUnitで使用するための位置と姿勢の決定的でスナップショットに適したテキストレンダリングを行うPoseRendererを提供します。
設計上の詳細:近似等価性はユークリッド距離ではなくコンポーネント単位であり、比較前に値がdoubleに拡張されるためdoubleの許容誤差が完全な精度で尊重されます。NaNと無限大のセマンティクスはTUnitのIsCloseToプリミティブに一致すると文書化されています。コンパニオンのMathAssertionsパッケージは他のテストフレームワークでも再利用できますが、NUnit、xUnit、MSTest用のアダプターは現在出荷されていません。ReadOnlyTensorSpanは、TUnitの[GenerateAssertion]ビルダーがawaitをまたいでref-struct値をキャプチャできないため、静的なMathToleranceレベルでのみ公開されています。READMEでは、1行の[GenerateAssertion]拡張でDSLを消費者定義のドメイン型に拡張する方法、protobufのポーズメッセージをSystem.Numerics型に射影する方法、アサーションをAssert.Multipleと組み合わせる方法も示されています。ライセンス:MIT。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.