-
Notifications
You must be signed in to change notification settings - Fork 10
/
Spec.hs
64 lines (56 loc) · 2.34 KB
/
Spec.hs
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
58
59
60
61
62
module Main where
import Test.Tasty.Hspec
import ATTParser
import Control.Monad (forM_)
main :: IO ()
main = hspec $ do
describe "asm parser" $ do
-- 64bit
forM_ [("x86_64 linux", "test/asm/x86_64-linux.s")
,("x86_64 macos", "test/asm/x86_64-mac.s")
,("x86_64 mingw", "test/asm/x86_64-mingw32.s")
,("aarch64 ios", "test/asm/aarch64-ios.s")
,("aarch64 linux","test/asm/aarch64.s")
,("sparc64 linux","test/asm/sparc64-linux.s")
,("mips64 linux", "test/asm/mips64-linux.s")
,("powerpc64 linux","test/asm/powerpc64-linux.s")
,("powerpc64le linux","test/asm/powerpc64le-linux.s")
,("hppa linux", "test/asm/hppa-linux.s")
,("m68k linux", "test/asm/m68k-linux.s")
,("alpha linux", "test/asm/alpha-linux.s")
,("ia64 linux", "test/asm/ia64-linux.s")
,("nios2 linux", "test/asm/nios2-linux.s")
,("s390 linux", "test/asm/s390-linux.s")
,("s390x linux", "test/asm/s390x-linux.s")
,("sh4 linux", "test/asm/sh4-linux.s")
]
$ \(d, f) ->do
context d $ do
x <- runIO $ parse f
it "x should be 1" $ do
lookupInteger "x" x `shouldBe` (Just 1)
it "z should be 0xffffffffffffffff" $ do
lookupInteger "y" x `shouldBe` (Just 0xffffffffffffffff)
it "z should be -1" $ do
lookupInteger "z" x `shouldBe` (Just (-1))
it "t should be \"Hello World\\\"\\n\\0\"" $ do
lookupString "t" x `shouldBe` (Just "Hello World\" 12345\0")
-- 32 bit
forM_ [("arm ios", "test/asm/arm-ios.s")
,("arm linux", "test/asm/arm.s")
,("x86 linux", "test/asm/x86-linux.s")
,("sparc linux", "test/asm/sparc-linux.s")
,("mips linux", "test/asm/mips-linux.s")
,("powerpc linux","test/asm/powerpc-linux.s")
]
$ \(d, f) ->do
context d $ do
x <- runIO $ parse f
it "x should be 1" $ do
lookupInteger "x" x `shouldBe` (Just 1)
it "z should be 0xffffffff" $ do
lookupInteger "y" x `shouldBe` (Just 0xffffffff)
it "z should be -1" $ do
lookupInteger "z" x `shouldBe` (Just (-1))
it "t should be \"Hello World\\\"\\n\\0\"" $ do
lookupString "t" x `shouldBe` (Just "Hello World\" 12345\0")