File: UnitTests-Files.lg

package info (click to toggle)
ucblogo 6.2.5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,584 kB
  • sloc: ansic: 17,658; cpp: 5,302; makefile: 190; perl: 3
file content (132 lines) | stat: -rw-r--r-- 3,048 bytes parent folder | download | duplicates (3)
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