C ট্র্যাকে টেস্টিং

Exercism-এ আপনার C অনুশীলনীগুলো কীভাবে টেস্ট করবেন তা শিখুন।


প্রতিটি অনুশীলনী ইউনিট টেস্ট এবং একটি Make বিল্ড রেসিপি দেয়। আর ইমপ্লিমেন্টেশনটি আপনাকে দিতে হবে।

প্রতিটি টেস্ট ফাইল আপনার ইমপ্লিমেন্টেশনের সাথে লিংক হয়ে এমন একটি কনসোল এক্সিকিউটেবল তৈরি করে, যা টেস্টগুলো রান করে। টেস্ট এক্সিকিউটেবলটি রান করলে প্রতিটি ব্যর্থ টেস্টের জন্য বার্তা প্রিন্ট হয়, আর টেস্ট ব্যর্থ হলে একটি নন-জিরো এক্সিট স্টেটাস রিপোর্ট করে।

একটি অনুশীলনী ধরে ধরে এগোতে:

  • Make দিয়ে প্রাথমিক বিল্ডটি তৈরি করুন
  • প্রতিটি ইউনিট টেস্টের জন্য:
    • TEST_IGNORE() লাইনটি মুছে ফেলুন।
    • টেস্টটি ব্যর্থ করার জন্য কম্পাইল এররগুলো দূর করুন।
    • টেস্টটি পাস করাতে যতটুকু দরকার, ঠিক ততটুকুই ইমপ্লিমেন্ট করুন।
    • পাঠযোগ্যতা বাড়াতে, ডুপ্লিকেশন কমাতে ইত্যাদির জন্য আপনার ইমপ্লিমেন্টেশন রিফ্যাক্টর করুন।

টেস্ট কম্পাইল ও রান করা

প্রতিটি অনুশীলনীর সাথে ইউনিট টেস্টসহ একটি makefile ফাইল এবং একটি .c ফাইল আসবে। আপনার Make ফাইলটি সম্পাদনা করার দরকার পড়ার কথা নয়। দেওয়া Make ফাইলটি ধরে নেয় যে আপনার ইমপ্লিমেন্টেশন অনুশীলনীর নামে নামকরণ করা একটি হেডার ফাইল (.h) এবং একটি সোর্স ফাইল (.c) হিসেবে আছে।

উদাহরণস্বরূপ, bob অনুশীলনীটি bob.h এবং bob.c ফাইলে একটি ইমপ্লিমেন্টেশন আশা করে। যে অনুশীলনীগুলোর নামে ড্যাশ থাকে, সেগুলোর সোর্স ফাইলে আন্ডারস্কোর ধরে নেওয়া হয়, তাই word-count অনুশীলনীর জন্য word_count.h এবং word_count.c প্রত্যাশিত। আপনার ইমপ্লিমেন্টেশন যদি এতটাই সহজ হয় যে তা পুরোপুরি হেডার ফাইলেই থাকতে পারে, তবে আপনি .c ফাইলটি বাদ দিতে পারেন।

Make রান করার আগেই আপনার প্রাথমিক ইমপ্লিমেন্টেশন ফাইলগুলো তৈরি করে নিন। bob অনুশীলনীর জন্য Make রান করার সময় আপনার কাছে bob.h এবং bob.c ফাইল না থাকলে, ফাইল খুঁজে পাওয়া যায়নি বলে Make একটি এরর তৈরি করবে। এই ফাইলগুলো খালি থাকতে পারে, তবে থাকতেই হবে।

আপনার কোড বিল্ড করুন

আপনার কোড বিল্ড করার সবচেয়ে সহজ উপায় হলো কমান্ড লাইনে (CLI) make ব্যবহার করা। Linux-এ CLI ব্যবহার করা যায় bash বা অনুরূপ শেলে, আর MacOS-এ ব্যবহার করুন Terminal। Windows 10-এ Windows Subsystem for Linux (WSL) Bash ব্যবহার করা যায়।

এটি করতে, ধরে নিচ্ছি বর্তমান ডিরেক্টরিটি অনুশীলনীর ফোল্ডার:

$ make

এটি আপনার কোড কম্পাইল করবে এবং টেস্টগুলো রান করবে।

makefile-এর সাথে আরও একটি বিল্ড আছে, যা মেমরি লিক এবং অ্যারের সীমার বাইরে অ্যাক্সেস সংক্রান্ত কিছু কমন ভুল পরীক্ষা করে। এই চেকগুলো রান করতে কমান্ড লাইনে নিচেরটি ব্যবহার করুন:

$ make memcheck

পরিষ্কার করা

বিল্ডের পরে পরিষ্কার করতে আপনি make-কে বলতে পারেন যে এক্সিকিউটেবলসহ বিল্ডের সব আউটপুট মুছে ফেলুক:

$ make clean

MacOS-এ বিল্ড করার বিকল্প

MacOS-এ আপনি Xcode-ও ব্যবহার করতে পারেন। কোড বিল্ড করতে টুলবার থেকে Build নির্বাচন করুন।