প্রকল্প সম্পর্কে

MathAssertions.TUnit হলো TUnit ফ্রেমওয়ার্কের জন্য একটি .NET টেস্ট-অনলি অ্যাসারশন লাইব্রেরি এবং DotNetAssertions পরিবারের অংশ। এটি প্রোডাকশন কোডের জন্য নয়। রিপোজিটরিতে দুটি NuGet প্যাকেজ রয়েছে: MathAssertions, যা ফ্রেমওয়ার্ক-নিরপেক্ষ কোর এবং স্ট্যাটিক হেল্পার ক্লাস ও জ্যামিতি প্রিমিটিভ ধারণ করে, এবং MathAssertions.TUnit, যা TUnit অ্যাডাপ্টার এবং বারোটি অ্যাডাপ্টার ক্লাসে প্রায় ৮৫টি ফ্লুয়েন্ট এন্ট্রি পয়েন্ট প্রকাশ করে। ফ্লুয়েন্ট এন্ট্রি পয়েন্টগুলো TUnit-এর [GenerateAssertion] সোর্স জেনারেটর দিয়ে তৈরি হয় এবং Assert.That(value).Method(...)-এ ইন্টিগ্রেট করে। প্রয়োজনীয়তা হলো TUnit 1.66.27 বা তার পরবর্তী এবং .NET 10; অ্যাসারশন পাথ কোনো রানটাইম রিফ্লেকশন ব্যবহার করে না এবং AOT-সামঞ্জস্যপূর্ণ ও ট্রিমেবল। কভারেজের মধ্যে রয়েছে স্কেলার, System.Numerics কম্পাউন্ড (Vector2/3/4, Quaternion, Matrix4x4, Plane, Complex), স্প্যান এবং জেনেরিক ReadOnlyTensorSpan-এর জন্য টলারেন্স তুলনা; SO(3) ডাবল কভার সামলানো কোয়াটার্নিয়ন রোটেশনাল ইকুইভ্যালেন্স; অ্যাক্সিস-অ্যাঙ্গেল ফর্ম অ্যাসারশন; পৃথক পজিশন ও রোটেশন টলারেন্সসহ সম্মিলিত পোজ ও রিজিড ট্রান্সফর্ম অ্যাপ্রক্সিমেট ইকুয়ালিটি; মনোটোনিসিটি, সর্টেডনেস, বাউন্ডেডনেস, প্রোগ্রেশন ও কশি কনভার্জেন্সের জন্য সিকোয়েন্স প্রেডিকেট; Welford মিন ও ভ্যারিয়েন্স, মিডিয়ান, পার্সেন্টাইল, স্ট্যান্ডার্ড ডেভিয়েশনসহ স্ট্যাটিস্টিকস; Matrix4x4 ও Vector3 জোড়ার জন্য লিনিয়ার অ্যালজেব্রা ইনভ্যারিয়েন্ট; ডিভিজিবিলিটি, ওভারফ্লো-সেফ প্রাইমালিটি, কপ্রাইমালিটি, GCD/LCM, পারফেক্ট স্কয়ার ও মডুলার কনগ্রুয়েন্সের মতো লং-ইন্টিজার নাম্বার থিওরি প্রেডিকেট; এবং আটটি প্রিমিটিভ রেকর্ড স্ট্রাক্ট টাইপ, কনটেইনমেন্ট, ক্লোজেস্ট-পয়েন্ট, ইন্টারসেকশন ও পয়েন্টক্লাউড অ্যাগ্রিগেট চেকসহ একটি 3D জ্যামিতি সারফেস। কম্পাউন্ড টাইপের ব্যর্থতার মেসেজে পার-কম্পোনেন্ট বা পার-সেল ডেল্টা এবং এক্সিডেড-অ্যাক্সিস ডায়াগনস্টিক থাকে। MathAssertions.Render নেমস্পেস PoseRenderer প্রদান করে, যা SnapshotAssertions.TUnit-এর সাথে ব্যবহারের জন্য পজিশন ও ওরিয়েন্টেশন পোজের ডিটারমিনিস্টিক, স্ন্যাপশট-বান্ধব টেক্সট রেন্ডারিং দেয়। ডিজাইন বিবরণ: অ্যাপ্রক্সিমেট ইকুয়ালিটি ইউক্লিডীয় দূরত্বের বদলে কম্পোনেন্ট-ওয়াইজ; তুলনার আগে মানগুলো double-এ প্রশস্ত করা হয় যাতে একটি double টলারেন্স পূর্ণ নির্ভুলতায় মানা হয়; এবং NaN ও ইনফিনিটি সেমান্টিক্স TUnit-এর IsCloseTo প্রিমিটিভের সাথে মেলে বলে ডকুমেন্টেড। সহযোগী MathAssertions প্যাকেজ অন্য টেস্ট ফ্রেমওয়ার্কে পুনর্ব্যবহার করা যায়, তবে NUnit, xUnit বা MSTest-এর জন্য অ্যাডাপ্টার বর্তমানে শিপ করা হয় না। ReadOnlyTensorSpan শুধু স্ট্যাটিক MathTolerance স্তরে প্রকাশ করা হয়, কারণ TUnit-এর [GenerateAssertion] বিল্ডার await জুড়ে ref-struct মান ক্যাপচার করতে পারে না। README-তে আরও দেখানো হয়েছে কীভাবে এক-লাইন [GenerateAssertion] এক্সটেনশন দিয়ে DSL-কে কনজিউমার-ডিফাইনড ডোমেইন টাইপে বাড়ানো যায়, কীভাবে protobuf পোজ মেসেজকে System.Numerics টাইপে প্রজেক্ট করা যায় এবং কীভাবে Assert.Multiple-এর সাথে অ্যাসারশন একত্রিত করা যায়। লাইসেন্স: MIT।