From 5f321faee636cbbb5024810df9bd6834ea5fb61b Mon Sep 17 00:00:00 2001 From: nimec01 <24428341+nimec01@users.noreply.github.com> Date: Thu, 6 Mar 2025 15:42:32 +0100 Subject: [PATCH] add generator for StepConfig --- test/StepSpec.hs | 41 ++++++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/test/StepSpec.hs b/test/StepSpec.hs index e8d7ec4d..efec5234 100644 --- a/test/StepSpec.hs +++ b/test/StepSpec.hs @@ -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)