packages feed

pure-noise-0.1.0.0: test/Noise3Spec.hs

module Noise3Spec where

import Numeric.Noise
import Numeric.Noise.Internal

seed :: Seed
seed = 2381

prop_addition :: Rational -> Rational -> Rational -> Bool
prop_addition x y z =
  noise3At (const3 x + const3 y + const3 z) seed x y z == x + y + z

prop_addition_associative :: Rational -> Rational -> Rational -> Bool
prop_addition_associative x y z =
  let n1 = const3 2003
      n2 = const3 2027
      n3 = const3 2069
   in noise3At ((n1 + n2) + n3) seed x y z == noise3At (n1 + (n2 + n3)) seed x y z

prop_addition_commutative :: Rational -> Rational -> Rational -> Bool
prop_addition_commutative x y z =
  let n1 = const3 x
      n2 = const3 y
   in noise3At (n1 + n2) seed x y z == noise3At (n2 + n1) seed x y z

prop_0_is_additive_identity :: Rational -> Rational -> Rational -> Rational -> Bool
prop_0_is_additive_identity v x y z =
  let n1 = const3 v
   in noise3At (n1 + fromInteger 0) seed x y z == noise3At n1 seed x y z

prop_negate_is_additive_inverse :: Rational -> Rational -> Rational -> Rational -> Bool
prop_negate_is_additive_inverse v x y z =
  let n1 = const3 v
   in noise3At (n1 + negate n1) seed x y z == 0

prop_multiplication :: Rational -> Rational -> Rational -> Bool
prop_multiplication x y z =
  noise3At (const3 x * const3 y * const3 z) seed x y z == x * y * z

prop_multiplication_associative :: Rational -> Rational -> Rational -> Bool
prop_multiplication_associative x y z =
  let n1 = const3 2003
      n2 = const3 2027
      n3 = const3 2069
   in noise3At ((n1 * n2) * n3) seed x y z == noise3At (n1 * (n2 * n3)) seed x y z

prop_1_is_multiplicative_identity :: Rational -> Rational -> Rational -> Rational -> Bool
prop_1_is_multiplicative_identity v x y z =
  let n1 = const3 v
   in noise3At (n1 * fromInteger 1) seed x y z == v