UIStringParser.purs 2.8 KB

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