RegressionTests__ExternalStreamTest.st
author Claus Gittinger <cg@exept.de>
Tue, 18 Dec 2001 21:14:25 +0100
changeset 141 d515658203fd
parent 140 4bd3d40bb165
child 142 5d7f50fbb81b
permissions -rw-r--r--
*** empty log message ***

"{ Package: 'exept:regression' }"

"{ NameSpace: Rel5 }"

TestCase subclass:#ExternalStreamTest
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'Streams-New-Tests'
!


!ExternalStreamTest methodsFor:'tests'!

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'
    "
!

testPosition1
    |h s ch|

    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
    "
!

testPosition2
    |h s|

    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
    "
!

testRead1
    "open an existing file for reading; should read 10 chars"

    |h s nBytesRead|

    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
    "
!

testRead2
    "open an existing file for reading; should read 10 chars"

    |h s|

    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
    "
!

testRead3
    "open an existing file for reading; should read 10 chars"

    |h s bytesRead|

    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
    "
!

testReadWait1
    |h s ok|

    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
    "
!

testTiming
    |h s t|

    ('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 testTiming
    "
!

testWrite1
    |h s|

    ('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
    "
! !

!ExternalStreamTest class methodsFor:'documentation'!

version
    ^ '$Header$'
! !