import System.File
import Data.String

putLines : List String -> IO ()
putLines = putStrLn . fastAppend

total
totalChecks : IO ()
totalChecks =
  do Right (False, l1) <- readFilePage 0 (limit 0) "test.txt"
       | Right (True, _) => putStrLn "Failed EOF check"
       | Left err => putStrLn $ show err
     putStrLn $ "empty: " ++ (show l1)
     Right (False, l2) <- readFilePage 0 (limit 1) "test.txt"
       | Right (True, _) => putStrLn "Failed EOF check"
       | Left err => putStrLn $ show err
     putLines l2
     Right (False, l3) <- readFilePage 1 (limit 2) "test.txt"
       | Right (True, _) => putStrLn "Failed EOF check"
       | Left err => putStrLn $ show err
     putLines l3
     Right (True, l4) <- readFilePage 0 (limit 100) "test.txt"
       | Right (False, _) => putStrLn "Failed EOF check"
       | Left err => putStrLn $ show err
     putLines l4

partial
main : IO ()
main = do totalChecks
          Right (True, l5) <- readFilePage 0 forever "test.txt"
            | Right (False, _) => putStrLn "Failed EOF check"
            | Left err => putStrLn $ show err
          putLines l5
          Right (True, l6) <- readFilePage 2 forever "test.txt"
            | Right (False, _) => putStrLn "Failed EOF check"
            | Left err => putStrLn $ show err
          putLines l6
          Right (True, l7) <- readFilePage 100 forever "test.txt"
            | Right (False, _) => putStrLn "Failed EOF check"
            | Left err => putStrLn $ show err
          putStrLn $ "empty: " ++ (show l7)
          Right l8 <- readFile "test.txt"
            | Left err => putStrLn $ show err
          putStrLn l8
