packages feed

pure-noise-0.2.0.0: test/Noise2Spec.hs

module Noise2Spec where

import Numeric.Noise

seed :: Seed
seed = 55

prop_addition :: Rational -> Rational -> Bool
prop_addition x y = noise2At (const2 x + const2 y) seed x y == x + y

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

prop_addition_commutative :: Rational -> Rational -> Bool
prop_addition_commutative x y =
  let n1 = const2 x
      n2 = const2 y
   in noise2At (n1 + n2) seed x y == noise2At (n2 + n1) seed x y

prop_0_is_additive_identity :: Rational -> Rational -> Rational -> Bool
prop_0_is_additive_identity v x y =
  let n1 = const2 v
   in noise2At (n1 + fromInteger 0) seed x y == noise2At n1 seed x y

prop_negate_is_additive_inverse :: Rational -> Rational -> Rational -> Bool
prop_negate_is_additive_inverse v x y =
  let n1 = const2 v
   in noise2At (n1 + negate n1) seed x y == 0

prop_multiplication :: Rational -> Rational -> Bool
prop_multiplication x y = noise2At (const2 x * const2 y) seed x y == x * y

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

prop_1_is_multiplicative_identity :: Rational -> Rational -> Rational -> Bool
prop_1_is_multiplicative_identity v x y =
  let n1 = const2 v
   in noise2At (n1 * fromInteger 1) seed x y == v