Rough draft of modules
This includes a naive implementation of a module system where imported files have their imports recursively handled, strips the module/import AST nodes, and then evals everything into a flat environment using namespace prefixes like "Module.function".
This commit is contained in:
20
test/Spec.hs
20
test/Spec.hs
@ -501,19 +501,15 @@ fileEval = testGroup "File evaluation tests"
|
||||
demos :: TestTree
|
||||
demos = testGroup "Test provided demo functionality"
|
||||
[ testCase "Structural equality demo" $ do
|
||||
library <- liftIO $ evaluateFile "./lib/base.tri"
|
||||
res <- liftIO $ evaluateFileWithContext library "./demos/equality.tri"
|
||||
decodeResult (result res) @?= "t t"
|
||||
res <- liftIO $ evaluateFileResult "./demos/equality.tri"
|
||||
decodeResult res @?= "t t"
|
||||
, testCase "Convert values back to source code demo" $ do
|
||||
library <- liftIO $ evaluateFile "./lib/base.tri"
|
||||
res <- liftIO $ evaluateFileWithContext library "./demos/toSource.tri"
|
||||
decodeResult (result res) @?= "\"(t (t (t t) (t t t)) (t t (t t t)))\""
|
||||
res <- liftIO $ evaluateFileResult "./demos/toSource.tri"
|
||||
decodeResult res @?= "\"(t (t (t t) (t t t)) (t t (t t t)))\""
|
||||
, testCase "Determining the size of functions" $ do
|
||||
library <- liftIO $ evaluateFile "./lib/base.tri"
|
||||
res <- liftIO $ evaluateFileWithContext library "./demos/size.tri"
|
||||
decodeResult (result res) @?= "454"
|
||||
res <- liftIO $ evaluateFileResult "./demos/size.tri"
|
||||
decodeResult res @?= "454"
|
||||
, testCase "Level Order Traversal demo" $ do
|
||||
library <- liftIO $ evaluateFile "./lib/base.tri"
|
||||
res <- liftIO $ evaluateFileWithContext library "./demos/levelOrderTraversal.tri"
|
||||
decodeResult (result res) @?= "\"\n1 \n2 3 \n4 5 6 7 \n8 11 10 9 12 \""
|
||||
res <- liftIO $ evaluateFileResult "./demos/levelOrderTraversal.tri"
|
||||
decodeResult res @?= "\"\n1 \n2 3 \n4 5 6 7 \n8 11 10 9 12 \""
|
||||
]
|
||||
|
5
test/modules-1.tri
Normal file
5
test/modules-1.tri
Normal file
@ -0,0 +1,5 @@
|
||||
!module Test
|
||||
|
||||
!import "lib/base.tri" Lib
|
||||
|
||||
main = Lib.not? t
|
1
test/modules-2.tri
Normal file
1
test/modules-2.tri
Normal file
@ -0,0 +1 @@
|
||||
n = t t t
|
Reference in New Issue
Block a user