crocodile-0.1.2: app/src/Tests/ColourTest.hs
module Tests.ColourTest where
import PolymorphicNum
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_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 :: Double
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 :: Double
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 "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
]