프로젝트 소개

MathAssertions.TUnit은 TUnit 프레임워크를 위한 .NET 테스트 전용 어서션 라이브러리이며 DotNetAssertions 제품군의 일부입니다. 프로덕션 코드용이 아닙니다. 이 저장소는 두 개의 NuGet 패키지를 제공합니다. MathAssertions는 정적 헬퍼 클래스와 기하 기본 형식을 갖춘 프레임워크 비종속 코어이고, MathAssertions.TUnit은 열두 개의 어댑터 클래스에 걸쳐 약 85개의 플루언트 진입점을 노출하는 TUnit 어댑터입니다. 플루언트 진입점은 TUnit의 [GenerateAssertion] 소스 생성기로 생성되며 Assert.That(value).Method(...)에 통합됩니다. 요구 사항은 TUnit 1.66.27 이상과 .NET 10이며, 어서션 경로는 런타임 리플렉션을 사용하지 않고 AOT 호환 및 트리밍 가능합니다. 커버리지에는 스칼라, System.Numerics 복합 형식(Vector2/3/4, Quaternion, Matrix4x4, Plane, Complex), span, 제네릭 ReadOnlyTensorSpan에 대한 관용도 비교; SO(3) 이중 피복을 처리하는 쿼터니언 회전 동등성; 축-각 형식 어서션; 위치와 회전 관용도를 별도로 둔 결합 포즈 및 강체 변환 근사 동등성; 단조성, 정렬성, 유계성, 수열, 코시 수렴에 대한 시퀀스 조건자; Welford 평균과 분산, 중앙값, 백분위수, 표준편차를 통한 통계; Matrix4x4 및 Vector3 쌍에 대한 선형대수 불변식; 나눗셈 가능성, 오버플로 안전 소수성, 서로소, GCD/LCM, 완전제곱, 모듈러 합동 같은 긴 정수 정수론 조건자; 그리고 여덟 개의 기본 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는 또한 한 줄짜리 [GenerateAssertion] 확장으로 소비자 정의 도메인 형식으로 DSL을 확장하는 방법, protobuf 포즈 메시지를 System.Numerics 형식으로 투영하는 방법, 어서션을 Assert.Multiple과 결합하는 방법을 보여줍니다. 라이선스: MIT.