test মডিউল
একটি minimal টেস্ট ফ্রেমওয়ার্ক। test() দিয়ে রেজিস্টার, equal / is_true / ইত্যাদি দিয়ে assert, run() দিয়ে সব execute। কোনো test ব্যর্থ হলে প্রসেস কোড 1-এ exit — CI-এর জন্য এটাই যথেষ্ট।
একটি test ফাইল = একটি Bnlang স্ক্রিপ্ট। test import করুন, কেস রেজিস্টার করুন, t.run() কল করুন।
import "test" as t;
t.test("addition", function () {
t.equal(2 + 2, 4);
});
t.test("upper case", function () {
t.equal("foo".to_upper(), "FOO");
});
t.run();
API
| ফাংশন | বর্ণনা |
|---|---|
t.test(name, fn) | একটি test রেজিস্টার। fn কোনো arg নেয় না; throw করলে fail। |
t.run() | সব test execute; summary; কোনো fail হলে exit 1। |
অ্যাসারশন
| ফাংশন | বর্ণনা |
|---|---|
t.equal(actual, expected) | Value তুলনা। |
t.not_equal(actual, expected) | উল্টো। |
t.is_true(v) / t.is_false(v) | Boolean চেক। |
t.is_null(v) / t.not_null(v) | |
t.contains(haystack, needle) | Substring (string) বা membership (list)। |
t.throws(fn) | fn() throw assert। |
t.throws_with(fn, substring) | Throw + মেসেজে substring। |
চালানো
bnl tests/parser_spec.bnl
# একটি পুরো ফোল্ডার (শেল দিয়ে):
for f in tests/*.bnl; do bnl "$f" || exit 1; done
কোনো test-discovery বাইনারি নেই — শুধু bnl দিয়ে ফাইল চালান। CI প্যাটার্নের জন্য Using Bnlang's test framework দেখুন।