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 +5/−0
- LICENSE +30/−0
- README.md +31/−0
- changelog.md +3/−0
- stack.yaml +68/−0
- string-conv-tests.cabal +42/−0
- test/Main.hs +88/−0
+ .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))+ ]