packages feed

focus 1.0.3.1 → 1.0.3.2

raw patch · 3 files changed

+61/−61 lines, 3 filesdep ~basePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base

API changes (from Hackage documentation)

Files

focus.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name:          focus-version:       1.0.3.1+version:       1.0.3.2 synopsis:   A general abstraction for manipulating elements of container data structures 
library/Focus/Prelude.hs view
@@ -30,7 +30,7 @@ import Data.Fixed as Exports import Data.Foldable as Exports import Data.Function as Exports hiding (id, (.))-import Data.Functor as Exports+import Data.Functor as Exports hiding (unzip) import Data.Functor.Compose as Exports import Data.Functor.Identity as Exports import Data.IORef as Exports
test/Main.hs view
@@ -7,63 +7,63 @@  main :: IO () main =-  defaultMain $-    testGroup "" $-      [ testCase "Monadically composed lookup and insert (https://github.com/nikita-volkov/stm-containers/issues/25)" $-          let Focus.Focus absent present = do-                prev <- Focus.lookup-                Focus.insert "one"-                pure (isJust prev)-           in do-                assertEqual "" (True, Focus.Set "one") $ runIdentity (present "zero")-                assertEqual "" (False, Focus.Set "one") $ runIdentity absent,-        testCase "Applicatively composed lookup and insert" $-          let Focus.Focus absent present = (isJust <$> Focus.lookup) <* Focus.insert "one"-           in do-                assertEqual "" (True, Focus.Set "one") $ runIdentity (present "zero")-                assertEqual "" (False, Focus.Set "one") $ runIdentity absent,-        testCase "Applicatively composed pure and insert" $-          let Focus.Focus absent present = pure () <* Focus.insert "one"-           in do-                assertEqual "" ((), Focus.Set "one") (runIdentity (present "zero"))-                assertEqual "" ((), Focus.Set "one") (runIdentity absent),-        testCase "insert" $-          let Focus.Focus absent present = Focus.insert "one"-           in do-                assertEqual "" ((), Focus.Set "one") (runIdentity (present "zero"))-                assertEqual "" ((), Focus.Set "one") (runIdentity absent),-        testCase "alter" $-          let f :: Maybe String -> Maybe String-              f = const Nothing-              Focus.Focus absent present = Focus.alter f-           in do-                assertEqual "" ((), Focus.Remove) (runIdentity (present "zero"))-                assertEqual "" ((), Focus.Leave) (runIdentity absent),-        testCase "update" $-          let f :: String -> Maybe String-              f = const Nothing-              Focus.Focus absent present = Focus.update f-           in do-                assertEqual "" ((), Focus.Remove) (runIdentity (present "zero"))-                assertEqual "" ((), Focus.Leave) (runIdentity absent),-        testCase "updateM" $-          let f :: String -> Identity (Maybe String)-              f = const (pure Nothing)-              Focus.Focus absent present = Focus.updateM f-           in do-                assertEqual "" ((), Focus.Remove) (runIdentity (present "zero"))-                assertEqual "" ((), Focus.Leave) (runIdentity absent),-        testCase "delete" $-          let Focus.Focus absent present = Focus.delete-           in do-                assertEqual "" ((), Focus.Remove) (runIdentity (present "zero"))-                assertEqual "" ((), Focus.Leave @()) (runIdentity absent),-        testCase "Monadically composed lookup and delete (https://github.com/nikita-volkov/focus/issues/7)" $-          let Focus.Focus absent present = do-                a <- Focus.lookup-                Focus.delete-                pure a-           in do-                assertEqual "" (Just (), Focus.Remove) (runIdentity (present ()))-                assertEqual "" (Nothing @(), Focus.Leave) (runIdentity absent)+  defaultMain+    $ testGroup ""+    $ [ testCase "Monadically composed lookup and insert (https://github.com/nikita-volkov/stm-containers/issues/25)"+          $ let Focus.Focus absent present = do+                  prev <- Focus.lookup+                  Focus.insert "one"+                  pure (isJust prev)+             in do+                  assertEqual "" (True, Focus.Set "one") $ runIdentity (present "zero")+                  assertEqual "" (False, Focus.Set "one") $ runIdentity absent,+        testCase "Applicatively composed lookup and insert"+          $ let Focus.Focus absent present = (isJust <$> Focus.lookup) <* Focus.insert "one"+             in do+                  assertEqual "" (True, Focus.Set "one") $ runIdentity (present "zero")+                  assertEqual "" (False, Focus.Set "one") $ runIdentity absent,+        testCase "Applicatively composed pure and insert"+          $ let Focus.Focus absent present = pure () <* Focus.insert "one"+             in do+                  assertEqual "" ((), Focus.Set "one") (runIdentity (present "zero"))+                  assertEqual "" ((), Focus.Set "one") (runIdentity absent),+        testCase "insert"+          $ let Focus.Focus absent present = Focus.insert "one"+             in do+                  assertEqual "" ((), Focus.Set "one") (runIdentity (present "zero"))+                  assertEqual "" ((), Focus.Set "one") (runIdentity absent),+        testCase "alter"+          $ let f :: Maybe String -> Maybe String+                f = const Nothing+                Focus.Focus absent present = Focus.alter f+             in do+                  assertEqual "" ((), Focus.Remove) (runIdentity (present "zero"))+                  assertEqual "" ((), Focus.Leave) (runIdentity absent),+        testCase "update"+          $ let f :: String -> Maybe String+                f = const Nothing+                Focus.Focus absent present = Focus.update f+             in do+                  assertEqual "" ((), Focus.Remove) (runIdentity (present "zero"))+                  assertEqual "" ((), Focus.Leave) (runIdentity absent),+        testCase "updateM"+          $ let f :: String -> Identity (Maybe String)+                f = const (pure Nothing)+                Focus.Focus absent present = Focus.updateM f+             in do+                  assertEqual "" ((), Focus.Remove) (runIdentity (present "zero"))+                  assertEqual "" ((), Focus.Leave) (runIdentity absent),+        testCase "delete"+          $ let Focus.Focus absent present = Focus.delete+             in do+                  assertEqual "" ((), Focus.Remove) (runIdentity (present "zero"))+                  assertEqual "" ((), Focus.Leave @()) (runIdentity absent),+        testCase "Monadically composed lookup and delete (https://github.com/nikita-volkov/focus/issues/7)"+          $ let Focus.Focus absent present = do+                  a <- Focus.lookup+                  Focus.delete+                  pure a+             in do+                  assertEqual "" (Just (), Focus.Remove) (runIdentity (present ()))+                  assertEqual "" (Nothing @(), Focus.Leave) (runIdentity absent)       ]