https://github.com/jrincayc/ucblogo-code
Tip revision: 1da9cc2eb6b14a636c407a9262dcb36711682ed2 authored by Barak A. Pearlmutter on 31 March 2023, 13:44:18 UTC
log changes
log changes
Tip revision: 1da9cc2
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