À propos du projet

MathAssertions.TUnit est une bibliothèque d'assertions .NET réservée aux tests, destinée au framework TUnit et faisant partie de la famille DotNetAssertions. Elle n'est pas destinée au code de production. Le dépôt fournit deux packages NuGet : MathAssertions, le cœur agnostique du framework avec des classes utilitaires statiques et des primitives de géométrie, et MathAssertions.TUnit, l'adaptateur TUnit exposant environ 85 points d'entrée fluides répartis sur douze classes d'adaptateur. Les points d'entrée fluides sont générés avec le générateur de source [GenerateAssertion] de TUnit et s'intègrent dans Assert.That(value).Method(...). Les prérequis sont TUnit 1.66.27 ou version ultérieure et .NET 10 ; le chemin d'assertion n'utilise aucune réflexion à l'exécution et est compatible AOT et trimmable. La couverture inclut les comparaisons de tolérance pour les scalaires, les composés System.Numerics (Vector2/3/4, Quaternion, Matrix4x4, Plane, Complex), les spans et le ReadOnlyTensorSpan générique ; l'équivalence rotationnelle des quaternions gérant le double revêtement SO(3) ; les assertions de forme axe-angle ; l'égalité approximative combinée de pose et de transformation rigide avec des tolérances distinctes de position et de rotation ; les prédicats de séquence pour la monotonie, le tri, le caractère borné, les progressions et la convergence de Cauchy ; les statistiques via la moyenne et la variance de Welford, la médiane, le percentile, l'écart-type ; les invariants d'algèbre linéaire pour Matrix4x4 et les paires de Vector3 ; les prédicats de théorie des nombres en entiers longs tels que la divisibilité, la primalité sûre vis-à-vis du dépassement, la coprimalité, le PGCD/PPCM, le carré parfait et la congruence modulaire ; et une surface de géométrie 3D avec huit types record struct primitifs, la contenance, le point le plus proche, l'intersection et les vérifications agrégées de nuages de points. Les messages d'échec pour les types composés incluent des diagnostics par composant ou par cellule du delta et de l'axe dépassé. L'espace de noms MathAssertions.Render fournit PoseRenderer pour un rendu textuel déterministe et adapté aux snapshots des poses de position et d'orientation, à utiliser avec SnapshotAssertions.TUnit. Détails de conception : l'égalité approximative est composant par composant plutôt qu'en distance euclidienne, les valeurs sont élargies en double avant comparaison afin qu'une tolérance double soit honorée à pleine précision, et les sémantiques NaN et infini sont documentées comme correspondant à la primitive IsCloseTo de TUnit. Le package compagnon MathAssertions peut être réutilisé par d'autres frameworks de test, mais les adaptateurs pour NUnit, xUnit ou MSTest ne sont pas fournis actuellement. ReadOnlyTensorSpan n'est exposé qu'au niveau statique MathTolerance car le générateur [GenerateAssertion] de TUnit ne peut pas capturer les valeurs ref-struct à travers un await. Le README montre également comment étendre le DSL à des types de domaine définis par le consommateur avec une extension [GenerateAssertion] d'une ligne, comment projeter des messages de pose protobuf vers les types System.Numerics, et comment combiner les assertions avec Assert.Multiple. Licence : MIT.