1-- SPDX-FileCopyrightText: 2026 Sören Tempel <soeren+git@soeren-tempel.net>2--3-- SPDX-License-Identifier: GPL-3.0-only4{-# LANGUAGE OverloadedStrings #-}56module KTest (ktestTests) where78import Data.Binary (decode, encode)9import Data.ByteString.Lazy qualified as BL10import Data.KTest11import Test.Tasty12import Test.Tasty.HUnit1314rawDecode :: FilePath -> IO (KTest, BL.ByteString)15rawDecode fp = do16 content <- BL.readFile fp17 pure (decode content, content)1819------------------------------------------------------------------------2021ktestTests :: TestTree22ktestTests =23 testGroup24 "KTest"25 [ testCase "single-variable.ktest" $ do26 (ktest, content) <- rawDecode "test/testdata/single-variable.ktest"2728 let expected =29 KTest30 { ktArgs = ["shift-test.bc"],31 ktObjs =32 [ KTestObj33 { objName = "x",34 objBytes = "\NUL\NUL\NUL\NUL"35 }36 ]37 }3839 ktest @?= expected40 encode expected @?= content,41 testCase "multiple-variables.ktest" $ do42 (ktest, content) <- rawDecode "test/testdata/multiple-variables.ktest"4344 let expected =45 KTest46 { ktArgs = ["main.bc"],47 ktObjs =48 [ KTestObj "first" "\NUL\NUL\NUL@",49 KTestObj "second" "\SOH\NUL\NUL@"50 ]51 }5253 ktest @?= expected54 encode expected @?= content55 ]