packages feed

tasty-grading-system-0.1.0.0: test/MyLibTest.hs

module Main (main) where

import Control.Exception
import Test.Tasty
import Test.Tasty.Grade
import Test.Tasty.HUnit
import Test.Tasty.Ingredients (composeReporters)
import Test.Tasty.Ingredients.ConsoleReporter (consoleTestReporter)

main :: IO ()
main = defaultMainWithIngredients [composeReporters consoleTestReporter jsonRunner] spec

spec :: TestTree
spec =
  testGroup
    "spec"
    [ testGroupPoints 5 0 9 unitTests
    ]

unitTests :: TestTree
unitTests =
  testGroup
    "Unit tests"
    [ testCase "List comparison (different length)" $
        [1, 2, 3] `compare` [1, 2] @?= GT,
      -- the following test does not hold
      testCase "List comparison (same length)" $
        [1, 2, 3] `compare` [1, 2, 2] @?= LT,
      -- the following test does not hold
      testCase "throw error" $
        error "Test",
      -- the following test does not hold
      testCase "timeout" $
        let f x = f x in f 0,
      -- the following test does not hold
      testCase "exception" $
        throwIO $ Overflow
    ]