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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/xtreams/terminals/tests' }"
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     2
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     3
"{ NameSpace: Xtreams }"
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     4
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     5
FiniteReadingWritingTests subclass:#CollectionReadingWritingTest
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     6
	instanceVariableNames:''
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     7
	classVariableNames:''
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     8
	poolDictionaries:''
26
d740fff525d4 added XtreamsPool to fix DefaultBufferSize; set proper category names
mkobetic
parents: 9
diff changeset
     9
	category:'Xtreams-Terminals-Tests'
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    10
!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    11
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    12
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    13
!CollectionReadingWritingTest methodsFor:'initialize-release'!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    14
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    15
input
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    16
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    17
	^input ifNil: [ input := (self output close; terminal) reading ]
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    18
!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    19
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    20
output
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    21
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    22
	^output ifNil: [ output := ByteArray new writing ]
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    23
! !
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    24
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    25
!CollectionReadingWritingTest methodsFor:'tests - core'!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    26
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    27
testInsert
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    28
	self output write: #[ 1 2 3 4 7 8 9 0 ].
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    29
	self output -- 4.
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    30
	self output insert: #[ 5 6 ].
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    31
	self output -= 0. "Have to seek to the end otherwise output gets truncated when we close it"
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    32
	self assert: (self input read: 10) = #[ 1 2 3 4 5 6 7 8 9 0 ]
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    33
!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    34
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    35
testReadWriteLargeAmount
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    36
        | data |
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    37
    1 to: 10 do: [:each | 
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    38
        output := input := nil.
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    39
        self output put: 1. self assert: self input get = 1].
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    40
       #( 64 1024 2048 4096 8192 ) do: [:dataSize |
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    41
                output := input := nil.
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    42
                data := ByteArray new: dataSize.
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    43
                1 to: data size do: [:i | data at: i put: (i - 1) \\ 256].
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    44
                self    timeout:        1000 milliseconds
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    45
                        server:         [1 to: 10 do: [:each | self output write: data]. true]
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    46
                        client:         [(1 to: 10) inject: true into: [:pass :each | pass and: [(self input read: data size) = data]]]]
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    47
!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    48
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    49
testWriteFromCollectionAt
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    50
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    51
	| data |
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    52
	data := #[1 2 3 4 5 6 7].
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    53
	self assert: (self output write: 4 from: data at: 1) = 4.
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    54
	self assert: (self output write: 3 from: data at: 5) = 3.
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    55
	self assert: (self input read: 4) = (data first: 4).
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    56
	self assert: (self input read: 3) = (data last: 3)
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    57
!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    58
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    59
testWriteFromStream
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    60
	| data |
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    61
	data := #[ 1 2 3 4 ] reading.
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    62
	self assert: (self output write: 3 from: data) = 3.
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    63
	self assert: (self output write: 1 from: data) = 1.
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    64
	self assert: (self input read: 3) = #[ 1 2 3 ].
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    65
	self assert: self input get = 4.
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    66
	self assert: (
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    67
		[	self output write: 2 from: data. false
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    68
		] on: Incomplete do: [ :eos |
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    69
			eos count = 0 ])
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    70
! !
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    71
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    72
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    73
!CollectionReadingWritingTest class methodsFor:'documentation'!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    74
112
b6b3d8435bb7 - Xtreams::FileReadingWritingTest
joe
parents: 71
diff changeset
    75
version_HG
b6b3d8435bb7 - Xtreams::FileReadingWritingTest
joe
parents: 71
diff changeset
    76
b6b3d8435bb7 - Xtreams::FileReadingWritingTest
joe
parents: 71
diff changeset
    77
    ^ '$Changeset: <not expanded> $'
b6b3d8435bb7 - Xtreams::FileReadingWritingTest
joe
parents: 71
diff changeset
    78
!
b6b3d8435bb7 - Xtreams::FileReadingWritingTest
joe
parents: 71
diff changeset
    79
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    80
version_SVN
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    81
    ^ '$Id$'
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    82
! !
112
b6b3d8435bb7 - Xtreams::FileReadingWritingTest
joe
parents: 71
diff changeset
    83