packages feed

egison-4.1.3: test/lib/core/io.egi

def main args := do
  display "display"
  write " write"
  print " print"
  testPrintToPort
  testEach
  testEachLineFromPort
  let _ := return $ debug (1 + 2)
  let _ := return $ debug2 "1 + 2 = " (1 + 2)
  return ()

def testPrintToPort := do
  let op := openOutputFile "out.txt"
  displayToPort op "displayToPort"
  writeToPort op " writeToPort"
  printToPort op " printToPort"
  closeOutputPort op
  let out := readProcess "cat" ["out.txt"] ""
  let _ := return $
    assertEqual "testPrintToPort" (S.split "\n" out)
      ["displayToPort writeToPort printToPort", ""]
  let _ := readProcess "rm" ["out.txt"] ""
  return ()

def testEach := do
  let op := openOutputFile "out.txt"
  each (printToPort op) ["foo", "bar"]
  closeOutputPort op
  let out := readProcess "cat" ["out.txt"] ""
  let _ := return $
    assertEqual "testEach" (S.split "\n" out) ["foo", "bar", ""]
  let _ := readProcess "rm" ["out.txt"] ""
  return ()

def testEachLineFromPort := do
  let ip := openInputFile "test/fixture/lorem-ipsum.txt"
  let op := openOutputFile "out.txt"
  eachLineFromPort ip (\x -> printToPort op (S.map upperCase x))
  closeInputPort ip
  closeOutputPort op
  let out := readProcess "cat" ["out.txt"] ""
  let _ := return $
    assertEqual "testEachLineFromPort" (S.split "\n" out)
      [ "LOREM IPSUM DOLOR SIT AMET, CONSECTETUR ADIPISCING ELIT, SED DO EIUSMOD TEMPOR INCIDIDUNT UT LABORE ET DOLORE MAGNA ALIQUA."
      , "UT ENIM AD MINIM VENIAM, QUIS NOSTRUD EXERCITATION ULLAMCO LABORIS NISI UT ALIQUIP EX EA COMMODO CONSEQUAT."
      , "DUIS AUTE IRURE DOLOR IN REPREHENDERIT IN VOLUPTATE VELIT ESSE CILLUM DOLORE EU FUGIAT NULLA PARIATUR."
      , "EXCEPTEUR SINT OCCAECAT CUPIDATAT NON PROIDENT, SUNT IN CULPA QUI OFFICIA DESERUNT MOLLIT ANIM ID EST LABORUM."
      , ""
      ]
  let _ := readProcess "rm" ["out.txt"] ""
  return ()