module Tests.Structure where
import Clash.Shockwaves.Internal.Types
import Data.Either (lefts)
import qualified Data.List as L
import Data.Map
import Prelude
-- Test whether a translation matches the provided structure
testStructure :: Structure -> Translation -> Either String ()
testStructure (Structure s) (Translation _ren subs) = res
where
res = case lefts $ L.map go subs of
[] -> Right ()
x : _ -> Left x
go (name, trans) = case smap !? name of
Just strct -> testStructure strct trans
Nothing -> Left ("Unknown field " <> name)
smap = fromList s