module HobTest.Context.Stubbed ( loadStubbedContext, stubbedFileLoader, failingFileWriter ) where import Control.Monad.Error (throwError) import Data.Text (pack) import Data.Tree import qualified Hob.Context as HC import qualified Hob.Context.FileContext as HFC import qualified Hob.Context.StyleContext as HSC import Hob.DirectoryTree import Hob.Ui fileTreeStub :: IO (Forest DirectoryTreeElement) fileTreeStub = return [ Node (DirectoryTreeElement "a" "/xxx/a" True) [ Node (DirectoryTreeElement "b" "/xxx/a/b" False) []], Node (DirectoryTreeElement "a.b" "/xxx/a.b" False) [], Node (DirectoryTreeElement "c" "/xxx/c" False) [], Node (DirectoryTreeElement "-" "/xxx/cannotRead" False) []] failingFileWriter :: HFC.FileWriter failingFileWriter _ _ = throwError $ userError "cannot write files stub" stubbedFileLoader :: HFC.FileLoader stubbedFileLoader "/xxx/c" = return $ Just $ pack "file contents for /xxx/c" stubbedFileLoader "/xxx/a/b" = return $ Just $ pack "file contents for /xxx/a/b" stubbedFileLoader "/xxx/a.b" = return $ Just $ pack "file contents for /xxx/a.b" stubbedFileLoader "/xxx/cannotRead" = return Nothing stubbedFileLoader "/xxx/testName.hs" = return $ Just $ pack "file contents for /xxx/testName.hs" stubbedFileLoader path = throwError $ userError $ "cannot open unknown file: "++path loadStubbedContext :: IO HC.Context loadStubbedContext = do sc <- HSC.defaultStyleContext "app-data" fc <- HFC.defaultFileContext stubbedFileLoader failingFileWriter fileTreeStub loadGui fc sc