packages feed

countdown-numbers-game-0.0: test/Test/Solve.hs

-- Do not edit! Automatically created with doctest-extract from src/Solve.hs
{-# LINE 12 "src/Solve.hs" #-}

module Test.Solve where

import Test.DocTest.Base
import qualified Test.DocTest.Driver as DocTest

{-# LINE 13 "src/Solve.hs" #-}
import     qualified Solve
import     qualified Data.List as List
import     Data.Eq.HT (equating)
import     Control.Functor.HT (void)
import     Test.Utility
       (solve, genOperands, genResult, genEquation,
        normalizeSubExpr, normalizeSum)
import     qualified Test.QuickCheck as QC

test :: DocTest.T ()
test = do
 DocTest.printPrefix "Solve:138: "
{-# LINE 138 "src/Solve.hs" #-}
 DocTest.example(
{-# LINE 138 "src/Solve.hs" #-}
    solve [25, 50, 75, 100, 3, 6] 952
  )
  [ExpectedLine [LineChunk "25+6*75*(3+100)/50"],ExpectedLine [LineChunk "(3*75*(6+100)-50)/25"]]
 DocTest.printPrefix "Solve:142: "
{-# LINE 142 "src/Solve.hs" #-}
 DocTest.example(
{-# LINE 142 "src/Solve.hs" #-}
    solve [75, 50, 2, 3, 8, 7] 812
  )
  [ExpectedLine [LineChunk "50+(2+75)*(3+7)-8"],ExpectedLine [LineChunk "2*7*(8+50)"],WildCardLine,ExpectedLine [LineChunk "50*(7+75)/(2+3)-8"],ExpectedLine [LineChunk "(3+(2+75)/7)*(8+50)"]]
 DocTest.printPrefix "Solve:149: "
{-# LINE 149 "src/Solve.hs" #-}
 DocTest.example(
{-# LINE 149 "src/Solve.hs" #-}
    solve [100, 75, 50, 10, 5, 1] 102
  )
  [ExpectedLine [LineChunk "1+100+5*10/50"],ExpectedLine [LineChunk "1+100+50/5/10"],WildCardLine,ExpectedLine [LineChunk "(100+50/(75-5*10))/1"],ExpectedLine [LineChunk "(100+(5+75)/(50-10))/1"],ExpectedLine [LineChunk "(100+(75-5-50)/10)/1"]]
 DocTest.printPrefix "Solve:158: "
{-# LINE 158 "src/Solve.hs" #-}
 DocTest.property(
{-# LINE 158 "src/Solve.hs" #-}
        
   QC.forAll genOperands $ \xs ->
   QC.forAll (genResult xs) $ \x ->
      not $ null $ Solve.run (xs,x)
  )
 DocTest.printPrefix "Solve:164: "
{-# LINE 164 "src/Solve.hs" #-}
 DocTest.property(
{-# LINE 164 "src/Solve.hs" #-}
        
   QC.forAll genOperands $ \xs ->
   QC.forAll (genResult xs) $ \x ->
   QC.forAll (QC.shuffle xs) $ \xs1 ->
      void (Solve.run (xs,x)) == void (Solve.run (xs1,x))
  )
 DocTest.printPrefix "Solve:171: "
{-# LINE 171 "src/Solve.hs" #-}
 DocTest.property(
{-# LINE 171 "src/Solve.hs" #-}
        
   QC.forAll genOperands $ \xs ->
   QC.forAll (genResult xs) $ \x ->
   QC.forAll (QC.shuffle xs) $ \xs1 ->
      equating (List.sort . map (normalizeSubExpr normalizeSum))
         (Solve.run (xs,x)) (Solve.run (xs1,x))
  )
 DocTest.printPrefix "Solve:179: "
{-# LINE 179 "src/Solve.hs" #-}
 DocTest.property(
{-# LINE 179 "src/Solve.hs" #-}
        
   QC.forAll genOperands $ \xs ->
   QC.forAll (genEquation xs) $ \(expr,x) ->
      elem expr $
      List.sort $ map (normalizeSubExpr normalizeSum) $ Solve.run (xs,x)
  )