Sobre o projeto
MathAssertions.TUnit é uma biblioteca de asserções .NET apenas para testes, destinada ao framework TUnit e parte da família DotNetAssertions. Não se destina a código de produção. O repositório disponibiliza dois pacotes NuGet: MathAssertions, o núcleo agnóstico de framework com classes auxiliares estáticas e primitivas de geometria, e MathAssertions.TUnit, o adaptador TUnit que expõe cerca de 85 pontos de entrada fluentes em doze classes de adaptador. Os pontos de entrada fluentes são gerados com o source generator [GenerateAssertion] do TUnit e integram-se em Assert.That(value).Method(...). Os requisitos são TUnit 1.66.27 ou posterior e .NET 10; o caminho de asserção não usa reflexão em tempo de execução e é compatível com AOT e trimável.
A cobertura inclui comparações de tolerância para escalares, compostos System.Numerics (Vector2/3/4, Quaternion, Matrix4x4, Plane, Complex), spans e ReadOnlyTensorSpan genérico; equivalência rotacional de quaterniões tratando a dupla cobertura de SO(3); asserções na forma eixo-ângulo; igualdade aproximada de pose combinada e transformação rígida com tolerâncias separadas de posição e rotação; predicados de sequência para monotonicidade, ordenação, limitação, progressões e convergência de Cauchy; estatísticas via média e variância de Welford, mediana, percentil, desvio padrão; invariantes de álgebra linear para Matrix4x4 e pares de Vector3; predicados de teoria dos números com inteiros longos, como divisibilidade, primalidade segura contra overflow, coprimalidade, GCD/LCM, quadrado perfeito e congruência modular; e uma superfície de geometria 3D com oito tipos record struct primitivos, verificação de contenção, ponto mais próximo, interseção e agregados de nuvem de pontos. As mensagens de falha para tipos compostos incluem diagnóstico de delta por componente ou por célula e de eixo excedido. O namespace MathAssertions.Render fornece PoseRenderer para renderização de texto determinística e adequada a snapshots de poses de posição e orientação, para uso com SnapshotAssertions.TUnit.
Detalhes de design: a igualdade aproximada é componente a componente em vez de distância euclidiana, os valores são alargados para double antes da comparação para que uma tolerância double seja respeitada com precisão total, e as semânticas de NaN e infinito estão documentadas como correspondendo à primitiva IsCloseTo do TUnit. O pacote companheiro MathAssertions pode ser reutilizado por outros frameworks de teste, mas adaptadores para NUnit, xUnit ou MSTest não são atualmente disponibilizados. ReadOnlyTensorSpan é exposto apenas ao nível estático MathTolerance porque o builder [GenerateAssertion] do TUnit não consegue capturar valores ref-struct através de um await. O README também mostra como estender a DSL a tipos de domínio definidos pelo consumidor com uma extensão [GenerateAssertion] de uma linha, como projetar mensagens de pose protobuf em tipos System.Numerics e como combinar asserções com Assert.Multiple. Licença: MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.