1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
{-# LANGUAGE PackageImports #-}
module Main (main) where
import Prelude ()
import Game.LambdaHack.Core.Prelude
import qualified Data.Text as T
import Options.Applicative
import System.IO.Unsafe (unsafePerformIO)
import Test.Tasty
import Test.Tasty.HUnit
import Game.LambdaHack.Client.UI.UIOptions
import Game.LambdaHack.Client.UI.UIOptionsParse
import Game.LambdaHack.Common.ClientOptions
import qualified Game.LambdaHack.Content.RuleKind as RK
import Game.LambdaHack.Server
-- For the case of flattened .cabal file, to avoid ambiguity.
import qualified "Allure" Content.RuleKind
import "Allure" TieKnot
main :: IO ()
main = defaultMain tests
tests :: TestTree
tests = testGroup "Tests" [integrationTests]
integrationTests :: TestTree
integrationTests = testGroup "integrationTests" $
[ testCase "Null frontend; 5 frames" $ do
let seed = "SMGen 131 141"
args = words "--dbgMsgSer --logPriority 4 --newGame 1 --noAnim --maxFps 100000 --frontendNull --benchmark --stopAfterFrames 5 --automateAll --keepAutomated --gameMode crawl"
++ [ "--setDungeonRng", seed, "--setMainRng", seed]
serverOptions <- handleParseResult $ execParserPure defaultPrefs serverOptionsPI args
tieKnot serverOptions
]
#ifndef USE_BROWSER
++
let corule = RK.makeData Content.RuleKind.standardRules
uiOptions = unsafePerformIO $ mkUIOptions corule defClientOptions
testFontset :: Int -> String -> TestTree
testFontset n fontsetName =
testCase ("SDL fronted; init only; " ++ fontsetName ++ " fontset") $ do
-- This test only works when run from the same directory that
-- the .cabal file is in. And this is what Debian needs, so OK.
-- The hacky log priority 0 tells SDL frontend to init
-- and quit at once, for testing on CIs without graphics access.
let seed = "SMGen " ++ show (13 + 2 * n) ++ " " ++ show (15 + 4 * n)
args2 = words "--dbgMsgSer --logPriority 0 --newGame 3 --maxFps 100000 --benchmark --stopAfterFrames 5 --automateAll --keepAutomated --gameMode battle"
++ [ "--setDungeonRng", seed, "--setMainRng", seed
, "--fontset", fontsetName ]
serverOptions2 <- handleParseResult $ execParserPure defaultPrefs serverOptionsPI args2
tieKnot serverOptions2
in zipWith testFontset [0..] $ map (T.unpack . fst) $ uFontsets uiOptions
#endif
|