عن المشروع
MathAssertions.TUnit هي مكتبة تأكيدات .NET مخصصة للاختبار فقط لإطار TUnit وجزء من عائلة DotNetAssertions. وهي غير مخصصة لكود الإنتاج. يحتوي المستودع على حزمتي NuGet: MathAssertions، وهي النواة المستقلة عن الإطار مع فئات مساعدة ثابتة وأساسيات هندسية، وMathAssertions.TUnit، وهي محول TUnit الذي يعرض نحو 85 نقطة دخول انسيابية عبر اثنتي عشرة فئة محول. يتم توليد نقاط الدخول الانسيابية باستخدام مولّد المصدر [GenerateAssertion] الخاص بـ TUnit وتتكامل ضمن Assert.That(value).Method(...). المتطلبات هي TUnit 1.66.27 أو أحدث و.NET 10؛ ولا يستخدم مسار التأكيد أي انعكاس وقت التشغيل وهو متوافق مع AOT وقابل للتقليم.
تشمل التغطية مقارنات التسامح للقيم العددية، ومركبات System.Numerics (Vector2/3/4 وQuaternion وMatrix4x4 وPlane وComplex)، والامتدادات (spans)، وReadOnlyTensorSpan العام؛ والتكافؤ الدوراني للكواتيرنيون مع معالجة الغطاء المزدوج SO(3)؛ وتأكيدات صيغة المحور-الزاوية؛ والمساواة التقريبية المركبة للوضعية والتحويل الصلب مع تسامحات منفصلة للموضع والدوران؛ ومحمولات التسلسل للرتابة والترتيب والتقييد والمتتاليات والتقارب وفق كوشي؛ والإحصاءات عبر متوسط وتباين Welford والوسيط والمئين والانحراف المعياري؛ وثوابت الجبر الخطي لـ Matrix4x4 وأزواج Vector3؛ ومحمولات نظرية الأعداد للأعداد الصحيحة الطويلة مثل القابلية للقسمة والأولية الآمنة من الفائض والأولية المشتركة وGCD/LCM والمربع الكامل والتطابق المعياري؛ وسطح هندسة ثلاثية الأبعاد بثمانية أنواع record struct بدائية، والاحتواء، وأقرب نقطة، والتقاطع، وفحوص تجميعية لسحابة النقاط. تتضمن رسائل الفشل للأنواع المركبة تشخيصات الفرق لكل مكوّن أو لكل خلية والمحور المتجاوز. توفر مساحة الاسم MathAssertions.Render أداة PoseRenderer لعرض نصي حتمي مناسب للقطات (snapshots) لمواضع الموضع والاتجاه لاستخدامها مع SnapshotAssertions.TUnit.
تفاصيل التصميم: المساواة التقريبية تُجرى لكل مكوّن بدلاً من المسافة الإقليدية، ويتم توسيع القيم إلى double قبل المقارنة بحيث يُحترم تسامح double بدقة كاملة، وتوثق دلالات NaN واللانهاية على أنها مطابقة لأساس IsCloseTo في TUnit. يمكن إعادة استخدام حزمة MathAssertions المرافقة بواسطة أطر اختبار أخرى، لكن المحولات الخاصة بـ NUnit أو xUnit أو MSTest غير متوفرة حالياً. يتم عرض ReadOnlyTensorSpan فقط عند المستوى الثابت MathTolerance لأن مولّد [GenerateAssertion] في TUnit لا يمكنه التقاط قيم 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.