module Worksheets.Writing.LatinSpec where import Data.Function (($), (&), (.)) import Data.Functor ((<&>)) import Data.GenValidity.Map () import Data.GenValidity.Sequence () import Data.GenValidity.Set () import Data.GenValidity.Text () import Data.List qualified as List import Data.Text qualified as Text import Data.Validity.Map () import Data.Validity.Set () import Data.Validity.Text () import GHC.Stack (HasCallStack) import System.FilePath (joinPath, pathSeparator, (<.>), ()) import System.FilePath qualified as Sys import Test.Syd import Worksheets.Writing.Latin qualified runPart :: Sys.FilePath -> TestDefM outers () () runPart part = do descrPath <- getTestDescriptionPath let dirPath = List.reverse descrPath <&> Text.unpack . Text.replace (Text.pack ".") (Text.singleton pathSeparator) & joinPath let inpPath = "tests" dirPath part <.> "txt" let outPath = "tests" dirPath part <.> "html" it part do goldenByteStringBuilderFile outPath $ Worksheets.Writing.Latin.worksheet inpPath spec :: HasCallStack => Spec spec = do describe "frozen" do describe "let-it-go" do describe "en" do runPart "part1" runPart "part2" describe "fr" do runPart "part1" runPart "part2" runPart "part3" runPart "part4" runPart "part5" runPart "part6" runPart "part7" describe "in-summer" do describe "en" do runPart "part1" runPart "part2" runPart "part3" runPart "part4"