Section Header
  
  + name := MAIN; // Do not chnage me !
  // Compare result with unix command: sha256sum <main.li >sha256sum
  
Section Public
  - working_directory:STRING_BUFFER := STRING_BUFFER.create 256;
  - sum_buffer1:STRING_BUFFER := STRING_BUFFER.create 75;
  - sum_buffer2:STRING_BUFFER := STRING_BUFFER.create 75;
  
  - main <-
  ( + file_input:POINTER;
    + sz:INTEGER;    
    working_directory.copy (COMMAND_ARGS.executable_path);
    working_directory.remove_tail 4;
    TEST.check (ENVIRONMENT.chdir working_directory) integer 0;
    TEST.check (FILE_SYSTEM.file_exists "data");
    TEST.check (sum_buffer1.is_empty);
    //
    SHA256.sum "data" in sum_buffer1;
    //
    file_input := FILE_SYSTEM.open_read "sha256sum";
    TEST.check (file_input != NULL);
    sz := FILE_SYSTEM.file_size file_input;
    sum_buffer2.make (sz + 1);
    FILE_SYSTEM.read file_input in sum_buffer2 size sz;
    FILE_SYSTEM.close file_input;
    TEST.check sum_buffer1 string sum_buffer2;
  );
