packages feed

options-1.2.1.2: tests/OptionsTests/Util.hs

-- Copyright (C) 2012 John Millikin <jmillikin@gmail.com>
--
-- See license.txt for details
module OptionsTests.Util (suite_Util) where

import Options.Util
import Test.Hspec

suite_Util :: Spec
suite_Util = context "util" do
  test_ValidFieldName
  test_ValidShortFlag
  test_ValidLongFlag
  test_HasDuplicates

test_ValidFieldName :: Spec
test_ValidFieldName = specify "validFieldName" do
  shouldBe True $ validFieldName "a"
  shouldBe True $ validFieldName "abc"
  shouldBe True $ validFieldName "_abc_"
  shouldBe True $ validFieldName "abc'"
  shouldBe True $ validFieldName "\12354"
  shouldBe False $ validFieldName ""
  shouldBe False $ validFieldName "'a"
  shouldBe False $ validFieldName "a b"
  shouldBe False $ validFieldName "Ab"

test_ValidShortFlag :: Spec
test_ValidShortFlag = specify "validShortFlag" do
  shouldBe True $ validShortFlag 'a'
  shouldBe True $ validShortFlag 'A'
  shouldBe True $ validShortFlag '0'
  shouldBe True $ validShortFlag '\12354'
  shouldBe False $ validShortFlag ' '
  shouldBe False $ validShortFlag '-'

test_ValidLongFlag :: Spec
test_ValidLongFlag = specify "validLongFlag" do
  shouldBe True $ validLongFlag "a"
  shouldBe True $ validLongFlag "A"
  shouldBe True $ validLongFlag "abc"
  shouldBe True $ validLongFlag "0"
  shouldBe True $ validLongFlag "012"
  shouldBe True $ validLongFlag "a-b"
  shouldBe True $ validLongFlag "a_b"
  shouldBe True $ validLongFlag "\12354bc"
  shouldBe False $ validLongFlag ""
  shouldBe False $ validLongFlag "a b"
  shouldBe False $ validLongFlag "a+b"
  shouldBe False $ validLongFlag "-"
  shouldBe False $ validLongFlag "--"

test_HasDuplicates :: Spec
test_HasDuplicates = specify "hasDuplicates" do
  shouldBe False $ hasDuplicates ([] :: [Char])
  shouldBe False $ hasDuplicates ['a', 'b']
  shouldBe True $ hasDuplicates ['a', 'b', 'a']