test_factorial =
  testGroup
    "factorial (regressions)"
    [ testCase (show n) $
      factorial n @?= product [1 .. n]
    | n <- [10, 100, 1000, 5000, 10000, 50000]
    ]

prop_fastFactorial :: NonNegative Integer -> Property
prop_fastFactorial (NonNegative n) =