منصوبے کے بارے میں
MathAssertions.TUnit ایک .NET test-only assertion لائبریری ہے جو TUnit فریم ورک کے لیے بنائی گئی ہے اور DotNetAssertions فیملی کا حصہ ہے۔ یہ production code کے لیے نہیں ہے۔ ریپوزٹری دو NuGet پیکجز فراہم کرتی ہے: MathAssertions، جو framework-agnostic core ہے جس میں static helper classes اور geometry primitives شامل ہیں، اور MathAssertions.TUnit، جو TUnit adapter ہے اور بارہ adapter classes میں تقریباً 85 fluent entry points فراہم کرتا ہے۔ Fluent entry points TUnit کے [GenerateAssertion] source generator کے ذریعے generate ہوتے ہیں اور Assert.That(value).Method(...) میں integrate ہوتے ہیں۔ تقاضے TUnit 1.66.27 یا اس سے جدید اور .NET 10 ہیں؛ assertion path کوئی runtime reflection استعمال نہیں کرتا اور AOT-compatible اور trimmable ہے۔
Coverage میں scalars، System.Numerics compounds (Vector2/3/4، Quaternion، Matrix4x4، Plane، Complex)، spans، اور generic ReadOnlyTensorSpan کے لیے tolerance comparisons شامل ہیں؛ quaternion rotational equivalence جو SO(3) double cover کو handle کرتی ہے؛ axis-angle form assertions؛ combined pose اور rigid transform approximate equality جس میں position اور rotation کے لیے الگ tolerances ہیں؛ monotonicity، sortedness، boundedness، progressions، اور Cauchy convergence کے لیے sequence predicates؛ Welford mean اور variance، median، percentile، standard deviation کے ذریعے statistics؛ Matrix4x4 اور Vector3 pairs کے لیے linear algebra invariants؛ long-integer number theory predicates جیسے divisibility، overflow-safe primality، coprimality، GCD/LCM، perfect square، اور modular congruence؛ اور ایک 3D geometry surface جس میں آٹھ primitive record struct types، containment، closest-point، intersection، اور pointcloud aggregate checks شامل ہیں۔ Compound types کے failure messages میں per-component یا per-cell delta اور exceeded-axis diagnostics شامل ہوتے ہیں۔ MathAssertions.Render namespace PoseRenderer فراہم کرتا ہے جو position اور orientation poses کی deterministic، snapshot-friendly text rendering دیتا ہے تاکہ SnapshotAssertions.TUnit کے ساتھ استعمال ہو سکے۔
Design details: approximate equality Euclidean distance کی بجائے component-wise ہے، values کو comparison سے پہلے double میں widen کیا جاتا ہے تاکہ double tolerance full precision پر برقرار رہے، اور NaN اور infinity semantics کو TUnit کے IsCloseTo primitive سے مطابقت رکھنے کے طور پر documented کیا گیا ہے۔ Companion MathAssertions پیکج دیگر test frameworks کے ذریعے دوبارہ استعمال کیا جا سکتا ہے، لیکن NUnit، xUnit، یا MSTest کے لیے adapters فی الحال ship نہیں ہوئے۔ ReadOnlyTensorSpan صرف static MathTolerance level پر expose کیا گیا ہے کیونکہ TUnit کا [GenerateAssertion] builder await کے دوران ref-struct values capture نہیں کر سکتا۔ README یہ بھی دکھاتا ہے کہ DSL کو consumer-defined domain types تک ایک سطری [GenerateAssertion] extension کے ساتھ کیسے بڑھایا جائے، protobuf pose messages کو System.Numerics types میں کیسے project کیا جائے، اور assertions کو Assert.Multiple کے ساتھ کیسے combine کیا جائے۔ License: MIT۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.