inflections-0.3.0.0: test/Text/Inflections/Parse/SnakeCaseSpec.hs
{-# LANGUAGE OverloadedStrings #-}
module Text.Inflections.Parse.SnakeCaseSpec
( spec )
where
import Test.Hspec
import Test.Hspec.Megaparsec
import Text.Inflections
spec :: Spec
spec =
describe "parseSnakeCase" $ do
context "when given no acronyms" $ do
it "parses snake_case correctly" $ do
r <- mapM (fmap SomeWord . mkWord) ["OneTwo","Three"]
parseSnakeCase [] "OneTwo_Three" `shouldParse` r
it "handles digits in the words correctly" $ do
r <- mapM (fmap SomeWord . mkWord) ["one4a","two00"]
parseSnakeCase [] "one4a_two00" `shouldParse` r
context "when given some acronyms" $ do
it "parses snake_case correctly" $ do
a <- mkAcronym "BOO"
r <- mapM (fmap SomeWord . mkWord) ["BOO","one","one"]
parseSnakeCase [a] "BOO_one_one" `shouldParse` r
context "when acronym happens to be a prefix of other word" $
it "parses the word correctly" $ do
a <- mkAcronym "BOO"
r <- mapM (fmap SomeWord . mkWord) ["one","BOOtwo"]
parseSnakeCase [a] "one_BOOtwo" `shouldParse` r
context "when acronym happens to be a suffix of other word" $
it "parses the word correctly" $ do
a <- mkAcronym "BOO"
r <- mapM (fmap SomeWord . mkWord) ["oneBOO","two"]
parseSnakeCase [a] "oneBOO_two" `shouldParse` r