Skip to content

Commit a67079a

Browse files
Update to v0.14.0-rc3 (#30)
* Update packages.dhall to prepare-0.14 bootstrap * Update CI to use v0.14.0-rc3 PS release * Update tests to use assert rather than spec * Update hash * Remove old imports for Spec
1 parent 88f3d9b commit a67079a

File tree

5 files changed

+62
-38
lines changed

5 files changed

+62
-38
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ jobs:
1515

1616
- name: Set up PureScript toolchain
1717
uses: purescript-contrib/setup-purescript@main
18+
with:
19+
purescript: "0.14.0-rc3"
1820

1921
- name: Cache PureScript dependencies
2022
uses: actions/cache@v2

packages.dhall

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
let upstream =
2-
https://github.com/purescript/package-sets/releases/download/psc-0.13.8-20200922/packages.dhall sha256:5edc9af74593eab8834d7e324e5868a3d258bbab75c5531d2eb770d4324a2900
2+
https://raw.githubusercontent.com/purescript/package-sets/prepare-0.14/src/packages.dhall sha256:f591635bcfb73053bcb6de2ecbf2896489fa5b580563396f52a1051ede439849
33

44
in upstream

spago.dhall

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
{ name = "unicode"
22
, dependencies =
3-
[ "console"
3+
[ "assert"
4+
, "console"
45
, "effect"
56
, "foldable-traversable"
67
, "maybe"
78
, "psci-support"
89
, "quickcheck"
910
, "random"
10-
, "spec"
1111
, "strings"
1212
]
1313
, packages = ./packages.dhall

test/Test/Data/Char/Unicode.purs

Lines changed: 54 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,43 @@ module Test.Data.Char.Unicode (dataCharUnicodeTests) where
33

44
import Prelude
55

6+
import Control.Monad.Reader.Class (class MonadReader, ask, local)
67
import Data.Char (fromCharCode)
78
import Data.Char.Unicode (GeneralCategory(..), digitToInt, generalCategory, isAlpha, isAlphaNum, isAscii, isAsciiLower, isAsciiUpper, isControl, isDigit, isHexDigit, isLatin1, isLetter, isLower, isMark, isNumber, isOctDigit, isPrint, isPunctuation, isSeparator, isSpace, isSymbol, isUpper)
89
import Data.Maybe (Maybe(..), fromJust)
10+
import Data.Monoid (power, guard)
911
import Data.NonEmpty ((:|))
10-
import Effect.Class (liftEffect)
12+
import Effect.Console (log)
13+
import Effect.Class (class MonadEffect, liftEffect)
1114
import Partial.Unsafe (unsafePartial)
1215
import Test.QuickCheck (quickCheck)
1316
import Test.QuickCheck.Arbitrary (class Arbitrary)
1417
import Test.QuickCheck.Gen (Gen, oneOf, chooseInt)
15-
import Test.Spec (Spec, describe, it)
16-
import Test.Spec.Assertions (shouldEqual)
18+
import Test.Assert (assertEqual)
1719

18-
dataCharUnicodeTests :: Spec Unit
20+
21+
-----------------------------------------------------------------
22+
23+
-- Provide similar API to purescript-spec to reduce code changes
24+
25+
describe :: forall m. MonadReader Int m => MonadEffect m => String -> m Unit -> m Unit
26+
describe msg runTest = do
27+
indentation <- ask
28+
let spacing = guard (indentation > 0) " "
29+
liftEffect $ log $ (power ">>" indentation) <> spacing <> msg
30+
local (_ + 1) runTest
31+
32+
it :: forall m. MonadReader Int m => MonadEffect m => String -> m Unit -> m Unit
33+
it = describe
34+
35+
shouldEqual :: forall m a. MonadEffect m => Eq a => Show a => a -> a -> m Unit
36+
shouldEqual actual expected =
37+
liftEffect $ assertEqual { actual, expected }
38+
39+
-----------------------------------------------------------------
40+
41+
42+
dataCharUnicodeTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
1943
dataCharUnicodeTests = describe "module Data.Char.Unicode" do
2044
generalCategoryDataTypeTests
2145
generalCategoryTests
@@ -43,7 +67,7 @@ dataCharUnicodeTests = describe "module Data.Char.Unicode" do
4367
isNumberTests
4468
isSeparatorTests
4569

46-
generalCategoryDataTypeTests :: Spec Unit
70+
generalCategoryDataTypeTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
4771
generalCategoryDataTypeTests = describe "GeneralCategory instances" do
4872
describe "Eq instance" do
4973
it "UppercaseLetter == UppercaseLetter" $
@@ -62,7 +86,7 @@ generalCategoryDataTypeTests = describe "GeneralCategory instances" do
6286
it "top == NotAssigned" $
6387
top `shouldEqual` NotAssigned
6488

65-
generalCategoryTests :: Spec Unit
89+
generalCategoryTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
6690
generalCategoryTests = describe "generalCategory" do
6791
it "generalCategory 'a' == LowercaseLetter" $
6892
generalCategory 'a' `shouldEqual` Just LowercaseLetter
@@ -159,36 +183,36 @@ instance arbitrayNonAsciiHexDigit :: Arbitrary NonAsciiHexDigit where
159183
g :: Gen Int
160184
g = chooseInt 0 0x2F
161185

162-
isAsciiTests :: Spec Unit
186+
isAsciiTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
163187
isAsciiTests = describe "isAscii" do
164188
it "ascii chars are ascii" $ liftEffect $ quickCheck \(AsciiChar char) -> isAscii char
165189
it "non ascii chars are not ascii" $ liftEffect $ quickCheck \(NonAsciiChar char) -> not $ isAscii char
166190

167-
isLatin1Tests :: Spec Unit
191+
isLatin1Tests :: forall m. MonadReader Int m => MonadEffect m => m Unit
168192
isLatin1Tests = describe "isLatin1" do
169193
it "ascii chars are latin1" $ liftEffect $ quickCheck \(AsciiChar char) -> isLatin1 char
170194
it "latin1 chars are latin1" $ liftEffect $ quickCheck \(Latin1Char char) -> isLatin1 char
171195
it "non latin1 chars are not latin1" $ liftEffect $ quickCheck \(NonLatin1Char char) -> not $ isLatin1 char
172196

173-
isAsciiLowerTests :: Spec Unit
197+
isAsciiLowerTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
174198
isAsciiLowerTests = describe "isAsciiLower" do
175199
it "lower ascii chars are lower ascii" $ liftEffect $ quickCheck \(AsciiLowerChar char) -> isAsciiLower char
176200
it "non lower ascii chars are not lower ascii" $ liftEffect $ quickCheck \(NonAsciiLowerChar char) -> not $ isAsciiLower char
177201

178-
isAsciiUpperTests :: Spec Unit
202+
isAsciiUpperTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
179203
isAsciiUpperTests = describe "isAsciiUpper" do
180204
it "upper ascii chars are upper ascii" $ liftEffect $ quickCheck \(AsciiUpperChar char) -> isAsciiUpper char
181205
it "non upper ascii chars are not upper ascii" $ liftEffect $ quickCheck \(NonAsciiUpperChar char) -> not $ isAsciiUpper char
182206

183-
isControlTests :: Spec Unit
207+
isControlTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
184208
isControlTests = describe "isControl" do
185209
-- DISABLED: "Illegal character escape code."
186210
-- it "'\\04' is Control" $
187211
-- isControl '\04' `shouldEqual` true
188212
it "'a' is not Control" $
189213
isControl 'a' `shouldEqual` false
190214

191-
isPrintTests :: Spec Unit
215+
isPrintTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
192216
isPrintTests = describe "isPrint" do
193217
-- DISABLED: "Illegal character escape code."
194218
-- it "'\\04' is not Print" $
@@ -200,7 +224,7 @@ isPrintTests = describe "isPrint" do
200224
it "' ' is Print" $
201225
isPrint ' ' `shouldEqual` true
202226

203-
isSpaceTests :: Spec Unit
227+
isSpaceTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
204228
isSpaceTests = describe "isSpace" do
205229
it "' ' is Space" $
206230
isSpace ' ' `shouldEqual` true
@@ -213,7 +237,7 @@ isSpaceTests = describe "isSpace" do
213237
it "'a' is not Space" $
214238
isSpace 'a' `shouldEqual` false
215239

216-
isUpperTests :: Spec Unit
240+
isUpperTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
217241
isUpperTests = describe "isUpper" do
218242
it "'Z' is Upper" $
219243
isUpper 'Z' `shouldEqual` true
@@ -226,7 +250,7 @@ isUpperTests = describe "isUpper" do
226250
it "'日' is not Upper" $
227251
isUpper '日' `shouldEqual` false
228252

229-
isLowerTests :: Spec Unit
253+
isLowerTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
230254
isLowerTests = describe "isLower" do
231255
it "'a' is Lower" $
232256
isLower 'a' `shouldEqual` true
@@ -239,7 +263,7 @@ isLowerTests = describe "isLower" do
239263
it "'日' is not Lower" $
240264
isLower '日' `shouldEqual` false
241265

242-
isAlphaTests :: Spec Unit
266+
isAlphaTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
243267
isAlphaTests = describe "isAlpha" do
244268
it "'a' is Alpha" $
245269
isAlpha 'a' `shouldEqual` true
@@ -252,7 +276,7 @@ isAlphaTests = describe "isAlpha" do
252276
it "'\\n' is not Alpha" $
253277
isAlpha '\n' `shouldEqual` false
254278

255-
isAlphaNumTests :: Spec Unit
279+
isAlphaNumTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
256280
isAlphaNumTests = describe "isAlphaNum" do
257281
it "'a' is AlphaNum" $
258282
isAlphaNum 'a' `shouldEqual` true
@@ -271,22 +295,22 @@ isAlphaNumTests = describe "isAlphaNum" do
271295
it "'\\n' is not AlphaNum" $
272296
isAlphaNum '\n' `shouldEqual` false
273297

274-
isDigitTests :: Spec Unit
298+
isDigitTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
275299
isDigitTests = describe "isDigit" do
276300
it "digits are digits" $ liftEffect $ quickCheck \(AsciiDigit char) -> isDigit char
277301
it "non digits are not digits" $ liftEffect $ quickCheck \(NonAsciiDigit char) -> not $ isDigit char
278302

279-
isOctDigitTests :: Spec Unit
303+
isOctDigitTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
280304
isOctDigitTests = describe "isOctDigit" do
281305
it "oct digits are oct digits" $ liftEffect $ quickCheck \(AsciiOctDigit char) -> isOctDigit char
282306
it "non oct digits are not oct digits" $ liftEffect $ quickCheck \(NonAsciiOctDigit char) -> not $ isOctDigit char
283307

284-
isHexDigitTests :: Spec Unit
308+
isHexDigitTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
285309
isHexDigitTests = describe "isHexDigit" do
286310
it "hex digits are hex digits" $ liftEffect $ quickCheck \(AsciiHexDigit char) -> isHexDigit char
287311
it "non hex digits are not hex digits" $ liftEffect $ quickCheck \(NonAsciiHexDigit char) -> not $ isHexDigit char
288312

289-
isPunctuationTests :: Spec Unit
313+
isPunctuationTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
290314
isPunctuationTests = describe "isPunctuation" do
291315
it "'a' is not Punctuation" $
292316
isPunctuation 'a' `shouldEqual` false
@@ -303,7 +327,7 @@ isPunctuationTests = describe "isPunctuation" do
303327
it "'—' is Punctuation" $
304328
isPunctuation '—' `shouldEqual` true
305329

306-
isSymbolTests :: Spec Unit
330+
isSymbolTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
307331
isSymbolTests = describe "isSymbol" do
308332
it "'a' is not Symbol" $
309333
isSymbol 'a' `shouldEqual` false
@@ -321,14 +345,14 @@ isSymbolTests = describe "isSymbol" do
321345
isSymbol '+' `shouldEqual` true
322346

323347
-- TODO: These.
324-
toUpperTests :: Spec Unit
348+
toUpperTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
325349
toUpperTests = pure unit
326-
toLowerTests :: Spec Unit
350+
toLowerTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
327351
toLowerTests = pure unit
328-
toTitleTests :: Spec Unit
352+
toTitleTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
329353
toTitleTests = pure unit
330354

331-
digitToIntTests :: Spec Unit
355+
digitToIntTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
332356
digitToIntTests = describe "digitToInt" do
333357
it "'0'..'9' get mapped correctly" $
334358
map digitToInt ['0','1','2','3','4','5','6','7','8','9'] `shouldEqual`
@@ -346,11 +370,11 @@ digitToIntTests = describe "digitToInt" do
346370
it "'国' is not a digit" $
347371
digitToInt '国' `shouldEqual` Nothing
348372

349-
isLetterTests:: Spec Unit
373+
isLetterTests:: forall m. MonadReader Int m => MonadEffect m => m Unit
350374
isLetterTests = describe "isLetter" do
351375
it "isLetter == isAlpha" $ liftEffect $ quickCheck \char -> isLetter char == isAlpha char
352376

353-
isMarkTests :: Spec Unit
377+
isMarkTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
354378
isMarkTests = describe "isMark" do
355379
-- TODO: Add a positive test here.
356380
it "'a' is not Mark" $
@@ -362,7 +386,7 @@ isMarkTests = describe "isMark" do
362386
it "'♥' is not Mark" $
363387
isMark '♥' `shouldEqual` false
364388

365-
isNumberTests :: Spec Unit
389+
isNumberTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
366390
isNumberTests = describe "isNumber" do
367391
it "'a' is not Number" $
368392
isNumber 'a' `shouldEqual` false
@@ -382,7 +406,7 @@ isNumberTests = describe "isNumber" do
382406
isNumber '⑳' `shouldEqual` true
383407
it "0..9 are Number" $ liftEffect $ quickCheck \(AsciiDigit char) -> isNumber char
384408

385-
isSeparatorTests :: Spec Unit
409+
isSeparatorTests :: forall m. MonadReader Int m => MonadEffect m => m Unit
386410
isSeparatorTests = describe "isSeparator" do
387411
it "'a' is not Separator" $
388412
isSeparator 'a' `shouldEqual` false

test/Test/Main.purs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@ module Test.Main where
22

33
import Prelude
44

5+
import Control.Monad.Reader.Trans (runReaderT)
56
import Effect (Effect)
6-
import Effect.Aff (launchAff_)
77
import Test.Data.Char.Unicode (dataCharUnicodeTests)
8-
import Test.Spec.Reporter.Console (consoleReporter)
9-
import Test.Spec.Runner (runSpec)
108

119
main :: Effect Unit
12-
main = launchAff_ $ runSpec [consoleReporter] do
13-
dataCharUnicodeTests
10+
main =
11+
runReaderT dataCharUnicodeTests 0

0 commit comments

Comments
 (0)