|
1 | | -# Hspec Codewars |
| 1 | +# Test.Hspec.Codewars |
2 | 2 |
|
3 | 3 | Utility functions for testing on Codewars with Hspec. |
4 | 4 |
|
5 | | -## Functions |
6 | | - |
7 | 5 | ### Blacklisting |
8 | 6 |
|
| 7 | +#### `Hidden` |
| 8 | + |
9 | 9 | ```haskell |
10 | | -solutionShouldHide :: Hidden -> Expectation |
| 10 | +data Hidden |
| 11 | + -- | Module to be hidden |
| 12 | + = Module {moduleName :: String} |
| 13 | + -- | Symbol from a module to be hidden |
| 14 | + | FromModule {moduleName :: String, symbolName :: String} |
| 15 | +``` |
11 | 16 |
|
12 | | --- solutionShouldHide $ FromModule "Prelude" "head" |
| 17 | +#### `solutionShouldHide` |
| 18 | + |
| 19 | +```haskell |
| 20 | +solutionShouldHide :: Hidden -> Expectation |
13 | 21 | ``` |
| 22 | + |
14 | 23 | Check that solution hides a module or a symbol from a module. |
15 | 24 |
|
16 | 25 | ```haskell |
17 | | -solutionShouldHideAll :: [Hidden] -> Expectation |
| 26 | +solutionShouldHide $ FromModule "Prelude" "head" |
| 27 | +``` |
18 | 28 |
|
19 | | --- solutionShouldHideAll [FromModule "Prelude" "head", Module "Data.Set"] |
| 29 | +#### `solutionShouldHideAll` |
| 30 | + |
| 31 | +```haskell |
| 32 | +solutionShouldHideAll :: [Hidden] -> Expectation |
20 | 33 | ``` |
| 34 | + |
21 | 35 | Check that solution hides all of given modules and symbols. |
22 | 36 |
|
| 37 | +```haskell |
| 38 | +solutionShouldHideAll [FromModule "Prelude" "head", Module "Data.Set"] |
| 39 | +``` |
| 40 | + |
23 | 41 | ### Approximate Equality |
24 | 42 |
|
| 43 | +#### `shouldBeApprox` |
| 44 | + |
25 | 45 | ```haskell |
26 | 46 | shouldBeApprox :: (Fractional a, Ord a, Show a) => a -> a -> Expectation |
27 | | - |
28 | | --- sqrt 2.0 `shouldBeApprox` (1.4142135 :: Double) |
29 | 47 | ``` |
| 48 | + |
30 | 49 | Predefined approximately equal expectation with error margin `1e-6`. |
31 | 50 |
|
32 | 51 | ```haskell |
33 | | -shouldBeApproxPrec :: (Fractional a, Ord a, Show a) => a -> a -> a -> Expectation |
| 52 | +sqrt 2.0 `shouldBeApprox` (1.4142135 :: Double) |
| 53 | +``` |
34 | 54 |
|
35 | | --- shouldBeApprox' = shouldBeApproxPrec 1e-9 |
| 55 | +#### `shouldBeApproxPrec` |
| 56 | + |
| 57 | +```haskell |
| 58 | +shouldBeApproxPrec :: (Fractional a, Ord a, Show a) => a -> a -> a -> Expectation |
36 | 59 | ``` |
| 60 | + |
37 | 61 | Create approximately equal expectation with margin. |
| 62 | + |
| 63 | +```haskell |
| 64 | +shouldBeApprox' = shouldBeApproxPrec 1e-9 |
| 65 | +``` |
0 commit comments