diff options
author | Sandy Maguire <sandy@sandymaguire.me> | 2020-09-04 09:54:06 -0700 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2020-09-12 00:31:37 -0400 |
commit | fb6e29e8d19deaf7581fdef14adc88a02573c83e (patch) | |
tree | 553af51409f30e52145f9605adcd7b5fcfacfe83 | |
parent | fc965c0910757410d624229419f36f0829cf73f6 (diff) | |
download | haskell-fb6e29e8d19deaf7581fdef14adc88a02573c83e.tar.gz |
Add tests
-rw-r--r-- | libraries/base/Data/Ord.hs | 4 | ||||
-rw-r--r-- | libraries/base/tests/all.T | 1 | ||||
-rw-r--r-- | libraries/base/tests/clamp.hs | 28 | ||||
-rw-r--r-- | libraries/base/tests/clamp.stdout | 12 |
4 files changed, 45 insertions, 0 deletions
diff --git a/libraries/base/Data/Ord.hs b/libraries/base/Data/Ord.hs index 9815259dec..88c22798a7 100644 --- a/libraries/base/Data/Ord.hs +++ b/libraries/base/Data/Ord.hs @@ -52,6 +52,10 @@ comparing p x y = compare (p x) (p y) -- @low@ and @high@. If it is, @a@ is returned unchanged. The result -- is otherwise @low@ if @a <= low@, or @high@ if @high <= a@. -- +-- When clamp is used at Double and Float, it has NaN propagating semantics in +-- its second argument. That is, @clamp (l,h) NaN = NaN@, but @clamp (NaN, NaN) +-- x = x@. +-- -- >>> clamp (0, 10) 2 -- 2 -- diff --git a/libraries/base/tests/all.T b/libraries/base/tests/all.T index c29b5b3a63..0a808fa42b 100644 --- a/libraries/base/tests/all.T +++ b/libraries/base/tests/all.T @@ -256,3 +256,4 @@ test('T16943a', normal, compile_and_run, ['']) test('T16943b', normal, compile_and_run, ['']) test('T17499', [collect_stats('bytes allocated',5)], compile_and_run, ['-O -w']) test('T16643', normal, compile_and_run, ['']) +test('clamp', normal, compile_and_run, ['']) diff --git a/libraries/base/tests/clamp.hs b/libraries/base/tests/clamp.hs new file mode 100644 index 0000000000..b235daa0b9 --- /dev/null +++ b/libraries/base/tests/clamp.hs @@ -0,0 +1,28 @@ +import Data.Ord + +doClampInt :: (Int, Int) -> Int -> IO () +doClampInt bounds a = print $ clamp bounds a + +doClampFloat :: (Float, Float) -> Float -> IO () +doClampFloat bounds a = print $ clamp bounds a + +nan :: Float +nan = 0 / 0 + +main :: IO () +main = do + doClampInt (0, 100) 50 -- 50 + doClampInt (0, 100) 200 -- 100 + doClampInt (0, 100) (-5) -- 0 + + doClampFloat (0, 100) 50 -- 50 + doClampFloat (0, 100) 200 -- 100 + doClampFloat (0, 100) (-5) -- 0 + doClampFloat (0, 100) nan -- NaN + doClampFloat (nan, 100) 5 -- 5 + doClampFloat (nan, 100) 105 -- 100 + doClampFloat (5, nan) 105 -- 105 + doClampFloat (5, nan) 3 -- 5 + + doClampFloat (nan, nan) 3 -- 3 + diff --git a/libraries/base/tests/clamp.stdout b/libraries/base/tests/clamp.stdout new file mode 100644 index 0000000000..a1ee2b8979 --- /dev/null +++ b/libraries/base/tests/clamp.stdout @@ -0,0 +1,12 @@ +50 +100 +0 +50.0 +100.0 +0.0 +NaN +5.0 +100.0 +105.0 +5.0 +3.0 |