Haskell:
টেস্ট লিখা

কিভাবে:

Haskell বিভিন্ন টেস্টিং ফ্রেমওয়ার্কের সাপোর্ট করে, কিন্তু দুটি জনপ্রিয় হল Hspec এবং QuickCheck। Hspec আপনাকে আপনার কোডের জন্য মানব-পাঠ্যযোগ্য বিবরণ সংজ্ঞায়িত করতে অনুমতি দেয় যেখানে QuickCheck আপনার কোড যা পূরণ করা উচিত সেই গুণাবলী বর্ণনা করে স্বয়ংক্রিয়ভাবে টেস্টগুলি জেনারেট করে।

Hspec ব্যবহার করে

প্রথমে, আপনার বিল্ড টুল কনফিগারেশনে (যেমন stack.yaml অথবা cabal ফাইল) hspec যোগ করুন। তারপর, Test.Hspec ইম্পোর্ট করুন এবং স্পেসিফিকেশন হিসেবে টেস্টগুলি লিখুন:

-- ফাইল: spec/MyLibSpec.hs
import Test.Hspec
import MyLib (add)

main :: IO ()
main = hspec $ describe "MyLib.add" $ do
  it "দুটি সংখ্যা যোগ করে" $
    add 1 2 `shouldBe` 3

  it "শূন্য যোগ করলে প্রথম সংখ্যাটি ফেরত দেয়" $
    add 5 0 `shouldBe` 5

তারপর, আপনার বিল্ড টুল ব্যবহার করে টেস্টগুলি চালান, ফলাফল দেখতে পাবেন:

MyLib.add
  - দুটি সংখ্যা যোগ করে
  - শূন্য যোগ করলে প্রথম সংখ্যাটি ফেরত দেয়

০.০০০১ সেকেন্ডে সমাপ্ত
২ উদাহরণ, ০ ব্যর্থতা

QuickCheck ব্যবহার করে

QuickCheck এর সাথে, আপনি এমন গুণাবলী প্রেস করেন যা আপনার ফাংশনগুলি পূরণ করা উচিত। আপনার প্রজেক্ট কনফিগারেশনে QuickCheck যোগ করুন, তারপর এটি ইম্পোর্ট করুন:

-- ফাইল: test/MyLibProperties.hs
import Test.QuickCheck
import MyLib (add)

prop_addAssociative :: Int -> Int -> Int -> Bool
prop_addAssociative x y z = x + (y + z) == (x + y) + z

prop_addCommutative :: Int -> Int -> Bool
prop_addCommutative x y = x + y == y + x

main :: IO ()
main = do
  quickCheck prop_addAssociative
  quickCheck prop_addCommutative

এই টেস্টগুলি চালানোর সময় নির্দিষ্ট গুণাবলী চেক করার জন্য স্বয়ংক্রিয়ভাবে ইনপুটগুলি জেনারেট করবে:

+++ OK, ১০০ টেস্ট পাস করেছে।
+++ OK, ১০০ টেস্ট পাস করেছে।

Hspec এবং QuickCheck উদাহরণ উভয়ের ক্ষেত্রেই, টেস্ট সুইটগুলি নিজেদের কোডের সঠিকতা স্বয়ংক্রিয়ভাবে যাচাই করতে পারে এমন এক নির্বাহযোগ্য নথি হিসাবে কাজ করে।