diff --git a/CHANGELOG.md b/CHANGELOG.md index ae3a273..ceb2775 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ Breaking changes: New features: Bugfixes: +- Fix `Char`'s `toEnum` implementation (#55 by @JordanMartinez) Other improvements: diff --git a/src/Data/Enum.purs b/src/Data/Enum.purs index 2a4e0f8..0d4b097 100644 --- a/src/Data/Enum.purs +++ b/src/Data/Enum.purs @@ -314,7 +314,7 @@ diag :: forall a. a -> Tuple a a diag a = Tuple a a charToEnum :: Int -> Maybe Char -charToEnum n | n >= bottom && n <= top = Just (fromCharCode n) +charToEnum n | n >= toCharCode bottom && n <= toCharCode top = Just (fromCharCode n) charToEnum _ = Nothing foreign import toCharCode :: Char -> Int diff --git a/test/Test/Data/Enum.purs b/test/Test/Data/Enum.purs index db2d5fb..a71d2c2 100644 --- a/test/Test/Data/Enum.purs +++ b/test/Test/Data/Enum.purs @@ -2,7 +2,7 @@ module Test.Data.Enum (testEnum) where import Prelude -import Data.Enum (class BoundedEnum, class Enum, Cardinality, defaultCardinality, defaultFromEnum, defaultToEnum, downFrom, downFromIncluding, enumFromThenTo, enumFromTo, upFrom, upFromIncluding) +import Data.Enum (class BoundedEnum, class Enum, Cardinality, defaultCardinality, defaultFromEnum, defaultToEnum, downFrom, downFromIncluding, enumFromThenTo, enumFromTo, fromEnum, toEnum, upFrom, upFromIncluding) import Data.Maybe (Maybe(..)) import Data.Newtype (unwrap) import Data.NonEmpty ((:|)) @@ -194,3 +194,15 @@ testEnum = do { actual: defaultFromEnum (Upto100k 100000) , expected: 100000 } + + log "charToEnum" + assertEqual + { actual: Nothing :: Maybe Char + , expected: toEnum (top :: Int) + } + + log "charToEnum" + assertEqual + { actual: Just 'a' + , expected: toEnum (fromEnum 'a') + }