terminals/tests/Xtreams__CollectionReadingWritingTest.st
author joe
Fri, 15 Mar 2013 19:39:10 -0400
changeset 112 b6b3d8435bb7
parent 71 b5baf23694f3
permissions -rw-r--r--
- Xtreams::FileReadingWritingTest class: Xtreams::FileReadingWritingTest added: #version_HG - stx_goodies_xtreams_terminals_tests class: stx_goodies_xtreams_terminals_tests changed: #classNamesAndAttributes - Xtreams::BlockClosureReadingWritingTest class: Xtreams::BlockClosureReadingWritingTest added: #version_HG - Xtreams::PipeReadingWritingTest class: Xtreams::PipeReadingWritingTest added: #version_HG - Xtreams::BufferReadingWritingTest class: Xtreams::BufferReadingWritingTest added: #version_HG - Xtreams::BlockClosureTest class: Xtreams::BlockClosureTest added: #version_HG - Xtreams::RingBufferReadingWritingTest class: Xtreams::RingBufferReadingWritingTest added: #version_HG - Xtreams::BufferedWriteStreamTest class: Xtreams::BufferedWriteStreamTest added: #version_HG - Xtreams::CollectionReadingWritingTest class: Xtreams::CollectionReadingWritingTest added: #version_HG - Xtreams::SocketReadingWritingTest class: Xtreams::SocketReadingWritingTest added: #version_HG - Xtreams::ElasticBufferReadingWritingTest class: Xtreams::ElasticBufferReadingWritingTest added: #version_HG

"{ Package: 'stx:goodies/xtreams/terminals/tests' }"

"{ NameSpace: Xtreams }"

FiniteReadingWritingTests subclass:#CollectionReadingWritingTest
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'Xtreams-Terminals-Tests'
!


!CollectionReadingWritingTest methodsFor:'initialize-release'!

input

	^input ifNil: [ input := (self output close; terminal) reading ]
!

output

	^output ifNil: [ output := ByteArray new writing ]
! !

!CollectionReadingWritingTest methodsFor:'tests - core'!

testInsert
	self output write: #[ 1 2 3 4 7 8 9 0 ].
	self output -- 4.
	self output insert: #[ 5 6 ].
	self output -= 0. "Have to seek to the end otherwise output gets truncated when we close it"
	self assert: (self input read: 10) = #[ 1 2 3 4 5 6 7 8 9 0 ]
!

testReadWriteLargeAmount
        | data |
    1 to: 10 do: [:each | 
        output := input := nil.
        self output put: 1. self assert: self input get = 1].
       #( 64 1024 2048 4096 8192 ) do: [:dataSize |
                output := input := nil.
                data := ByteArray new: dataSize.
                1 to: data size do: [:i | data at: i put: (i - 1) \\ 256].
                self    timeout:        1000 milliseconds
                        server:         [1 to: 10 do: [:each | self output write: data]. true]
                        client:         [(1 to: 10) inject: true into: [:pass :each | pass and: [(self input read: data size) = data]]]]
!

testWriteFromCollectionAt

	| data |
	data := #[1 2 3 4 5 6 7].
	self assert: (self output write: 4 from: data at: 1) = 4.
	self assert: (self output write: 3 from: data at: 5) = 3.
	self assert: (self input read: 4) = (data first: 4).
	self assert: (self input read: 3) = (data last: 3)
!

testWriteFromStream
	| data |
	data := #[ 1 2 3 4 ] reading.
	self assert: (self output write: 3 from: data) = 3.
	self assert: (self output write: 1 from: data) = 1.
	self assert: (self input read: 3) = #[ 1 2 3 ].
	self assert: self input get = 4.
	self assert: (
		[	self output write: 2 from: data. false
		] on: Incomplete do: [ :eos |
			eos count = 0 ])
! !


!CollectionReadingWritingTest class methodsFor:'documentation'!

version_HG

    ^ '$Changeset: <not expanded> $'
!

version_SVN
    ^ '$Id$'
! !