module QuickCheck.Gauge where
import Data.Bool
import Data.Function (($))
import Data.Ord (Ord(..), Ordering(..))
import Majority.Merit
import Test.Tasty
import Test.Tasty.QuickCheck

import Majority.Judgment
import QuickCheck.Merit ()
import QuickCheck.Utils
import Types

quickcheck :: TestTree
quickcheck =
	testGroup "Gauge"
	 [ testProperty "majorityGauge and majorityValue consistency" $
		 \(SameLength (x::Merit SchoolGrade, y)) ->
			case majorityGauge x`compare`majorityGauge y of
			 LT -> majorityValue x < majorityValue y
			 GT -> majorityValue y < majorityValue x
			 EQ -> True
	 ]