Sobre el proyecto
MathAssertions.TUnit es una biblioteca de aserciones solo para pruebas de .NET para el framework TUnit y forma parte de la familia DotNetAssertions. No está pensada para código de producción. El repositorio distribuye dos paquetes NuGet: MathAssertions, el núcleo agnóstico del framework con clases auxiliares estáticas y primitivas de geometría, y MathAssertions.TUnit, el adaptador de TUnit que expone alrededor de 85 puntos de entrada fluidos en doce clases de adaptador. Los puntos de entrada fluidos se generan con el generador de código fuente [GenerateAssertion] de TUnit y se integran en Assert.That(value).Method(...). Los requisitos son TUnit 1.66.27 o posterior y .NET 10; la ruta de aserciones no usa reflexión en tiempo de ejecución y es compatible con AOT y recortable.
La cobertura incluye comparaciones de tolerancia para escalares, compuestos de System.Numerics (Vector2/3/4, Quaternion, Matrix4x4, Plane, Complex), spans y ReadOnlyTensorSpan genérico; equivalencia rotacional de cuaterniones que maneja la doble cobertura de SO(3); aserciones en forma de eje-ángulo; igualdad aproximada combinada de pose y transformación rígida con tolerancias separadas de posición y rotación; predicados de secuencia para monotonicidad, orden, acotación, progresiones y convergencia de Cauchy; estadísticas mediante media y varianza de Welford, mediana, percentil, desviación estándar; invariantes de álgebra lineal para Matrix4x4 y pares de Vector3; predicados de teoría de números de enteros largos como divisibilidad, primalidad segura frente a desbordamiento, coprimalidad, GCD/LCM, cuadrado perfecto y congruencia modular; y una superficie de geometría 3D con ocho tipos primitivos record struct, contención, punto más cercano, intersección y comprobaciones agregadas de nubes de puntos. Los mensajes de fallo para tipos compuestos incluyen delta por componente o por celda y diagnósticos de eje excedido. El espacio de nombres MathAssertions.Render proporciona PoseRenderer para la representación de texto determinista y apta para instantáneas de poses de posición y orientación para su uso con SnapshotAssertions.TUnit.
Detalles de diseño: la igualdad aproximada es por componentes en lugar de distancia euclidiana, los valores se amplían a double antes de la comparación para que una tolerancia double se respete a plena precisión, y la semántica de NaN e infinito está documentada como coincidente con la primitiva IsCloseTo de TUnit. El paquete complementario MathAssertions puede reutilizarse por otros frameworks de prueba, pero actualmente no se distribuyen adaptadores para NUnit, xUnit o MSTest. ReadOnlyTensorSpan solo se expone en el nivel estático MathTolerance porque el generador [GenerateAssertion] de TUnit no puede capturar valores ref-struct a través de un await. El README también muestra cómo extender el DSL a tipos de dominio definidos por el consumidor con una extensión [GenerateAssertion] de una línea, cómo proyectar mensajes de pose de protobuf en tipos de System.Numerics y cómo combinar aserciones con Assert.Multiple. Licencia: MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.