packages feed

registry-options-0.1.0.0: test/Test/Data/Registry/Options/TextSpec.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE PartialTypeSignatures #-}

module Test.Data.Registry.Options.TextSpec where

import Data.Registry.Options.Text
import Protolude
import Test.Tasty.Hedgehogx

test_drop_prefix = test "drop the camel cased prefix of a name" $ do
  dropPrefix "name" === "name"
  dropPrefix "Name" === "Name"
  dropPrefix "prefixName" === "name"
  dropPrefix "PrefixName" === "Name"
  dropPrefix "prefixName1Name2" === "name1Name2"
  dropPrefix "PrefixName1Name2" === "Name1Name2"

test_hyphenate = test "camelCaseToHyphenated a camelCased string" $ do
  camelCaseToHyphenated "name" === "name"
  camelCaseToHyphenated "Name" === "name"
  camelCaseToHyphenated "aName" === "a-name"
  camelCaseToHyphenated "AName" === "a-name"
  camelCaseToHyphenated "aName1Name2" === "a-name1-name2"
  camelCaseToHyphenated "AName1Name2" === "a-name1-name2"

test_display_columns = test "display two list of strings in columns" $ do
  displayColumns ["12345678", "123", "12345"] ["12", "12345"]
    === [ "12345678          12",
          "123               12345"
        ]

  displayColumns ["123", "12345678", "12345"] ["12", "12345", "1234"]
    === [ "123               12",
          "12345678          12345",
          "12345             1234"
        ]

test_underscore_to_camel_case = test "underscore name to camel case name" $ do
  underscoreToCamelCase "option" === "option"
  underscoreToCamelCase "option_name" === "optionName"
  underscoreToCamelCase "prefixed_option_name" === "prefixedOptionName"

test_camel_case_to_underscore = test "underscore name to camel case name" $ do
  camelCaseToUnderscore "option" === "option"
  camelCaseToUnderscore "optionName" === "option_name"
  camelCaseToUnderscore "prefixedOptionName" === "prefixed_option_name"

test_underscore_to_hyphenated = test "underscore name to hyphenated case name" $ do
  underscoreToHyphenated "option" === "option"
  underscoreToHyphenated "option_name" === "option-name"
  underscoreToHyphenated "prefixed_option_name" === "prefixed-option-name"

test_hyphenated_to_underscore = test "hyphenated name to underscore name" $ do
  hyphenatedToUnderscore "option" === "option"
  hyphenatedToUnderscore "option-name" === "option_name"
  hyphenatedToUnderscore "prefixed-option-name" === "prefixed_option_name"