inflections-0.3.0.0: test/Text/Inflections/Parse/CamelCaseSpec.hs
{-# LANGUAGE OverloadedStrings #-}
module Text.Inflections.Parse.CamelCaseSpec
( spec )
where
import Test.Hspec
import Test.Hspec.Megaparsec
import Text.Inflections
spec :: Spec
spec =
describe "parseCamelCase" $ do
context "when given no acronyms" $ do
context "when first word is capitalized" $
it "parses CamelCase correctly" $ do
r <- mapM (fmap SomeWord . mkWord) ["One","Two","Three"]
parseCamelCase [] "OneTwoThree" `shouldParse` r
context "when first word is not capitalized" $
it "parses camelCase correctly" $ do
r <- mapM (fmap SomeWord . mkWord) ["one","Two","Three"]
parseCamelCase [] "oneTwoThree" `shouldParse` r
context "when there are digits in the words" $
it "parses CamelCase correctly" $ do
r <- mapM (fmap SomeWord . mkWord) ["one1two","Three3"]
parseCamelCase [] "one1twoThree3" `shouldParse` r
context "when given some acronyms" $ do
context "when first word is capitalized" $
it "parses CamelCase correctly" $ do
a <- mkAcronym "BOO"
r <- mapM (fmap SomeWord . mkWord) ["One","BOO","One"]
parseCamelCase [a] "OneBOOOne" `shouldParse` r
context "when first word is not capitalized" $
it "parses camelCase correctly" $ do
a <- mkAcronym "BOO"
r <- mapM (fmap SomeWord . mkWord) ["one","Two","BOO"]
parseCamelCase [a] "oneTwoBOO" `shouldParse` r
context "when there are digits in the words" $
it "parses CamelCase correctly" $ do
a <- mkAcronym "BOO"
r <- mapM (fmap SomeWord . mkWord) ["one1two","Three3"]
parseCamelCase [a] "one1twoThree3" `shouldParse` r
context "when a word has a suffix coinciding with a acronym" $
it "is still parsed correctly as a normala word" $ do
a <- mkAcronym "boo"
r <- mapM (fmap SomeWord . mkWord) ["fooboo","Bar"]
parseCamelCase [a] "foobooBar" `shouldParse` r