module Facts.Geography.Countries.UnitedStates ( State (..)
, StateAbbreviation (..)
, StateCode
, OtherUSEntity (..)
, state_by_state_code
, state_code_by_state
) where
import Facts.Geography.Countries.UnitedStates.Internal.Data
import Facts.Geography.Countries.UnitedStates.Internal.Splices
import Data.Char
import Data.Data
import Data.Functor
import Data.Maybe
import Data.Typeable
import Test.QuickCheck
import Test.QuickCheck.Gen
instance Show State where
show Alabama = "Alabama"
show Alaska = "Alaska"
show Arkansas = "Arkansas"
show Arizona = "Arizona"
show California = "California"
show Colorodo = "Colorodo"
show Connecticut = "Connecticut"
show Delaware = "Delaware"
show Florida = "Florida"
show Georgia = "Georgia"
show Hawaii = "Hawaii"
show Idaho = "Idaho"
show Illinois = "Illinois"
show Indiana = "Indiana"
show Iowa = "Iowa"
show Kansas = "Kansas"
show Kentucky = "Kentucky"
show Louisiana = "Louisiana"
show Maine = "Maine"
show Maryland = "Maryland"
show Massachusetts = "Massachusetts"
show Michigan = "Michigan"
show Minnesota = "Minnesota"
show Mississippi = "Mississippi"
show Missouri = "Missouri"
show Montana = "Montana"
show Nebraska = "Nebraska"
show Nevada = "Nevada"
show NewHampshire = "New Hampshire"
show NewJersey = "New Jersey"
show NewMexico = "New Mexico"
show NewYork = "New York"
show NorthCarolina = "North Carolina"
show NorthDakota = "North Dakota"
show Ohio = "Ohio"
show Oklahoma = "Oklahoma"
show Oregon = "Oregon"
show Pennsylvania = "Pennsylvania"
show RhodeIsland = "Rhode Island"
show SouthCarolina = "South Carolina"
show SouthDakota = "South Dakota"
show Tennessee = "Tennessee"
show Texas = "Texas"
show Utah = "Utah"
show Vermont = "Vermont"
show Virginia = "Virginia"
show Washington = "Washington"
show WestVirginia = "West Virginia"
show Wisconsin = "Wisconsin"
show Wyoming = "Wyoming"
type StateCode = StateAbbreviation
instance Arbitrary State where
arbitrary = elements [Alabama .. Wyoming]
instance Arbitrary StateCode where
arbitrary = elements [AL .. WY]
prop_state_and_state_code_are_inverses :: State -> Bool
prop_state_and_state_code_are_inverses state = (state_by_state_code . state_code_by_state $ state) == state
prop_state_code_and_state_are_inverses :: StateCode -> Bool
prop_state_code_and_state_are_inverses code = (state_code_by_state . state_by_state_code $ code) == code