Skip to content

Commit

Permalink
extra tests
Browse files Browse the repository at this point in the history
  • Loading branch information
KommuSoft committed Oct 26, 2024
1 parent 0438400 commit e977916
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 5 deletions.
6 changes: 3 additions & 3 deletions comma-and.cabal
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
name: comma-and
version: 0.1.0.0
version: 0.1.0.1
synopsis: Join text together with commas, and "and".
description: Convert a 'Text' object into a visually pleasant URL component.
homepage: https://github.com/hapytex/comma-and#readme
license: BSD3
license-file: LICENSE
author: Willem Van Onsem
maintainer: hapytexeu+gh@gmail.com
copyright: 2020 Willem Van Onsem
copyright: 2024 Willem Van Onsem
category: utils
build-type: Simple
extra-source-files:
Expand All @@ -24,7 +24,7 @@ library
, data-default-class >=0.1 && <0.2
default-language: Haskell2010

test-suite gulsify
test-suite and
type: exitcode-stdio-1.0
main-is: Main.hs
hs-source-dirs: test
Expand Down
48 changes: 46 additions & 2 deletions test/Text/CommaSpec.hs
Original file line number Diff line number Diff line change
@@ -1,12 +1,56 @@
module Text.CommaSpec where

import Data.Default.Class(Default(def))

import Test.Hspec(Spec, describe, it, shouldBe)
import Text.Comma(comma)
import Text.Comma(CommaStyle(OxfordComma, NoComma), comma, commaAs, commaEmpty, commaEmptyAs, lastJoin, noComma, noCommaEmpty)

spec :: Spec
spec = describe "comma" $ do
spec = describe "and" $ do
it "comma" $ do
comma [] `shouldBe` ""
comma ["red"] `shouldBe` "red"
comma ["red", "green"] `shouldBe` "red, and green"
comma ["red", "green", "blue"] `shouldBe` "red, green, and blue"
it "commaEmpty" $ do
commaEmpty "and" [] `shouldBe` "and"
commaEmpty "and" ["red"] `shouldBe` "red"
commaEmpty "and" ["red", "green"] `shouldBe` "red, and green"
commaEmpty "and" ["red", "green", "blue"] `shouldBe` "red, green, and blue"
it "noComma" $ do
noComma [] `shouldBe` ""
noComma ["red"] `shouldBe` "red"
noComma ["red", "green"] `shouldBe` "red and green"
noComma ["red", "green", "blue"] `shouldBe` "red, green and blue"
it "noCommaEmpty" $ do
noCommaEmpty "and" [] `shouldBe` "and"
noCommaEmpty "and" ["red"] `shouldBe` "red"
noCommaEmpty "and" ["red", "green"] `shouldBe` "red and green"
noCommaEmpty "and" ["red", "green", "blue"] `shouldBe` "red, green and blue"
it "commaAs" $ do
commaAs OxfordComma [] `shouldBe` ""
commaAs OxfordComma ["red"] `shouldBe` "red"
commaAs OxfordComma ["red", "green"] `shouldBe` "red, and green"
commaAs OxfordComma ["red", "green", "blue"] `shouldBe` "red, green, and blue"
commaAs NoComma [] `shouldBe` ""
commaAs NoComma ["red"] `shouldBe` "red"
commaAs NoComma ["red", "green"] `shouldBe` "red and green"
commaAs NoComma ["red", "green", "blue"] `shouldBe` "red, green and blue"
it "commaEmptyAs" $ do
commaEmptyAs "and" OxfordComma [] `shouldBe` "and"
commaEmptyAs "and" OxfordComma ["red"] `shouldBe` "red"
commaEmptyAs "and" OxfordComma ["red", "green"] `shouldBe` "red, and green"
commaEmptyAs "and" OxfordComma ["red", "green", "blue"] `shouldBe` "red, green, and blue"
commaEmptyAs "and" NoComma [] `shouldBe` "and"
commaEmptyAs "and" NoComma ["red"] `shouldBe` "red"
commaEmptyAs "and" NoComma ["red", "green"] `shouldBe` "red and green"
commaEmptyAs "and" NoComma ["red", "green", "blue"] `shouldBe` "red, green and blue"
it "lastJoin" $ do
lastJoin OxfordComma `shouldBe` ", and "
lastJoin NoComma `shouldBe` " and "
it "CommaStyle" $ do
def `shouldBe` OxfordComma
minBound `shouldBe` OxfordComma
maxBound `shouldBe` NoComma
succ OxfordComma `shouldBe` NoComma
compare OxfordComma NoComma `shouldBe` LT

0 comments on commit e977916

Please sign in to comment.