1-- SPDX-FileCopyrightText: 2025 Sören Tempel <soeren+git@soeren-tempel.net>2--3-- SPDX-License-Identifier: GPL-3.0-only45module Concolic (exprTests) where67import Data.Maybe (fromJust)8import Data.Word (Word8)9import Language.QBE.Simulator.Concolic.Expression qualified as C10import Language.QBE.Simulator.Default.Expression qualified as D11import Language.QBE.Simulator.Expression qualified as E12import Language.QBE.Simulator.Memory qualified as MEM13import Language.QBE.Types qualified as QBE14import Test.Tasty15import Test.Tasty.HUnit1617-- TODO: QuickCheck tests against the default interpreter's implementation.18storeTests :: TestTree19storeTests =20 testGroup21 "Storage Instance Tests"22 -- TODO: Test case for partial concoilc bytes23 [ testCase "Convert concrete concolic value to bytes and back" $24 do25 let value = E.fromLit (QBE.Base QBE.Word) 0xdeadbeef :: C.Concolic D.RegVal2627 let bytes = MEM.toBytes value :: [C.Concolic Word8]28 length bytes @?= 42930 let valueFromBytes = fromJust $ MEM.fromBytes (QBE.LBase QBE.Word) bytes31 C.concrete value @?= C.concrete valueFromBytes32 ]3334exprTests :: TestTree35exprTests = testGroup "Expression tests" [storeTests]