Clojure ট্র্যাক কীভাবে অনুশীলনীর টেস্ট তৈরি করতে টেস্ট জেনারেটর ব্যবহার করে, তা জানুন।
Clojure ট্র্যাক প্র্যাকটিস অনুশীলনীর টেস্ট স্বয়ংক্রিয়ভাবে তৈরি করতে একটি টেস্ট জেনারেটর ব্যবহার করে।
এটি এই বিষয়টি কাজে লাগায় যে problem-specifications রিপো-তে সংজ্ঞায়িত বেশিরভাগ অনুশীলনীর একটি canonical-data.json ফাইলও থাকে, যেখানে স্ট্যান্ডার্ডাইজড টেস্ট ইনপুট ও আউটপুট থাকে, যা দিয়ে অনুশীলনীটি বাস্তবায়ন করা যায়।
একটি প্র্যাকটিস অনুশীলনীর টেস্ট তৈরি করতে টেস্ট জেনারেটরটি:
canonical-data.json ফাইল থেকে তার টেস্ট কেসগুলো পড়েtests.toml ফাইল ব্যবহার করেcanonical-data.json ফাইল পড়াটেস্ট জেনারেটরটি clojure/data.json লাইব্রেরি ব্যবহার করে অনুশীলনীর canonical-data.json থেকে টেস্ট কেসগুলো পার্স করে।
যেহেতু কিছু ক্যানোনিকাল ডেটা নেস্টিং ব্যবহার করে, তাই পার্স করা টেস্ট কেসে একটি অতিরিক্ত path ফিল্ড থাকে, যেখানে যেকোনো প্যারেন্ট এলিমেন্টের description প্রপার্টি এবং টেস্ট কেসের নিজের description প্রপার্টি থাকে।
নোট: কী (key) গুলো কিওয়ার্ড হিসেবে পার্স করা হয়।
tests.toml ফাইল থেকে বাদ দেওয়া টেস্টগুলো সরিয়ে ফেলাপ্রতিটি অনুশীলনীর একটি tests.toml ফাইল থাকে, যেখানে আলাদা আলাদা টেস্ট বাদ দেওয়া বা নিষ্ক্রিয় করা যায়।
টেস্ট জেনারেটরটি বাদ দেওয়া হিসেবে চিহ্নিত (include = false) যেকোনো টেস্ট কেস সরিয়ে ফেলে।
ডেটা রেন্ডার করার আগে কিছু অনুশীলনীতে সামান্য অ্যাডজাস্টমেন্টের প্রয়োজন হতে পারে। যেমন, বর্ণনাটি আরও সংক্ষিপ্ত করতে চাইতে পারেন।
টেস্ট কেসে পরিবর্তন আনতে .meta/generator.clj নামে একটি ফাইল ডিফাইন করুন, যার নেমস্পেস হবে <slug>-generator।
টেস্ট কেস রূপান্তর করার দুটি উপায় আছে:
আলাদা আলাদা টেস্ট কেস আপডেট করতে, নিচের ফাংশনটি ডিফাইন করুন:
(defn update-test-case
"Update a test case"
[test-case]
;; function body
)
এই উদাহরণটি :path ভ্যালুর শেষ এলিমেন্টটি ছাড়া বাকি সব সরিয়ে ফেলে (এভাবে বর্ণনা ছোট হয়):
(ns difference-of-squares-generator)
(defn update-test-case [test-case]
(update test-case :path #(take-last 1 %)))
টেস্ট কেস যোগ বা সরাতে, নিচের ফাংশনটি ডিফাইন করুন:
(defn add-remove-test-cases
"Add/remove test case(s)"
[test-cases]
;; function body
)
আপনি যদি দুটি ফাংশনই ডিফাইন করেন, তাহলে আগে add-remove-test-cases কল হয় এবং পরে update-test-case।
এরপর (সম্ভাব্য রূপান্তরিত) টেস্ট কেসগুলো .meta/generator.tpl ফাইলে পাস করা হয়, যা ঠিক করে দেয় ওই টেস্ট কেসগুলোর ভিত্তিতে টেস্টগুলো কীভাবে রেন্ডার হবে।
এরপর রেন্ডার করা টেমপ্লেটটি cljfmt দিয়ে ফরম্যাট করা হয়। এতে নিচের সুবিধাগুলো পাওয়া যায়:
সবশেষে, রেন্ডার করা টেমপ্লেটের আউটপুট অনুশীলনীর টেস্ট ফাইলে লেখা হয়।
টেমপ্লেটগুলো hbs লাইব্রেরি দিয়ে রেন্ডার করা হয়, যা handlebars সিনট্যাক্স সাপোর্ট করে (handlebars.java ব্যবহার করে)।
টেস্ট জেনারেটর চালানোর দুটি উপায় আছে:
bin/generate-tests: যে সব অনুশীলনীর জেনারেটর টেমপ্লেট আছে, সেগুলোর টেস্ট তৈরি করেbin/generate-tests <slug>: নির্দিষ্ট অনুশীলনীর টেস্ট তৈরি করে, যদি তার জেনারেটর টেমপ্লেট থাকে