Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 30 additions & 11 deletions test/StepSpec.hs
Original file line number Diff line number Diff line change
@@ -1,31 +1,50 @@
{-# LANGUAGE NamedFieldPuns #-}
module StepSpec where

import Test.Hspec (Spec, describe, it)
import Control.OutputCapable.Blocks (LangM)
import TestHelpers (doesNotRefuse)
import Test.QuickCheck (forAll)
import Config (StepInst(solution), dStepConf, StepAnswer (StepAnswer))
import Test.QuickCheck (forAll, Gen)
import Config (StepInst(solution), dStepConf, StepAnswer (StepAnswer), StepConfig (..))
import LogicTasks.Semantics.Step (verifyQuiz, genStepInst, description, verifyStatic, partialGrade', completeGrade')
import FillSpec (validBoundsBaseConfig)


validBoundsStepConfig :: Gen StepConfig
validBoundsStepConfig = do
baseConf <- validBoundsBaseConfig
return $ StepConfig
{ baseConf
, useSetNotation = False
, printSolution = False
, extraText = Nothing
, offerUnicodeInput = False
}

spec :: Spec
spec = do
describe "config" $ do
it "default config should pass config check" $
doesNotRefuse (verifyQuiz dStepConf :: LangM Maybe)
it "validBoundsStepConfig should pass config check" $
forAll validBoundsStepConfig $ \config ->
doesNotRefuse (verifyQuiz config :: LangM Maybe)
describe "description" $ do
it "should not reject" $
forAll (genStepInst dStepConf) $ \inst ->
doesNotRefuse (description True inst :: LangM Maybe)
forAll validBoundsStepConfig $ \config ->
forAll (genStepInst config) $ \inst ->
doesNotRefuse (description True inst :: LangM Maybe)
describe "generateStepInst" $ do
it "should pass verifyStatic" $
forAll (genStepInst dStepConf) $ \inst ->
doesNotRefuse
(verifyStatic inst :: LangM Maybe)
forAll validBoundsStepConfig $ \config ->
forAll (genStepInst config) $ \inst ->
doesNotRefuse
(verifyStatic inst :: LangM Maybe)
it "possible solution passes partialGrade" $
forAll (genStepInst dStepConf) $ \inst ->
doesNotRefuse (partialGrade' inst $ StepAnswer $ Just $ solution inst :: LangM Maybe)
forAll validBoundsStepConfig $ \config ->
forAll (genStepInst config) $ \inst ->
doesNotRefuse (partialGrade' inst $ StepAnswer $ Just $ solution inst :: LangM Maybe)
it "possible solution passes completeGrade" $
forAll (genStepInst dStepConf) $ \inst ->
doesNotRefuse (completeGrade' inst $ StepAnswer $ Just $ solution inst :: LangM Maybe)
forAll validBoundsStepConfig $ \config ->
forAll (genStepInst config) $ \inst ->
doesNotRefuse (completeGrade' inst $ StepAnswer $ Just $ solution inst :: LangM Maybe)