1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; 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
|