module Tests where

import Types

test1 = TLam 0 [("x", 0), ("y", 0), ("z", 0)]
  (TOp 1 Plus
        (TVar "x" 0)
        (TOp 2 Plus
          (TVar "y" 0)
          (TVar "z" 0)))

test2 =
  (TOp 1 Plus
        (TVar "x" 0)
        (TOp 2 Plus
          (TVar "y" 1)
          (TVar "z" 1)))

test3 =
  (TApp 0
   (TLam 0 [("x", 0), ("y", 0), ("z", 0)]
   (TOp 1 Plus
     (TVar "x" 0)
     (TOp 2 Plus
       (TVar "y" 0)
       (TVar "z" 0))))
    [TVar "x" 1, TVar "x" 1, TVar "x" 1])

test4 =
  (TApp 0
   (TLam 0 [("x", 0), ("y", 0), ("z", 0)]
   (TOp 1 Plus
     (TVar "x" 0)
     (TOp 2 Plus
       (TVar "y" 0)
       (TVar "z" 0))))
    [TVar "x" 1, TVar "x" 1])

test5 =
  (TApp 1
   (TApp 0
   (TLam 0 [("x", 0), ("y", 0), ("z", 0)]
   (TOp 1 Plus
     (TVar "x" 0)
     (TOp 2 Plus
       (TVar "y" 0)
       (TVar "z" 0))))
    [TVar "x" 1, TVar "x" 1])
  [TVar "g" 1])

test6 =
  (TApp 1
   (TApp 0
   (TLam 0 [("x", 0), ("y", 0), ("z", 0)]
   (TOp 1 Plus
     (TVar "x" 0)
     (TOp 2 Plus
       (TVar "y" 0)
       (TVar "z" 0))))
    [TVar "x" 1, TVar "x" 1])
  [TLam 2 [("h", 1)] (TOp 3 Times (TVar "h" 1) (TVar "h" 1))])
