UIStringParser.purs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. module Test.UIStringParser
  2. ( main
  3. )
  4. where
  5. import Prelude
  6. import Data.Date (Month(..))
  7. import Data.Either (Either(..))
  8. import Effect (Effect)
  9. import LinkedIn.UIElements.Parser (durationP, monthYearP, timeSpanP, uiStringDurationP, uiStringdotSeparatedP)
  10. import LinkedIn.UIElements.Types (Duration(..), TimeSpan(..), UIString(..))
  11. import Parsing (ParseError(..), Position(..), runParser)
  12. import Test.Assert (assertEqual)
  13. import Test.Utils (toMonthYear')
  14. testMonthYearParser ∷ Effect Unit
  15. testMonthYearParser = do
  16. assertEqual {
  17. actual: run "fév. 2004",
  18. expected: Right(toMonthYear' February 2004)
  19. }
  20. assertEqual {
  21. actual: run "juin 2012",
  22. expected: Right(toMonthYear' June 2012)
  23. }
  24. where run s = runParser s monthYearP
  25. testTimeSpanParser ∷ Effect Unit
  26. testTimeSpanParser = do
  27. assertEqual {
  28. actual: run "juin 2012 - aujourd’hui",
  29. expected: Right(TimeSpanToToday (toMonthYear' June 2012))
  30. }
  31. assertEqual {
  32. actual: run "juin 2012 - mai 2021",
  33. expected: Right(TimeSpanBounded (toMonthYear' June 2012) (toMonthYear' May 2021))
  34. }
  35. where run s = runParser s timeSpanP
  36. testDurationParser ∷ Effect Unit
  37. testDurationParser = do
  38. assertEqual {
  39. actual: run "2 ans 3 mois",
  40. expected: Right(YearsMonth 2 3)
  41. }
  42. assertEqual {
  43. actual: run "1 an 3 mois",
  44. expected: Right(YearsMonth 1 3)
  45. }
  46. assertEqual {
  47. actual: run "3 mois",
  48. expected: Right(Months 3)
  49. }
  50. assertEqual {
  51. actual: run "3 ans",
  52. expected: Right(Years 3)
  53. }
  54. assertEqual {
  55. actual: run "1 an",
  56. expected: Right(Years 1)
  57. }
  58. where run s = runParser s durationP
  59. testUIParserDuration ∷ Effect Unit
  60. testUIParserDuration = do
  61. assertEqual {
  62. actual: run "2 ans 3 mois",
  63. expected: Right(UIStringDuration (YearsMonth 2 3))
  64. }
  65. where run s = runParser s uiStringDurationP
  66. testUIParserDotSeparated ∷ Effect Unit
  67. testUIParserDotSeparated = do
  68. assertEqual {
  69. actual: run "some text 1 · some text 2",
  70. expected: Right(UIStringDotSeparated (UIStringPlain "some text 1") (UIStringPlain "some text 2"))
  71. }
  72. assertEqual {
  73. actual: run "· some text after a dot",
  74. expected: Right(UIStringDotSeparated (UIStringPlain "") (UIStringPlain "some text after a dot"))
  75. }
  76. assertEqual {
  77. actual: run "some text before a dot ·",
  78. expected: Right(UIStringDotSeparated (UIStringPlain "some text before a dot") (UIStringPlain ""))
  79. }
  80. assertEqual {
  81. actual: run "string with no dot",
  82. expected: (Left (ParseError "Expected '•'" (Position { column: 19, index: 18, line: 1 })))
  83. }
  84. where run s = runParser s uiStringdotSeparatedP
  85. main :: Effect Unit
  86. main = do
  87. testMonthYearParser
  88. testTimeSpanParser
  89. testDurationParser
  90. testUIParserDuration
  91. testUIParserDotSeparated