module QCChord (qcChordTests) where import Test.QuickCheck.Batch import Test.QuickCheck import Music.Diatonic import Music.Diatonic.Scale import Music.Diatonic.Chord import QCNote import QCScale instance Arbitrary Chord where arbitrary = do n <- arbitrary c <- elements [majorChord, minorChord, diminishedChord, augmentedChord, major7thChord, dominant7thChord, minor7thChord, minorMajor7thChord, minor7thFlat5thChord, augmentedMajor7thChord] return (c n) coarbitrary = error "Not implemented" prop_chord_show_read c = (read . show $ c :: Chord) == c prop_chord_root c = root (c :: Chord) == (head . notes $ c) prop_chord_degree c = degree (tonic (c :: Chord)) (head . notes $ c) == First options = TestOptions { no_of_tests = 500, length_of_tests = 0, debug_tests = False } qcChordTests = do runTests "Music.Diatonic.Chord" options [ run prop_chord_show_read , run prop_chord_root , run prop_chord_degree ]