packages feed

LslPlus-0.1.2: src/Language/Lsl/Internal/TestResult.hs

module Language.Lsl.Internal.TestResult(TestResult(..),resultToXML, emitTestResult) where

import Language.Lsl.Internal.XmlCreate(emit,emitSimple)
import qualified Language.Lsl.Internal.XmlCreate as X

data TestResult = ErrorResult String String [(Int,String)] |
                  FailureResult String String [(Int,String)] |
                  Timeout String [(Int,String)] |
                  SuccessResult String [(Int,String)]
    deriving Show
    
okResult = 0
failureResult = 1
errorResult = 2

resultToXML = flip emitTestResult ""

emitTestResult (ErrorResult name msg log) = emitResult name errorResult msg log
emitTestResult (FailureResult name msg log) = emitResult name failureResult msg log
emitTestResult (Timeout name log) = emitResult name failureResult "timeout" log
emitTestResult (SuccessResult name log) = emitResult name okResult "ok" log

emitResult name code msg log =
    emit "test-result" [] [emitSimple "name" [] name, emitResultInfo code msg, emitLog log]

emitResultInfo code msg =
    emit "resultInfo" [] [emitSimple "resultCode" [] (show code), emitSimple "resultMessage" [] msg]

emitLog log =
    emit "messages" [] $ map emitMessage (reverse log)

emitMessage (time,text) =
    emit "message" [] [emitSimple "time" [] (show time), emitSimple "text" [] text]


-- escapeString =
--     let escape [] = []
--         escape ('\n':cs) = '\\':'n':(escape cs)
--         escape (c:cs) = c:(escape cs)
--     in escape . xmlEscape