packages feed

string-conv-tests (empty) → 0.1.1

raw patch · 7 files changed

+267/−0 lines, 7 filesdep +basedep +bytestringdep +quickcheck-instances

Dependencies added: base, bytestring, quickcheck-instances, string-conv, tasty, tasty-quickcheck, text

Files

+ .gitignore view
@@ -0,0 +1,5 @@+dist+TAGS+*.swp+/.stack-work/+stack.yaml.lock
+ LICENSE view
@@ -0,0 +1,30 @@+Copyright (c) 2022, Dino Morelli++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++    * Redistributions of source code must retain the above copyright+      notice, this list of conditions and the following disclaimer.++    * Redistributions in binary form must reproduce the above+      copyright notice, this list of conditions and the following+      disclaimer in the documentation and/or other materials provided+      with the distribution.++    * Neither the name of Ozgun Ataman nor the names of other+      contributors may be used to endorse or promote products derived+      from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ README.md view
@@ -0,0 +1,31 @@+# string-conv-tests+++## Synopsis++Property tests for the Haskell string-conv library+++## Description++These are in a separate project not only to keep dependencies low when the+string-conv library is included in a project but also because these property+tests use `quickcheck-instances` which defines many orphan instances. Never a+good idea to force instances like this on other projects.++This project expects the source code of the string-conv project to be in a+sibling directory.+++## Development++To run these tests++    $ stack test string-conv-tests+++## Contact++### Authors++Dino Morelli <dino@ui3.info>
+ changelog.md view
@@ -0,0 +1,3 @@+0.1.1 (2022-02-19)++  * Initial release
+ stack.yaml view
@@ -0,0 +1,68 @@+# This file was automatically generated by 'stack init'+#+# Some commonly used options have been documented as comments in this file.+# For advanced use and comprehensive documentation of the format, please see:+# https://docs.haskellstack.org/en/stable/yaml_configuration/++# Resolver to choose a 'specific' stackage snapshot or a compiler version.+# A snapshot resolver dictates the compiler version and the set of packages+# to be used for project dependencies. For example:+#+# resolver: lts-3.5+# resolver: nightly-2015-09-21+# resolver: ghc-7.10.2+#+# The location of a snapshot can be provided as a file or url. Stack assumes+# a snapshot provided as a file might change, whereas a url resource does not.+#+# resolver: ./custom-snapshot.yaml+# resolver: https://example.com/snapshots/2018-01-01.yaml+resolver: lts-18.8++# User packages to be built.+# Various formats can be used as shown in the example below.+#+# packages:+# - some-directory+# - https://example.com/foo/bar/baz-0.0.2.tar.gz+#   subdirs:+#   - auto-update+#   - wai+packages:+- .+- ../string-conv++# Dependency packages to be pulled from upstream that are not in the resolver.+# These entries can reference officially published versions as well as+# forks / in-progress versions pinned to a git hash. For example:+#+# extra-deps:+# - acme-missiles-0.3+# - git: https://github.com/commercialhaskell/stack.git+#   commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a+#+# extra-deps: []++# Override default flag values for local packages and extra-deps+# flags: {}++# Extra package databases containing global packages+# extra-package-dbs: []++# Control whether we use the GHC we find on the path+# system-ghc: true+#+# Require a specific version of stack, using version ranges+# require-stack-version: -any # Default+# require-stack-version: ">=2.7"+#+# Override the architecture used by stack, especially useful on Windows+# arch: i386+# arch: x86_64+#+# Extra directories used by stack for building+# extra-include-dirs: [/path/to/dir]+# extra-lib-dirs: [/path/to/dir]+#+# Allow a newer minor version of GHC than the snapshot specifies+# compiler-check: newer-minor
+ string-conv-tests.cabal view
@@ -0,0 +1,42 @@+name:                string-conv-tests+version:             0.1.1+synopsis:            Tests for the string-conv library+description:         These are in a separate project not only to keep+                     dependencies low when the string-conv library is included+                     in a project but also because these property tests use+                     `quickcheck-instances` which defines many orphan+                     instances. Never a good idea to force instances like this+                     on other projects.+license:             BSD3+license-file:        LICENSE+author:              Dino Morelli+maintainer:          dino@ui3.info+copyright:           Dino Morelli, 2022+category:            Data, String, Text+homepage:            https://github.com/dino-/string-conv-tests+bug-reports:         https://github.com/dino-/string-conv-tests/issues+build-type:          Simple+cabal-version:       >=1.10+extra-source-files:+  changelog.md+  .gitignore+  README.md+  stack.yaml++source-repository head+  type:     git+  location: https://github.com/dino-/string-conv-tests.git++test-suite tests+  type:                exitcode-stdio-1.0+  hs-source-dirs:      test+  main-is:             Main.hs+  ghc-options:         -Wall -threaded -rtsopts -with-rtsopts=-N+  build-depends:       base >= 4.4 && < 5+                     , bytestring+                     , quickcheck-instances+                     , string-conv+                     , tasty+                     , tasty-quickcheck+                     , text+  default-language:    Haskell2010
+ test/Main.hs view
@@ -0,0 +1,88 @@+{-# LANGUAGE OverloadedStrings #-}++import Data.ByteString       as B+import Data.ByteString.Lazy  as LB+import Data.String.Conv+import Data.Text             as T+import Data.Text.Lazy        as LT+import Test.QuickCheck.Instances.ByteString ()+import Test.QuickCheck.Instances.Text ()+import Test.Tasty+import Test.Tasty.QuickCheck+++main :: IO ()+main = defaultMain $ testGroup " tests"+  [ strictDecoding+  , lenientDecoding+  ]+++strictDecoding :: TestTree+strictDecoding = testGroup "strict decoding (toS method)"+  [ testProperty "converting String to String" $ do+      \s -> s == (toS (toS (s :: String) :: String))+  , testProperty "converting String to strict ByteString" $ do+      \s -> s == (toS (toS (s :: String) :: B.ByteString))+  , testProperty "converting String to lazy ByteString" $ do+      \s -> s == (toS (toS (s :: String) :: LB.ByteString))+  , testProperty "converting String to strict Text" $ do+      \s -> s == (toS (toS (s :: String) :: T.Text))+  , testProperty "converting String to lazy Text" $ do+      \s -> s == (toS (toS (s :: String) :: LT.Text))+  , testProperty "converting strict ByteString to strict ByteString" $ do+      \s -> s == (toS (toS (s :: B.ByteString) :: B.ByteString))+  , testProperty "converting strict ByteString to lazy ByteString" $ do+      \s -> s == (toS (toS (s :: B.ByteString) :: LB.ByteString))+  , testProperty "converting lazy ByteString to lazy ByteString" $ do+      \s -> s == (toS (toS (s :: LB.ByteString) :: LB.ByteString))+  , testProperty "converting strict Text to lazy ByteString" $ do+      \s -> s == (toS (toS (s :: T.Text) :: LB.ByteString))+  , testProperty "converting strict Text to strict ByteString" $ do+      \s -> s == (toS (toS (s :: LB.ByteString) :: B.ByteString))+  , testProperty "converting strict Text to strict Text" $ do+      \s -> s == (toS (toS (s :: T.Text) :: T.Text))+  , testProperty "converting strict Text to lazy Text" $ do+      \s -> s == (toS (toS (s :: T.Text) :: LT.Text))+  , testProperty "converting lazy Text to strict ByteString" $ do+      \s -> s == (toS (toS (s :: LT.Text) :: B.ByteString))+  , testProperty "converting lazy Text to lazy ByteString" $ do+      \s -> s == (toS (toS (s :: LT.Text) :: LB.ByteString))+  , testProperty "converting lazy Text to lazy Text" $ do+      \s -> s == (toS (toS (s :: LT.Text) :: LT.Text))+  ]+++lenientDecoding :: TestTree+lenientDecoding = testGroup "lenient decoding (toSL method)"+  [ testProperty "converting String to String" $ do+      \s -> s == (toSL (toSL (s :: String) :: String))+  , testProperty "converting String to strict ByteString" $ do+      \s -> s == (toSL (toSL (s :: String) :: B.ByteString))+  , testProperty "converting String to lazy ByteString" $ do+      \s -> s == (toSL (toSL (s :: String) :: LB.ByteString))+  , testProperty "converting String to strict Text" $ do+      \s -> s == (toSL (toSL (s :: String) :: T.Text))+  , testProperty "converting String to lazy Text" $ do+      \s -> s == (toSL (toSL (s :: String) :: LT.Text))+  , testProperty "converting strict ByteString to strict ByteString" $ do+      \s -> s == (toSL (toSL (s :: B.ByteString) :: B.ByteString))+  , testProperty "converting strict ByteString to lazy ByteString" $ do+      \s -> s == (toSL (toSL (s :: B.ByteString) :: LB.ByteString))+  , testProperty "converting lazy ByteString to lazy ByteString" $ do+      \s -> s == (toSL (toSL (s :: LB.ByteString) :: LB.ByteString))+  , testProperty "converting strict Text to lazy ByteString" $ do+      \s -> s == (toSL (toSL (s :: T.Text) :: LB.ByteString))+  , testProperty "converting strict Text to strict ByteString" $ do+      \s -> s == (toSL (toSL (s :: LB.ByteString) :: B.ByteString))+  , testProperty "converting strict Text to strict Text" $ do+      \s -> s == (toSL (toSL (s :: T.Text) :: T.Text))+  , testProperty "converting strict Text to lazy Text" $ do+      \s -> s == (toSL (toSL (s :: T.Text) :: LT.Text))+  , testProperty "converting lazy Text to strict ByteString" $ do+      \s -> s == (toSL (toSL (s :: LT.Text) :: B.ByteString))+  , testProperty "converting lazy Text to lazy ByteString" $ do+      \s -> s == (toSL (toSL (s :: LT.Text) :: LB.ByteString))+  , testProperty "converting lazy Text to lazy Text" $ do+      \s -> s == (toSL (toSL (s :: LT.Text) :: LT.Text))+  ]