-
-
Notifications
You must be signed in to change notification settings - Fork 28
Expand file tree
/
Copy pathtest-hslua-module-version.hs
More file actions
56 lines (48 loc) · 1.84 KB
/
test-hslua-module-version.hs
File metadata and controls
56 lines (48 loc) · 1.84 KB
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
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
{-|
Module : Main
Copyright : © 2021 Albert Krewinkel
License : MIT
Maintainer : Albert Krewinkel <albert+hslua@zeitkraut.de>
Tests for the `version` Lua module.
-}
module Main (main) where
import Control.Monad (void)
import HsLua.Core (Lua, top)
import HsLua.Packaging.Module
(preloadModule, preloadModuleWithName, pushModule, registerModule)
import HsLua.Module.Version (documentedModule)
import Test.Tasty (TestTree, defaultMain, testGroup)
import Test.Tasty.HUnit (assertEqual, testCase)
import Test.Tasty.Lua (translateResultsFromFile)
import qualified HsLua.Core as Lua
main :: IO ()
main = do
luaTestResults <- Lua.run @Lua.Exception $ do
Lua.openlibs
registerModule documentedModule
Lua.pop 1
translateResultsFromFile "test/test-version.lua"
defaultMain $ testGroup "hslua-module-version" [tests, luaTestResults]
-- | HSpec tests for the Lua 'version' module
tests :: TestTree
tests = testGroup "HsLua version module"
[ testCase "version module can be pushed to the stack" $
Lua.run (void (pushModule documentedModule) :: Lua ())
, testCase "version module can be added to the preloader" . Lua.run $ do
Lua.openlibs
preloadModule documentedModule
assertEqual' "function not added to preloader" Lua.TypeFunction =<< do
void $ Lua.getglobal "package"
*> Lua.getfield top "preload"
*> Lua.getfield top "Version"
Lua.ltype (-1)
, testCase "version module can be loaded as hsversion" . Lua.run $ do
Lua.openlibs
preloadModuleWithName documentedModule "hsversion"
assertEqual' "loading the module fails " Lua.OK =<<
Lua.dostring "require 'hsversion'"
]
assertEqual' :: (Show a, Eq a) => String -> a -> a -> Lua ()
assertEqual' msg expected = Lua.liftIO . assertEqual msg expected