packages feed

dynloader-0.1.0: test/Spec.hs

{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE Rank2Types #-}

import System.Plugins.Dynloader
import Test.Hspec
import Data.Dynamic
import Data.Maybe

main :: IO ()
main = hspec $ do
  describe "unasfeLoad" $ do
    it "can load foreign value"  $
      unsafeLoad [] [] "3" `shouldReturn` 3

    it "can load Prelude function"  $
      do
        plus <- unsafeLoad [] ["Prelude"] "(+)"
        return $ plus 1 2

        `shouldReturn` 3

  describe "load" $
    it "can return Prelude data wraped in Dynamic"  $
      do
        dyn <- load [] ["Prelude"] "Just True"
        let value = fromJust $ fromDynamic dyn
        return $ value

        `shouldReturn` Just True