Об этом проекте
MathAssertions.TUnit — это .NET-библиотека утверждений только для тестов, предназначенная для фреймворка TUnit и входящая в семейство DotNetAssertions. Она не предназначена для production-кода. Репозиторий поставляет два NuGet-пакета: MathAssertions — независимое от фреймворка ядро со статическими вспомогательными классами и геометрическими примитивами, и MathAssertions.TUnit — адаптер для TUnit, предоставляющий около 85 fluent-точек входа в двенадцати классах-адаптерах. Fluent-точки входа генерируются с помощью source generator TUnit [GenerateAssertion] и интегрируются в Assert.That(value).Method(...). Требования: TUnit 1.66.27 или новее и .NET 10; путь утверждений не использует runtime-рефлексию и совместим с AOT и trimming.
Покрытие включает сравнения с допуском для скаляров, составных типов System.Numerics (Vector2/3/4, Quaternion, Matrix4x4, Plane, Complex), span и обобщённого ReadOnlyTensorSpan; проверку эквивалентности вращения кватернионов с учётом двойного накрытия SO(3); утверждения формы axis-angle; приблизительное равенство комбинированной позы и жёсткого преобразования с раздельными допусками для позиции и вращения; предикаты последовательностей для монотонности, отсортированности, ограниченности, прогрессий и сходимости по Коши; статистику через среднее и дисперсию по Уэлфорду, медиану, процентиль, стандартное отклонение; инварианты линейной алгебры для Matrix4x4 и пар Vector3; предикаты теории чисел для длинных целых, такие как делимость, безопасная от переполнения проверка простоты, взаимная простота, GCD/LCM, полный квадрат и модульная сравнимость; а также поверхность 3D-геометрии с восемью примитивными типами record struct, проверками вложенности, ближайшей точки, пересечения и агрегатных проверок облака точек. Сообщения об ошибках для составных типов включают покомпонентную или поячеечную дельту и диагностику превышенной оси. Пространство имён MathAssertions.Render предоставляет PoseRenderer для детерминированного, удобного для snapshot-тестов текстового представления поз положения и ориентации для использования с SnapshotAssertions.TUnit.
Детали дизайна: приблизительное равенство выполняется покомпонентно, а не по евклидову расстоянию; значения расширяются до double перед сравнением, поэтому допуск double соблюдается с полной точностью; семантика NaN и бесконечности документирована как соответствующая примитиву IsCloseTo в TUnit. Сопутствующий пакет MathAssertions может быть повторно использован другими тестовыми фреймворками, но адаптеры для NUnit, xUnit или MSTest в настоящее время не поставляются. ReadOnlyTensorSpan предоставляется только на статическом уровне MathTolerance, поскольку builder TUnit [GenerateAssertion] не может захватывать значения ref-struct через await. README также показывает, как расширить DSL до определяемых потребителем доменных типов однострочным расширением [GenerateAssertion], как проецировать protobuf-сообщения поз в типы System.Numerics и как комбинировать утверждения с Assert.Multiple. Лицензия: MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.