diff options
author | Ben Sima <ben@bsima.me> | 2021-01-20 16:44:14 -0500 |
---|---|---|
committer | Ben Sima <ben@bsima.me> | 2021-01-22 08:00:27 -0500 |
commit | 4c1df68e201d11e82b3870a3020ad79728e6b700 (patch) | |
tree | 5c585c5a19c9cef8ad5752fc00d29000f1275e2c | |
parent | 8b9ec04c25e2ddf34c9e0b925fb4283f40f54468 (diff) |
Property tests for calculateScore
-rw-r--r-- | Biz/Bild/Deps/Haskell.nix | 2 | ||||
-rw-r--r-- | Biz/Devalloc.hs | 17 | ||||
-rw-r--r-- | Biz/Pie.hs | 1 | ||||
-rw-r--r-- | Biz/Que/Host.hs | 1 | ||||
-rw-r--r-- | Biz/Que/Site.hs | 1 | ||||
-rw-r--r-- | Biz/Test.hs | 10 | ||||
-rw-r--r-- | Hero/Host.hs | 2 |
7 files changed, 24 insertions, 10 deletions
diff --git a/Biz/Bild/Deps/Haskell.nix b/Biz/Bild/Deps/Haskell.nix index eb34f3a..21fcb66 100644 --- a/Biz/Bild/Deps/Haskell.nix +++ b/Biz/Bild/Deps/Haskell.nix @@ -21,6 +21,7 @@ with hpkgs; filepath ghcjs-base github + hashids haskeline http-types ixset @@ -53,6 +54,7 @@ with hpkgs; stripe-haskell tasty tasty-hunit + tasty-quickcheck text time transformers diff --git a/Biz/Devalloc.hs b/Biz/Devalloc.hs index 4645a2a..3836ef7 100644 --- a/Biz/Devalloc.hs +++ b/Biz/Devalloc.hs @@ -40,6 +40,7 @@ -- : dep servant-server -- : dep tasty -- : dep tasty-hunit +-- : dep tasty-quickcheck -- : dep uuid -- : dep vector -- : dep warp @@ -353,8 +354,7 @@ test :: Test.Tree test = Test.group "Biz.Devalloc" - [ -- test_analyzeGitHub, - test_calculateScore + [ test_calculateScore ] -- * app configurations @@ -934,7 +934,12 @@ analyze keep askedBy activeAuthors url bareRepo = do third (_, _, a) = a git args = Process.readProcess "git" (["--git-dir", bareRepo] ++ args) "" +-- | Does the aggregate score calculation given number of files found to be +-- blackholes, liabilities, etc. calculateScore :: Double -> Double -> Double -> Integer +calculateScore 0 _ _ = 0 +calculateScore a 0 0 | a > 0 = 100 +calculateScore a b c | a < 0 || b < 0 || c < 0 = 0 calculateScore numTotal numBlackholes numLiabilities = max 0 <. round <| maxScore @@ -952,7 +957,9 @@ test_calculateScore = "calculateScore" [ Test.unit "perfect score" <| 100 @=? calculateScore 100 0 0, Test.unit "all blackholes" <| 50 @=? calculateScore 100 100 0, - Test.unit "all liabilities" <| 70 @=? calculateScore 100 0 100 + Test.unit "all liabilities" <| 70 @=? calculateScore 100 0 100, + Test.prop "never > 100" <| \t b l -> calculateScore t b l <= 100, + Test.prop "never < 0" <| \t b l -> calculateScore t b l >= 0 ] lastTouched :: FilePath -> FilePath -> IO (FilePath, Int) @@ -1054,10 +1061,6 @@ analyzeGitHub keep user cfg o r = do ghOwner = GitHub.mkName (Proxy :: Proxy GitHub.Owner) o ghRepo = GitHub.mkName (Proxy :: Proxy GitHub.Repo) r --- TODO: write this test --- test_analyzeGitHub :: IO Analysis --- test_analyzeGitHub = analyzeGitHub () Envy.defConfig "bsima" "bin" - -- | Clone the repo to @<Config.depo>/<url>@. If repo already exists, just do a -- @git fetch@. Returns the full path to the local repo. fetchBareRepo :: Config -> Text -> IO FilePath @@ -41,6 +41,7 @@ -- : dep parsec -- : dep tasty -- : dep tasty-hunit +-- : dep tasty-quickcheck module Biz.Pie ( main, ) diff --git a/Biz/Que/Host.hs b/Biz/Que/Host.hs index ce3f5da..d50993c 100644 --- a/Biz/Que/Host.hs +++ b/Biz/Que/Host.hs @@ -22,6 +22,7 @@ -- : dep stm -- : dep tasty -- : dep tasty-hunit +-- : dep tasty-quickcheck -- : dep unagi-chan -- : dep unordered-containers module Biz.Que.Host diff --git a/Biz/Que/Site.hs b/Biz/Que/Site.hs index c4a6e0d..c2245d6 100644 --- a/Biz/Que/Site.hs +++ b/Biz/Que/Site.hs @@ -16,6 +16,7 @@ -- : dep req -- : dep tasty -- : dep tasty-hunit +-- : dep tasty-quickcheck module Biz.Que.Site ( main, ) diff --git a/Biz/Test.hs b/Biz/Test.hs index 6bd5acf..7f6da61 100644 --- a/Biz/Test.hs +++ b/Biz/Test.hs @@ -1,18 +1,21 @@ {-# LANGUAGE NoImplicitPrelude #-} +-- : dep tasty +-- : dep tasty-hunit +-- : dep tasty-quickcheck module Biz.Test ( Tree, group, unit, + prop, (@=?), ) where --- : dep tasty --- : dep tasty-hunit import qualified Test.Tasty as Tasty import Test.Tasty.HUnit ((@=?)) import qualified Test.Tasty.HUnit as HUnit +import qualified Test.Tasty.QuickCheck as QuickCheck type Tree = Tasty.TestTree @@ -21,3 +24,6 @@ group = Tasty.testGroup unit :: Tasty.TestName -> HUnit.Assertion -> Tasty.TestTree unit = HUnit.testCase + +prop :: QuickCheck.Testable a => Tasty.TestName -> a -> Tasty.TestTree +prop = QuickCheck.testProperty diff --git a/Hero/Host.hs b/Hero/Host.hs index 468bd0f..fd010af 100644 --- a/Hero/Host.hs +++ b/Hero/Host.hs @@ -36,10 +36,10 @@ -- : dep servant-lucid -- : dep servant-server -- : dep split --- : dep split -- : dep string-quote -- : dep tasty -- : dep tasty-hunit +-- : dep tasty-quickcheck -- : dep text -- : dep wai -- : dep wai-app-static |