https://github.com/jrincayc/ucblogo-code
Raw File
Tip revision: 91f307bf5a2820657281457f48cee2ee0073df6f authored by Barak A. Pearlmutter on 16 January 2021, 09:16:31 UTC
oops forgot a dependency
Tip revision: 91f307b
UnitTests-Files.lg
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                                        ;;
;;             BERKELEY LOGO              ;;
;;           File Access Tests            ;;
;;                                        ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


InstallSuite [Files] [Tests.File.Setup]



;; The list of all File unit tests
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MAKE "Tests.File [
  ;list tests here
  Tests.File.WriteToCharBuffer
  Tests.File.LegacyWriteToCharBuffer
  Tests.File.InterleaveCharBufferWrites
  Tests.File.OpenWriteCharBufferArgError
  Tests.File.SetWriteCharBufferArgError
]

;; Test Suite setup procedure, main entry
;; point for all tests in this suite
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

to Tests.File.Setup
  RunTests :Tests.File
end

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                                 ;;
;; HELPERS, MISC                   ;;
;;                                 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                                 ;;
;; ADD INDIVIDUAL UNIT TESTS BELOW ;;
;;                                 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;all tests must return T/F indicating success/failure

TO Tests.File.WriteToCharBuffer
  LOCALMAKE "char.buffer [buffer 10]
  LOCALMAKE "saved.writer WRITER

  OPENWRITE :char.buffer
  SETWRITE :char.buffer
  TYPE "01234
  CLOSE :char.buffer
  LOCALMAKE "short :buffer

  OPENWRITE :char.buffer
  SETWRITE :char.buffer
  TYPE "0123456789
  CLOSE :char.buffer
  LOCALMAKE "boundary :buffer

  OPENWRITE :char.buffer
  SETWRITE :char.buffer
  TYPE "0123456789ABCDEF
  CLOSE :char.buffer
  LOCALMAKE "long :buffer

  SETWRITE :saved.writer

  OUTPUT (AND [EQUAL? :short "01234]
              [EQUAL? :boundary "0123456789]
              [EQUAL? :long "0123456789])
END

TO Tests.File.LegacyWriteToCharBuffer
  LOCALMAKE "char.buffer [buffer 10]
  LOCALMAKE "saved.writer WRITER

  SETWRITE :char.buffer
  TYPE "hello
  SETWRITE []

  SETWRITE :saved.writer

  OUTPUT EQUAL? :buffer "hello
END

TO Tests.File.InterleaveCharBufferWrites
  LOCALMAKE "char.buffer.A [buffer.A 10]
  LOCALMAKE "char.buffer.B [buffer.B 10]
  LOCALMAKE "saved.writer WRITER

  OPENWRITE :char.buffer.A
  OPENWRITE :char.buffer.B

  SETWRITE :char.buffer.A
  TYPE "he
  SETWRITE :char.buffer.B
  TYPE "wo
  SETWRITE :char.buffer.A
  TYPE "llo
  SETWRITE :char.buffer.B
  TYPE "rld

  CLOSE :char.buffer.A
  CLOSE :char.buffer.B

  SETWRITE :saved.writer

  OUTPUT (AND [EQUAL? :buffer.A "hello]
              [EQUAL? :buffer.B "world])
END

TO Tests.File.OpenWriteCharBufferArgError
  CATCH "Error [ OPENWRITE [SINGLEARG] ]
  LOCALMAKE "err ERROR

  ; Message 4 is "%p doesn't like %s as input"
  OUTPUT (AND [NOT EMPTY? :err]
              [EQUAL? FIRST :err 4])
END

TO Tests.File.SetWriteCharBufferArgError
  CATCH "Error [ SETWRITE [SINGLEARG] ]
  LOCALMAKE "err ERROR

  ; Message 4 is "%p doesn't like %s as input"
  OUTPUT (AND [NOT EMPTY? :err]
              [EQUAL? FIRST :err 4])
END
back to top