#REFACTORING by cg
class: RegressionTests::OperationInQueueTests
changed: #test3
race
"{ Encoding: utf8 }"
"{ Package: 'stx:goodies/regression' }"
"{ NameSpace: RegressionTests }"
TestCase subclass:#ExternalStreamTest
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'tests-Regression-Streams'
!
!ExternalStreamTest class methodsFor:'documentation'!
documentation
"
tests functions of the new stream package (which is not yet deployed)
"
! !
!ExternalStreamTest methodsFor:'test-helpers'!
createWithSize10:fileName
"helper"
(fileName asFilename exists) ifTrue:[
fileName asFilename delete
].
fileName asFilename writeStream
nextPutAll:'1234567890';
close.
self assert:(fileName asFilename exists).
self assert:(fileName asFilename fileSize == 10).
"
self new createWithSize10:'xxx1'
"
! !
!ExternalStreamTest methodsFor:'tests'!
testCopyFile1
|stxDirectory pathName1 pathName2|
stxDirectory := Helper smalltalkDirectory.
pathName1 := (stxDirectory / 'smalltalk.rc') pathName.
pathName2 := (stxDirectory / 'smalltalk.rc2') pathName.
self assert:(pathName1 asFilename exists).
pathName1 asFilename copyTo:pathName2.
self assert:(pathName1 asFilename fileSize = pathName2 asFilename fileSize).
self assert:(pathName1 asFilename contentsOfEntireFile = pathName2 asFilename contentsOfEntireFile).
pathName2 asFilename delete.
"
self new testCopyFile1
"
! !
!ExternalStreamTest methodsFor:'tests - future (skipped)'!
testPosition1
|h s ch externalReadStream|
externalReadStream := (Smalltalk at:#ExternalReadStream).
self skipIf:true "externalReadStream isBehavior not"
description:'skipped until new stream package is used'.
self createWithSize10:'xxx3'.
h := OperatingSystem openFileForRead:'xxx3'.
s := externalReadStream on:h.
self assert:( s atEnd not ).
self assert:( s position == 0 ).
ch := s next.
self assert:( ch = $1 ).
self assert:( s position == 1 ).
s skip:1.
self assert:( s position == 2 ).
self assert:( s peek = $3 ).
self assert:( s position == 2 ).
s skip:1.
self assert:( s position == 3 ).
self assert:( s peek = $4 ).
self assert:( s position == 3 ).
s close.
'xxx3' asFilename delete.
"
self new testPosition1
"
"Modified: / 16-02-2017 / 18:06:38 / stefan"
"Modified (format): / 28-03-2019 / 12:18:37 / Claus Gittinger"
!
testPosition2
|h s externalReadStream|
externalReadStream := (Smalltalk at:#ExternalReadStream).
self skipIf:true "externalReadStream isBehavior not"
description:'skipped until new stream package is used'.
self createWithSize10:'xxx3'.
h := OperatingSystem openFileForRead:'xxx3'.
s := externalReadStream on:h.
self assert:( s atEnd not ).
self assert:( s position == 0 ).
s setToEnd.
self assert:( s position == 10 ).
self assert:( s atEnd ).
s close.
'xxx3' asFilename delete.
"
self new testPosition2
"
"Modified: / 16-02-2017 / 18:07:01 / stefan"
"Modified (format): / 28-03-2019 / 12:18:44 / Claus Gittinger"
!
testRead1
"open an existing file for reading; should read 10 chars"
|h s externalReadStream|
externalReadStream := (Smalltalk at:#ExternalReadStream).
self skipIf:true "externalReadStream isBehavior not"
description:'skipped until new stream package is used'.
self createWithSize10:'xxx3'.
h := OperatingSystem openFileForRead:'xxx3'.
s := externalReadStream on:h.
'1234567890' do:[:eachExpected |
self assert:( s next == eachExpected ).
].
s close.
'xxx3' asFilename delete.
"
self new testRead1
"
"Modified: / 16-02-2017 / 18:07:08 / stefan"
"Modified (format): / 28-03-2019 / 12:18:51 / Claus Gittinger"
!
testRead2
"open an existing file for reading; should read 10 chars"
|h s externalReadStream|
externalReadStream := (Smalltalk at:#ExternalReadStream).
self skipIf:true "externalReadStream isBehavior not"
description:'skipped until new stream package is used'.
self createWithSize10:'xxx3'.
h := OperatingSystem openFileForRead:'xxx3'.
s := externalReadStream on:h.
s binary.
'1234567890' do:[:eachExpected |
|eachRead|
eachRead := s next.
self assert:( eachRead == eachExpected asciiValue ).
].
s close.
'xxx3' asFilename delete.
"
self new testRead2
"
"Modified: / 16-02-2017 / 18:07:16 / stefan"
"Modified (format): / 28-03-2019 / 12:18:56 / Claus Gittinger"
!
testRead3
"open an existing file for reading; should read 10 chars"
|h s bytesRead externalReadStream|
externalReadStream := (Smalltalk at:#ExternalReadStream).
self skipIf:true "externalReadStream isBehavior not"
description:'skipped until new stream package is used'.
self createWithSize10:'xxx3'.
h := OperatingSystem openFileForRead:'xxx3'.
s := externalReadStream on:h.
self assert:( s atEnd not ).
bytesRead := s next:10.
self assert:( bytesRead = '1234567890' ).
self assert:( s atEnd ).
s close.
'xxx3' asFilename delete.
"
self new testRead3
"
"Modified: / 16-02-2017 / 18:07:21 / stefan"
"Modified (format): / 28-03-2019 / 12:19:02 / Claus Gittinger"
!
testReadWait1
|h s ok externalReadStream|
externalReadStream := (Smalltalk at:#ExternalReadStream).
self skipIf:true "externalReadStream isBehavior not"
description:'skipped until new stream package is used'.
self createWithSize10:'xxx3'.
h := OperatingSystem openFileForRead:'xxx3'.
s := externalReadStream on:h.
ok := (s readWaitWithTimeout:1) == false.
self assert:( ok ).
s close.
'xxx3' asFilename delete.
"
self new testReadWait1
"
"Modified: / 16-02-2017 / 18:07:26 / stefan"
"Modified (format): / 28-03-2019 / 12:19:05 / Claus Gittinger"
!
testTiming1
|h s t externalWriteStream externalReadStream|
externalWriteStream := (Smalltalk at:#ExternalWriteStream).
externalReadStream := (Smalltalk at:#ExternalReadStream).
self skipIf:true "externalWriteStream isBehavior not"
description:'skipped until new stream package is used'.
('xxx1' asFilename exists) ifTrue:[
'xxx1' asFilename delete
].
h := OperatingSystem createFileForReadWrite:'xxx1'.
s := externalWriteStream on:h.
t := Time millisecondsToRun:[
1000000 timesRepeat:[
s nextPut:$a.
].
].
s close.
Transcript showCR:'Time to write: ' , t printString.
self assert:( 'xxx1' asFilename exists ).
self assert:( 'xxx1' asFilename fileSize == 1000000 ).
h := OperatingSystem openFileForRead:'xxx1'.
s := externalReadStream on:h.
t := Time millisecondsToRun:[
1000000 timesRepeat:[
self assert:(s next == $a).
].
].
s close.
Transcript showCR:'Time to read: ' , t printString.
('xxx1' asFilename exists) ifTrue:[
'xxx1' asFilename delete
].
"
self new testTiming1
"
"Modified: / 16-02-2017 / 18:07:43 / stefan"
"Modified (format): / 28-03-2019 / 12:19:09 / Claus Gittinger"
!
testTiming2
|h s t externalWriteStream externalReadStream|
externalWriteStream := (Smalltalk at:#ExternalWriteStream).
externalReadStream := (Smalltalk at:#ExternalReadStream).
self skipIf:true "externalWriteStream isBehavior not"
description:'skipped until new stream package is used'.
('xxx1' asFilename exists) ifTrue:[
'xxx1' asFilename delete
].
h := OperatingSystem createFileForReadWrite:'xxx1'.
s := externalWriteStream on:h.
t := Time millisecondsToRun:[
100000 timesRepeat:[
s nextPutAll:'0123456789'.
].
].
s close.
Transcript showCR:'Time to write: ' , t printString.
self assert:( 'xxx1' asFilename exists ).
self assert:( 'xxx1' asFilename fileSize == 1000000 ).
h := OperatingSystem openFileForRead:'xxx1'.
s := externalReadStream on:h.
t := Time millisecondsToRun:[
100000 timesRepeat:[
self assert:((s next:10) = '0123456789').
].
].
s close.
Transcript showCR:'Time to read: ' , t printString.
('xxx1' asFilename exists) ifTrue:[
'xxx1' asFilename delete
].
"
self new testTiming2
"
"Modified: / 16-02-2017 / 18:07:56 / stefan"
"Modified (format): / 28-03-2019 / 12:19:13 / Claus Gittinger"
!
testWriteNewStreams1
"new streams (from sv) - as yet unfinished"
|h s externalWriteStream|
externalWriteStream := (Smalltalk at:#ExternalWriteStream).
self skipIf:true "externalWriteStream isBehavior not"
description:'skipped until new stream package is used'.
('xxx1' asFilename exists) ifTrue:[
'xxx1' asFilename delete
].
h := OperatingSystem createFileForReadWrite:'xxx1'.
s := externalWriteStream on:h.
s nextPutAll:'1234567890'.
s close.
self assert:( 'xxx1' asFilename exists ).
self assert:( 'xxx1' asFilename fileSize == 10 ).
self assert:( 'xxx1' asFilename contentsOfEntireFile = '1234567890' ).
('xxx1' asFilename exists) ifTrue:[
'xxx1' asFilename delete
].
"
self new testWrite1
"
"Created: / 28-03-2019 / 11:02:34 / Claus Gittinger"
!
testWriteNewStreams2
"new streams (from sv) - as yet unfinished"
|h s externalWriteStream|
externalWriteStream := (Smalltalk at:#ExternalWriteStream).
self skipIf:true "externalWriteStream isBehavior not"
description:'skipped until new stream package is used'.
('xxx1' asFilename exists) ifTrue:[
'xxx1' asFilename delete
].
h := OperatingSystem createFileForReadWrite:'xxx1'.
s := externalWriteStream on:h.
self assert:( s position == 0 ).
s nextPutAll:'1234567890'.
self assert:( s position == 10 ).
s close.
self assert:( 'xxx1' asFilename exists ).
self assert:( 'xxx1' asFilename fileSize == 10 ).
self assert:( 'xxx1' asFilename contentsOfEntireFile = '1234567890' ).
('xxx1' asFilename exists) ifTrue:[
'xxx1' asFilename delete
].
"
self new testWrite2
"
"Created: / 28-03-2019 / 11:02:41 / Claus Gittinger"
!
testWriteNewStreams3
"new streams (from sv) - as yet unfinished"
|h s externalWriteStream|
externalWriteStream := (Smalltalk at:#ExternalWriteStream).
self skipIf:true "externalWriteStream isBehavior not"
description:'skipped until new stream package is used'.
('xxx1' asFilename exists) ifTrue:[
'xxx1' asFilename delete
].
h := OperatingSystem createFileForReadWrite:'xxx1'.
s := externalWriteStream on:h.
s nextPutAll:'1234567890'.
self assert:( s position == 10 ).
s position:5.
s nextPutAll:'abcdefghij'.
self assert:( s position == 15 ).
s close.
self assert:( 'xxx1' asFilename exists ).
self assert:( 'xxx1' asFilename fileSize == 15 ).
self assert:( 'xxx1' asFilename contentsOfEntireFile = '12345abcdefghij' ).
('xxx1' asFilename exists) ifTrue:[
'xxx1' asFilename delete
].
"
self new testWrite3
"
"Created: / 28-03-2019 / 11:02:43 / Claus Gittinger"
! !
!ExternalStreamTest class methodsFor:'documentation'!
version
^ '$Header$'
!
version_CVS
^ '$Header$'
! !