-- Let's test it:

testSwitch = opRunRunner switchOp [CONSE t e' , p , ps , SU n]
                         judge "switch didn't work :("
    where t = N (P ([("",0)] := DECL :<: UID))
          e'= N (P ([("",1)] := DECL :<: enumU))
          p = N (P ([("",2)] := DECL :<: ARR (ENUMT (CONSE t e')) SET))
          ps = N (P ([("",3)] := DECL :<: branchesOp @@ [CONSE t e', ARR (ENUMT (CONSE t e')) SET]))
          n = N (P ([("",4)] := DECL :<: ENUMT (CONSE t e')))
          typ = SET
          orig = switchOpRun t e' p ps n
          judge val = equal (typ :>: (val, orig)) (B0, 5)

-- Desc
-- ----

-- Desc on Arg is supposed to build this term:
testSwitch = opRunRunner switchOp [CONSE t e' , p , ps , SU n]
                         judge "switch didn't work :("
    where t = N (P ([("",0)] := DECL :<: UID))
          e'= N (P ([("",1)] := DECL :<: enumU))
          p = N (P ([("",2)] := DECL :<: ARR (ENUMT (CONSE t e')) SET))
          ps = N (P ([("",3)] := DECL :<: branchesOp @@ [CONSE t e', ARR (ENUMT (CONSE t e')) SET]))
          n = N (P ([("",4)] := DECL :<: ENUMT (CONSE t e')))
          typ = SET
          orig = switchOpRun t e' p ps n
          judge val = equal (typ :>: (val, orig)) (B0, 5)

-- Desc
-- ----

-- Desc on Arg is supposed to build this term:
testSwitch = opRunRunner switchOp [CONSE t e' , p , ps , SU n]
                         judge "switch didn't work :("
    where t = N (P ([("",0)] := DECL :<: UID))
          e'= N (P ([("",1)] := DECL :<: enumU))
          p = N (P ([("",2)] := DECL :<: ARR (ENUMT (CONSE t e')) SET))
          ps = N (P ([("",3)] := DECL :<: branchesOp @@ [CONSE t e', ARR (ENUMT (CONSE t e')) SET]))
          n = N (P ([("",4)] := DECL :<: ENUMT (CONSE t e')))
          typ = SET
          orig = switchOpRun t e' p ps n
          judge val = equal (typ :>: (val, orig)) (B0, 5)

-- Desc
-- ----

-- Desc on Arg is supposed to build this term: