packages feed

set-cover-0.1.2: test/DocTest/GraphColoring/Solve.hs

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

module DocTest.GraphColoring.Solve where

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

{-# LINE 17 "example/GraphColoring/Solve.hs" #-}
import     qualified GraphColoring.CutEnumSet as CutEnumSet
import     qualified Math.SetCover.Exact as ESC

import     qualified Data.Set as Set
import     qualified Data.List.Key as Key
import     Data.Either.HT (maybeRight)
import     Data.Maybe (catMaybes, mapMaybe)

import     qualified Test.QuickCheck as QC
import     Test.QuickCheck ((===))

solve     :: ([Char], [Edge Int]) -> [[(Int, Char)]]
solve     =
       map (Key.sort fst . catMaybes) . ESC.search .
       ESC.compressState Set.toList . initialize assigns

test :: DocTest.T ()
test = do
 DocTest.printPrefix "GraphColoring.Solve:155: "
{-# LINE 155 "example/GraphColoring/Solve.hs" #-}
 DocTest.example(
{-# LINE 155 "example/GraphColoring/Solve.hs" #-}
    solve example0
  )
  [ExpectedLine [LineChunk "[[(0,'a'),(1,'b'),(2,'a'),(3,'b'),(4,'a'),(5,'b')]]"]]
 DocTest.printPrefix "GraphColoring.Solve:162: "
{-# LINE 162 "example/GraphColoring/Solve.hs" #-}
 DocTest.example(
{-# LINE 162 "example/GraphColoring/Solve.hs" #-}
    minimum $ solve example1
  )
  [ExpectedLine [LineChunk "[(0,'a'),(1,'b'),(2,'a'),(3,'b'),(4,'c')]"]]
 DocTest.printPrefix "GraphColoring.Solve:169: "
{-# LINE 169 "example/GraphColoring/Solve.hs" #-}
 DocTest.example(
{-# LINE 169 "example/GraphColoring/Solve.hs" #-}
    solve example2
  )
  [ExpectedLine [LineChunk "[[(0,'a'),(1,'b'),(2,'c')]]"]]
 DocTest.printPrefix "GraphColoring.Solve:176: "
{-# LINE 176 "example/GraphColoring/Solve.hs" #-}
 DocTest.example(
{-# LINE 176 "example/GraphColoring/Solve.hs" #-}
    solve example3
  )
  [ExpectedLine [LineChunk "[[(0,'a'),(1,'b'),(2,'c'),(3,'b')]]"]]
 DocTest.printPrefix "GraphColoring.Solve:183: "
{-# LINE 183 "example/GraphColoring/Solve.hs" #-}
 DocTest.example(
{-# LINE 183 "example/GraphColoring/Solve.hs" #-}
    solve example4
  )
  [ExpectedLine [LineChunk "[]"]]
 DocTest.printPrefix "GraphColoring.Solve:191: "
{-# LINE 191 "example/GraphColoring/Solve.hs" #-}
 DocTest.example(
{-# LINE 191 "example/GraphColoring/Solve.hs" #-}
    length $ ESC.search $ ESC.compressState Set.toList $ ESC.initState $ assigns ['a'..'e'] (complete 5)
  )
  [ExpectedLine [LineChunk "120"]]
 DocTest.printPrefix "GraphColoring.Solve:194: "
{-# LINE 194 "example/GraphColoring/Solve.hs" #-}
 DocTest.property(
{-# LINE 194 "example/GraphColoring/Solve.hs" #-}
        
   QC.forAll (QC.choose (2,5)) $ \n ->
   QC.forAll (QC.choose (2,7)) $ \k ->

   (length $ ESC.search $ ESC.compressState Set.toList $
      ESC.initState $ assigns (take k ['a'..]) (complete n))
   ===
   product (take n [k,(k-1)..])
  )
 DocTest.printPrefix "GraphColoring.Solve:204: "
{-# LINE 204 "example/GraphColoring/Solve.hs" #-}
 DocTest.property(
{-# LINE 204 "example/GraphColoring/Solve.hs" #-}
        
   QC.forAll (QC.choose (2,5)) $ \n ->
   QC.forAll (QC.choose (2,7)) $ \k ->

   (length $ CutEnumSet.search $ CutEnumSet.initState $
      ESC.intSetFromSetAssigns $ assignsEdgeColor (take k ['a'..]) (complete n))
   ===
   if n<=k then 1 else 0
  )
 DocTest.printPrefix "GraphColoring.Solve:218: "
{-# LINE 218 "example/GraphColoring/Solve.hs" #-}
 DocTest.example(
{-# LINE 218 "example/GraphColoring/Solve.hs" #-}
      
   map (Key.sort fst . mapMaybe maybeRight) $
   CutEnumSet.search $ CutEnumSet.initState $
   ESC.intSetFromSetAssigns $ uncurry assignsEdgeColor example5
  )
  [ExpectedLine [LineChunk "[[(1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e'),(6,'f'),(7,'g'),(8,'h'),(9,'i'),(10,'j')]]"]]