packages feed

vinyl-gl-0.3: tests/BasicTest.hs

{-# LANGUAGE DataKinds, KindSignatures, TypeOperators #-}
import Data.Vinyl
import Data.Word
import Foreign.Ptr (nullPtr, plusPtr)
import Graphics.Rendering.OpenGL (DataType(..), GLfloat,
                                  VertexArrayDescriptor(..))
import Graphics.VinylGL
import Linear (V1(..), V3(..))
import Test.Framework (defaultMain)
import Test.Framework.Providers.HUnit (hUnitTestToTests)
import Test.HUnit (Test(..), (~=?))

type Pos = '("vpos", V3 GLfloat)
type Tag = '("tagByte", V1 Word8)

tag :: SField Tag
tag = SField

type Vertex = FieldRec [Pos, Tag]

testVad :: Test
testVad = TestLabel "Sample VAD Creation" $
          vad ~=? fieldToVAD tag (SField::SField Vertex)
  where vad = VertexArrayDescriptor 1 UnsignedByte 13 (nullPtr `plusPtr` 12)

main :: IO ()
main = defaultMain . hUnitTestToTests $ testVad