packages feed

crocodile-0.1: app/src/Tests/ColourTest.hs

module Tests.ColourTest where

import Colour
import Test.HUnit

test_Add = TestCase (assertEqual "Colour addition" expected (v1 + v2))
    where
      v1 = Colour 1 2 3 4
      v2 = Colour 10 20 30 40
      expected = Colour 11 22 33 44

test_Sub = TestCase (assertEqual "Colour subtraction" expected (v1 - v2))
    where
      v1 = Colour 10 20 30 40
      v2 = Colour 5 10 15 20
      expected = Colour 5 10 15 20

test_Mul = TestCase (assertEqual "Colour multiplication" expected (v1 * v2))
    where
      v1 = Colour 10 20 30 40
      v2 = Colour 5 10 15 20
      expected = Colour 50 200 450 800

test_Abs = TestCase (assertEqual "Colour abs" expected (abs v1))
    where
      v1 = Colour 10 (-20) 0 (-40)
      expected = Colour 10 20 0 40

test_Signum = TestCase (assertEqual "Colour signum" expected (signum v1))
    where
      v1 = Colour 10 (-20) 0 (-40)
      expected = Colour 1 (-1) 0 (-1)

test_fromInteger = TestCase (assertEqual "Colour fromInteger" expected (signum v1))
    where
      v1 = fromInteger 5
      expected = Colour 5 5 5 5

test_Div = TestCase (assertEqual "Colour division" expected (v1 / v2))
    where
      v1 = Colour 10 20 30 40
      v2 = Colour 5 10 15 20
      expected = Colour 2 2 2 2

test_AddScalar = TestCase (assertEqual "Colour add scalar" expected (v1 <+> k))
    where
      v1 = Colour 10 20 30 40
      k = 1
      expected = Colour 11 21 31 41

test_SubScalar = TestCase (assertEqual "Colour sub scalar" expected (v1 <-> k))
    where
      v1 = Colour 10 20 30 40
      k = 1
      expected = Colour 9 19 29 39

test_Clamp = TestCase (assertEqual "Colour clamp" expected (clamp v1))
    where
      v1 = Colour 2 0 (-5) 0.5
      expected = Colour 1 0 0 0.5

test_Luminance0 = TestCase (assertEqual "Luminance = 0" expected (luminance v1))
    where
      v1 = Colour 0 0 0 0
      expected = 0

test_Luminance1 = TestCase (assertEqual "Luminance = 1" expected (luminance v1))
    where
      v1 = Colour 1 1 1 1
      expected = 0.9999999999999999

tests_Colour = TestList [
                TestLabel "Addition" test_Add,
                TestLabel "Subtraction" test_Sub,
                TestLabel "Multiplication" test_Mul,
                TestLabel "Abs" test_Abs,
                TestLabel "Signum" test_Signum,
                TestLabel "Div" test_Div,
                TestLabel "Add scalar" test_AddScalar,
                TestLabel "Sub scalar" test_SubScalar,
                TestLabel "Clamp" test_Clamp,
                TestLabel "Luminance = 0" test_Luminance0,
                TestLabel "Luminance = 1" test_Luminance1
               ]