transforms/tests/extensions.st
author joe
Thu, 21 Mar 2013 23:22:10 -0400
changeset 123 1dffa525d5d7
parent 115 eaa0849c3f13
child 125 1d1b71370d34
permissions -rw-r--r--
* fixed testWriteTransformHexToByte
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
     1
"{ Package: 'stx:goodies/xtreams/transforms/tests' }"!
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     2
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     3
!Xtreams::CollectionReadingWritingTest methodsFor:'tests - transforming'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     4
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     5
testReadRejecting
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
     6
	self output write: #[ 1 2 3 4 5 6 7 8 9 ].
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
     7
	self assert: ((self input rejecting: [ :e | e even ]) read: 5) = #[ 1 3 5 7 9 ]
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     8
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
     9
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    10
!Xtreams::CollectionReadingWritingTest methodsFor:'tests - transforming'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    11
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    12
testReadSelecting
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    13
	self output write: #[ 1 2 3 4 5 6 7 8 9 ].
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    14
	self assert: ((self input selecting: [ :e | e even ]) read: 4) = #[ 2 4 6 8 ]
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    15
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    16
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    17
!Xtreams::CollectionReadingWritingTest methodsFor:'tests - transforming'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    18
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    19
testWriteRejecting
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    20
	(self output rejecting: [ :e | e even ] ) write: #[ 1 2 3 4 5 6 7 8 9 ]; close.
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    21
	self assert: (self input read: 5) = #[ 1 3 5 7 9 ]
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    22
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    23
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    24
!Xtreams::CollectionReadingWritingTest methodsFor:'tests - transforming'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    25
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    26
testWriteSelecting
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    27
	(self output selecting: [ :e | e even]) write: #[ 1 2 3 4 5 6 7 8 9 ]; close.
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    28
	self assert: (self input read: 4) = #[ 2 4 6 8 ]
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    29
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    30
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    31
!Xtreams::CollectionReadingWritingTest methodsFor:'tests - transforming'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    32
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    33
testWriteTransformHexToByte
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    34
	| hex2Byte decoder result |
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    35
	decoder := [ :char | ('0123456789ABCDEF' indexOf: char asUppercase) - 1 ].
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    36
	hex2Byte :=
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    37
		self output transforming: [ :in :out |
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    38
			out put: (((decoder value: in get) bitShift: 4) + (decoder value: in get)) ].
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    39
	hex2Byte buffer: (ElasticBuffer on: (ByteString new: 16)).
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    40
	hex2Byte write: 'ab'.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    41
	hex2Byte write: 'cdef'.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    42
	hex2Byte close.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    43
	self assert: self input get = 16rAB.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    44
	result := self input read: 2.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    45
	self assert: result = #[16rcd 16ref].
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    46
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    47
73
mkobetic
parents: 59
diff changeset
    48
!Xtreams::FiniteReadingWritingTests methodsFor:'tests - interpreting'!
40
9cf7a05861e6 sockets and files
mkobetic
parents: 19
diff changeset
    49
73
mkobetic
parents: 59
diff changeset
    50
testInterpretingDoubles
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    51
	| doubles result |
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    52
	doubles := (1 to: 10) reading collect: [ :i | i reciprocal asDouble ].
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    53
	(self output interpreting: #double) write: doubles; close.
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    54
	result := (self input interpreting: #double) rest.
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    55
	self assert: result = doubles asArray
73
mkobetic
parents: 59
diff changeset
    56
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    57
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    58
!Xtreams::FiniteReadingWritingTests methodsFor:'tests - transforming'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    59
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    60
testWriteTransformingOverLimitingPastEnd
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    61
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    62
	| limited transferred |
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    63
	limited := (self output limiting: 10) transforming: [ :in :out | out put: in get ].
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    64
	self assert: (
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    65
		[       limited write: (ByteArray withAll: (1 to: 20)).
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    66
			false
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    67
		] on: Incomplete do: [ :ex | ex count = 11 ] ).
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    68
	transferred := self input read: 10.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    69
	self assert: transferred = (ByteArray withAll: (1 to: 10))
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    70
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    71
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    72
!Xtreams::FiniteReadingWritingTests methodsFor:'tests - transforming'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    73
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    74
testWriteTransformingPastEnd
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    75
	| count transformed |
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    76
	count := 1.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    77
	transformed := self output transforming: [:in :out |
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    78
		count = 2 ifTrue: [Incomplete zero raise].
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    79
		out put: in get.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    80
		count := count + 1].
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    81
	self assert: (
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    82
		[       transformed write: #[ 1 2 3 ].
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    83
			false
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    84
		] on: Incomplete do: [ :ex | ex count = 1 ]).
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    85
	transformed close.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    86
	self assert: self input get = 1.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    87
	self should: [self input get] raise: Incomplete.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    88
	self should: [self input get] raise: Incomplete
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    89
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    90
73
mkobetic
parents: 59
diff changeset
    91
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    92
115
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
    93
testCharacters
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
    94
	(self output encoding: #ascii)
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
    95
		setLineEndTransparent;
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
    96
		backspace; bell; cr; delete; ff; lf; q; qq; space; tab; vtab; escape;
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
    97
		close.
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
    98
	self assert: (self input read: 12) = #[8 7 13 127 12 10 39 34 32 9 11 27]
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
    99
! !
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
   100
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
   101
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
   102
73
mkobetic
parents: 59
diff changeset
   103
testDoing
mkobetic
parents: 59
diff changeset
   104
	| outing inning |
mkobetic
parents: 59
diff changeset
   105
	outing := ByteArray new writing.
mkobetic
parents: 59
diff changeset
   106
	(self output doing: [:each | outing put: each]) write: #[ 1 2 3 4 5 ].
mkobetic
parents: 59
diff changeset
   107
	self assert: outing contents = #[ 1 2 3 4 5 ].
mkobetic
parents: 59
diff changeset
   108
mkobetic
parents: 59
diff changeset
   109
	inning := ByteArray new writing.
mkobetic
parents: 59
diff changeset
   110
	self assert: ((self input doing: [:each | inning put: each]) read: 5) = #[ 1 2 3 4 5 ].
mkobetic
parents: 59
diff changeset
   111
	self assert: inning contents = #[ 1 2 3 4 5 ]
mkobetic
parents: 59
diff changeset
   112
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   113
73
mkobetic
parents: 59
diff changeset
   114
!Xtreams::ReadingWritingTest methodsFor:'tests - interpreting'!
mkobetic
parents: 59
diff changeset
   115
mkobetic
parents: 59
diff changeset
   116
testInterpretingPoints
mkobetic
parents: 59
diff changeset
   117
mkobetic
parents: 59
diff changeset
   118
	| points result |
mkobetic
parents: 59
diff changeset
   119
	points := (Random new reading transforming: [ :in :out | out put: in get @ in get ]) read: 5.
mkobetic
parents: 59
diff changeset
   120
	(self output interpreting: [ :b :i :o | b doubleAt: i put: o x. b doubleAt: i + 8 put: o y ] size: 16 )
mkobetic
parents: 59
diff changeset
   121
		write: points;
mkobetic
parents: 59
diff changeset
   122
		close.
mkobetic
parents: 59
diff changeset
   123
	result := (self input interpreting: [ :b :i | (b doubleAt: i) @ (b doubleAt: i + 8) ] size: 16 cacheSize: 5) read: points size.
mkobetic
parents: 59
diff changeset
   124
	self assert: points = result
mkobetic
parents: 59
diff changeset
   125
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   126
73
mkobetic
parents: 59
diff changeset
   127
!Xtreams::ReadingWritingTest methodsFor:'tests - interpreting'!
mkobetic
parents: 59
diff changeset
   128
mkobetic
parents: 59
diff changeset
   129
testMarshaling
mkobetic
parents: 59
diff changeset
   130
	| object result in out |
mkobetic
parents: 59
diff changeset
   131
	object := Object new.
mkobetic
parents: 59
diff changeset
   132
	out := self output marshaling.
mkobetic
parents: 59
diff changeset
   133
	in := self input marshaling.
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   134
	2 timesRepeat:
73
mkobetic
parents: 59
diff changeset
   135
		[out put: ((1 to: 11) collect: [:each | (1 to: 11) collect: [:ea | object]]).
mkobetic
parents: 59
diff changeset
   136
		result := in get.
mkobetic
parents: 59
diff changeset
   137
		self assert: result size = 11.
mkobetic
parents: 59
diff changeset
   138
		self assert: (result allSatisfy: [:each | each allSatisfy: [:ea | ea == result first first]])]
mkobetic
parents: 59
diff changeset
   139
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   140
73
mkobetic
parents: 59
diff changeset
   141
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
mkobetic
parents: 59
diff changeset
   142
mkobetic
parents: 59
diff changeset
   143
testReadCollecting
mkobetic
parents: 59
diff changeset
   144
	| data |
mkobetic
parents: 59
diff changeset
   145
	data := #[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ].
mkobetic
parents: 59
diff changeset
   146
	self output write: data.
mkobetic
parents: 59
diff changeset
   147
	self assert: ((self input collecting: [:e | e * e]) read: data size) = (ByteArray withAll: (data collect: [:e | e * e]))
mkobetic
parents: 59
diff changeset
   148
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   149
73
mkobetic
parents: 59
diff changeset
   150
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
mkobetic
parents: 59
diff changeset
   151
mkobetic
parents: 59
diff changeset
   152
testReadCollectingContentsSpeciesChanged
mkobetic
parents: 59
diff changeset
   153
	| data result |
mkobetic
parents: 59
diff changeset
   154
	data := ByteArray withAll: ((1 to: 16) collect: [:index | 65]).
mkobetic
parents: 59
diff changeset
   155
	self output write: data.
mkobetic
parents: 59
diff changeset
   156
	result :=
mkobetic
parents: 59
diff changeset
   157
		(self input collecting: [:e | Character codePoint: e])
mkobetic
parents: 59
diff changeset
   158
			contentsSpecies: String;
mkobetic
parents: 59
diff changeset
   159
			read: data size.
mkobetic
parents: 59
diff changeset
   160
	self assert: result = (String withAll: (data asArray collect: [:e | Character codePoint: e]))
mkobetic
parents: 59
diff changeset
   161
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   162
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   163
!Xtreams::ReadingWritingTest methodsFor:'tests - encoding'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   164
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   165
testReadDecodingBase64
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   166
	(self output encoding: #ascii)
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   167
		write:
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   168
'TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   169
IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   170
dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   171
dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   172
ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=';
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   173
		close.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   174
	self assert: (((self input encoding: #ascii) encodingBase64 encoding: #ascii) read: 269) = 'Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.'
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   175
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   176
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   177
!Xtreams::ReadingWritingTest methodsFor:'tests - encoding'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   178
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   179
testReadDecodingCRLF
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   180
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   181
	| result |
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   182
	self output write: #[104 101 108 108 111 13 10 119 111 114 108 100 10 13 13 10 10 ]; close.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   183
	result := (self input encoding: #ascii) read: 15.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   184
	self assert: result = 'hello\world\\\\' withCRs
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   185
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   186
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   187
!Xtreams::ReadingWritingTest methodsFor:'tests - encoding'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   188
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   189
testReadDecodingTransparent
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   190
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   191
	| result bytes |
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   192
	bytes := #[104 101 108 108 111 13 10 119 111 114 108 100 13 10 13 10 13 10 ].
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   193
	self output write: bytes; close.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   194
	result := (self input encoding: #ascii) setLineEndTransparent read: bytes size.
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   195
	self assert: result = (String withAll: (bytes asArray collect: [ :e | e asCharacter ]))
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   196
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   197
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   198
!Xtreams::ReadingWritingTest methodsFor:'tests - encoding'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   199
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   200
testReadDecodingUTF16
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   201
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   202
	| result bytes |
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   203
	bytes := #[0 72 0 101 0 108 0 108 0 111 0 32 0 87 0 111 0 114 0 108 0 100 0 33].
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   204
	self output write: bytes; close.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   205
	result := (self input encoding: #utf16) read: 12.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   206
	self assert: result = 'Hello World!!'
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   207
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   208
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   209
!Xtreams::ReadingWritingTest methodsFor:'tests - encoding'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   210
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   211
testReadDecodingUTF8
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   212
91
mkobetic
parents: 82
diff changeset
   213
        | result bytes text |
mkobetic
parents: 82
diff changeset
   214
        text := 'Příliš žluťoučký kůň úpěl ďábelské ódy'.
mkobetic
parents: 82
diff changeset
   215
        bytes := #[80 197 153 195 173 108 105 197 161 32 197 190 108 117 197 165 111 117 196 141 107 195 189 32 107 197 175 197 136 32 195 186 112 196 155 108 32 196 143 195 161 98 101 108 115 107 195 169 32 195 179 100 121].
mkobetic
parents: 82
diff changeset
   216
        self output write: bytes; close.
mkobetic
parents: 82
diff changeset
   217
        result := (self input encoding: #utf8) read: 38.
mkobetic
parents: 82
diff changeset
   218
        self assert: result = text
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   219
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   220
73
mkobetic
parents: 59
diff changeset
   221
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   222
73
mkobetic
parents: 59
diff changeset
   223
testReadDuplicating
mkobetic
parents: 59
diff changeset
   224
mkobetic
parents: 59
diff changeset
   225
	| copy contents |
mkobetic
parents: 59
diff changeset
   226
	contents := Array withAll: (0 to: 15).
mkobetic
parents: 59
diff changeset
   227
	copy := Array new writing.
mkobetic
parents: 59
diff changeset
   228
	self assert: (contents reading duplicating: copy) rest = contents.
mkobetic
parents: 59
diff changeset
   229
	self assert: copy conclusion = contents
mkobetic
parents: 59
diff changeset
   230
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   231
73
mkobetic
parents: 59
diff changeset
   232
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
mkobetic
parents: 59
diff changeset
   233
mkobetic
parents: 59
diff changeset
   234
testReadInjecting
mkobetic
parents: 59
diff changeset
   235
	self output write: #[ 1 2 3 4 ].
mkobetic
parents: 59
diff changeset
   236
	self assert: ((self input injecting: 0 into: [:all :each | all + each]) read: 4) = #[ 1 3 6 10 ]
mkobetic
parents: 59
diff changeset
   237
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   238
73
mkobetic
parents: 59
diff changeset
   239
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
mkobetic
parents: 59
diff changeset
   240
mkobetic
parents: 59
diff changeset
   241
testReadRejecting
mkobetic
parents: 59
diff changeset
   242
	self output write: #[ 1 2 3 4 5 6 7 8 9 ].
mkobetic
parents: 59
diff changeset
   243
	self assert: ((self input rejecting: #even) read: 5) = #[ 1 3 5 7 9 ]
mkobetic
parents: 59
diff changeset
   244
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   245
73
mkobetic
parents: 59
diff changeset
   246
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
mkobetic
parents: 59
diff changeset
   247
mkobetic
parents: 59
diff changeset
   248
testReadSelecting
mkobetic
parents: 59
diff changeset
   249
	self output write: #[ 1 2 3 4 5 6 7 8 9 ].
mkobetic
parents: 59
diff changeset
   250
	self assert: ((self input selecting: #even) read: 4) = #[ 2 4 6 8 ]
mkobetic
parents: 59
diff changeset
   251
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   252
73
mkobetic
parents: 59
diff changeset
   253
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
mkobetic
parents: 59
diff changeset
   254
mkobetic
parents: 59
diff changeset
   255
testReadTransforming1into2
mkobetic
parents: 59
diff changeset
   256
	| result |
mkobetic
parents: 59
diff changeset
   257
	self output write: #[ 1 2 3 ].
mkobetic
parents: 59
diff changeset
   258
	result :=
mkobetic
parents: 59
diff changeset
   259
		(self input transforming: [:in :out | | x | x := in get. out put: x; put: x])
mkobetic
parents: 59
diff changeset
   260
			read: 6.
mkobetic
parents: 59
diff changeset
   261
	self assert: result = #[ 1 1 2 2 3 3 ]
mkobetic
parents: 59
diff changeset
   262
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   263
73
mkobetic
parents: 59
diff changeset
   264
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
mkobetic
parents: 59
diff changeset
   265
mkobetic
parents: 59
diff changeset
   266
testReadTransforming2into1
mkobetic
parents: 59
diff changeset
   267
	| result |
mkobetic
parents: 59
diff changeset
   268
	self output write: #[ 1 2 3 4 ].
mkobetic
parents: 59
diff changeset
   269
	result :=
mkobetic
parents: 59
diff changeset
   270
		(self input transforming: [:in :out | in get. out put: in get])
mkobetic
parents: 59
diff changeset
   271
			read: 2.
mkobetic
parents: 59
diff changeset
   272
	self assert: result = #[ 2 4 ]
mkobetic
parents: 59
diff changeset
   273
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   274
73
mkobetic
parents: 59
diff changeset
   275
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
mkobetic
parents: 59
diff changeset
   276
mkobetic
parents: 59
diff changeset
   277
testReadTransformingPastEnd
mkobetic
parents: 59
diff changeset
   278
	| count transformed |
mkobetic
parents: 59
diff changeset
   279
	count := 1.
mkobetic
parents: 59
diff changeset
   280
	self output write: #[ 1 2 3 ]; close.
mkobetic
parents: 59
diff changeset
   281
	transformed := self input transforming: [:in :out |
mkobetic
parents: 59
diff changeset
   282
		count = 2 ifTrue: [Incomplete zero raise].
mkobetic
parents: 59
diff changeset
   283
		out put: in get.
mkobetic
parents: 59
diff changeset
   284
		count := count + 1].
mkobetic
parents: 59
diff changeset
   285
	self assert: transformed get = 1.
mkobetic
parents: 59
diff changeset
   286
	self should: [transformed get] raise: Incomplete.
mkobetic
parents: 59
diff changeset
   287
	self should: [transformed get] raise: Incomplete
mkobetic
parents: 59
diff changeset
   288
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   289
73
mkobetic
parents: 59
diff changeset
   290
!Xtreams::ReadingWritingTest methodsFor:'tests - interpreting'!
mkobetic
parents: 59
diff changeset
   291
mkobetic
parents: 59
diff changeset
   292
testReadUnsignedShortEndianness
mkobetic
parents: 59
diff changeset
   293
mkobetic
parents: 59
diff changeset
   294
	self output write: #[ 16rFF 16r00 16rFF 00]; close.
mkobetic
parents: 59
diff changeset
   295
	self assert: (self input interpreting: #unsignedShort_le) get = 16rFF.
mkobetic
parents: 59
diff changeset
   296
	self assert: (self input interpreting: #unsignedShort_be) get = 16rFF00.
mkobetic
parents: 59
diff changeset
   297
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   298
73
mkobetic
parents: 59
diff changeset
   299
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
mkobetic
parents: 59
diff changeset
   300
mkobetic
parents: 59
diff changeset
   301
testWriteCollecting
mkobetic
parents: 59
diff changeset
   302
	| data |
mkobetic
parents: 59
diff changeset
   303
	data := 1 to: 15.
mkobetic
parents: 59
diff changeset
   304
	(self output collecting: [:e | e * e]) write: data.
mkobetic
parents: 59
diff changeset
   305
	self assert: (self input read: data size) = (ByteArray withAll: (data collect: [:e | e * e]))
mkobetic
parents: 59
diff changeset
   306
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   307
73
mkobetic
parents: 59
diff changeset
   308
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
mkobetic
parents: 59
diff changeset
   309
mkobetic
parents: 59
diff changeset
   310
testWriteCollectingIncompatibleContentSpecies
mkobetic
parents: 59
diff changeset
   311
	| data |
mkobetic
parents: 59
diff changeset
   312
	data := (1 to: 15) collect: [ :x | x @ 0 ].
mkobetic
parents: 59
diff changeset
   313
	(self output collecting: [:e | e x ]) write: data.
mkobetic
parents: 59
diff changeset
   314
	self assert: (self input read: data size) = (ByteArray withAll: (data collect: [:e | e x]))
mkobetic
parents: 59
diff changeset
   315
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   316
73
mkobetic
parents: 59
diff changeset
   317
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
mkobetic
parents: 59
diff changeset
   318
mkobetic
parents: 59
diff changeset
   319
testWriteCollectingMultipleBufferSize
mkobetic
parents: 59
diff changeset
   320
	| data |
mkobetic
parents: 59
diff changeset
   321
	data := (1 to: DefaultBufferSize + 500) collect: [ :i | i \\ 16 ].
mkobetic
parents: 59
diff changeset
   322
	self timeout: 1 seconds
mkobetic
parents: 59
diff changeset
   323
		server:
mkobetic
parents: 59
diff changeset
   324
			[(self output collecting: [:e | e * e])
mkobetic
parents: 59
diff changeset
   325
				write: data;
mkobetic
parents: 59
diff changeset
   326
				close.
mkobetic
parents: 59
diff changeset
   327
			true]
mkobetic
parents: 59
diff changeset
   328
		client: [(self input read: data size) = (ByteArray withAll: (data collect: [:e | e * e]))]
mkobetic
parents: 59
diff changeset
   329
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   330
73
mkobetic
parents: 59
diff changeset
   331
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
mkobetic
parents: 59
diff changeset
   332
mkobetic
parents: 59
diff changeset
   333
testWriteDuplicating
mkobetic
parents: 59
diff changeset
   334
mkobetic
parents: 59
diff changeset
   335
	| original copy contents |
mkobetic
parents: 59
diff changeset
   336
	contents := Array withAll: (0 to: 15).
mkobetic
parents: 59
diff changeset
   337
	original := Array new writing.
mkobetic
parents: 59
diff changeset
   338
	copy := Array new writing.
mkobetic
parents: 59
diff changeset
   339
	(original duplicating: copy) write: contents.
mkobetic
parents: 59
diff changeset
   340
	self assert: original conclusion = contents.
mkobetic
parents: 59
diff changeset
   341
	self assert: copy conclusion = contents
mkobetic
parents: 59
diff changeset
   342
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   343
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   344
!Xtreams::ReadingWritingTest methodsFor:'tests - encoding'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   345
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   346
testWriteEncodingBase64
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   347
	((self output encoding: #ascii) encodingBase64 encoding: #ascii)
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   348
		write: 'Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.';
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   349
		close.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   350
	self assert: ((self input encoding: #ascii) read: 360) = 'TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4='
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   351
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   352
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   353
!Xtreams::ReadingWritingTest methodsFor:'tests - encoding'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   354
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   355
testWriteEncodingCRLF
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   356
115
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
   357
        | result isCRLF |
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
   358
        (self output encoding: #ascii)
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
   359
                write: 'hello\world\\\' withCRs;
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
   360
                close.
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
   361
        isCRLF := OperatingSystem isMSWINDOWSlike.
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
   362
        result := self input read: (isCRLF ifTrue: [18] ifFalse: [14]).
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   363
115
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
   364
        self assert: result = (isCRLF
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
   365
                ifTrue: [#[104 101 108 108 111 13 10 119 111 114 108 100 13 10 13 10 13 10 ] ]
eaa0849c3f13 - Xtreams::DuplicateTest
joe
parents: 109
diff changeset
   366
                ifFalse: [#[104 101 108 108 111 10 119 111 114 108 100 10 10 10 ] ])
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   367
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   368
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   369
!Xtreams::ReadingWritingTest methodsFor:'tests - encoding'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   370
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   371
testWriteEncodingTransparent
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   372
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   373
	| data result bytes |
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   374
	bytes := #[104 101 108 108 111 13 10 119 111 114 108 100 13 10 13 10 13 10 ].
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   375
	data := String withAll: (bytes asArray collect: [ :e | e asCharacter ]).
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   376
	(self output encoding: #ascii)
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   377
		setLineEndTransparent;
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   378
		write: data;
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   379
		close.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   380
	result := self input read: data size.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   381
	self assert: result = bytes
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   382
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   383
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   384
!Xtreams::ReadingWritingTest methodsFor:'tests - encoding'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   385
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   386
testWriteEncodingUTF16
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   387
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   388
	| result bytes |
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   389
	bytes := #[0 72 0 101 0 108 0 108 0 111 0 32 0 87 0 111 0 114 0 108 0 100 0 33].
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   390
	(self output encoding: #utf16) write: 'Hello World!!'; close.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   391
	result := self input read: 24.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   392
	self assert: result = bytes
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   393
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   394
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   395
!Xtreams::ReadingWritingTest methodsFor:'tests - encoding'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   396
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   397
testWriteEncodingUTF8
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   398
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   399
        | result bytes text |
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   400
        text := 'Příliš žluťoučký kůň úpěl ďábelské ódy'.
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   401
        bytes := #[80 197 153 195 173 108 105 197 161 32 197 190 108 117 197 165 111 117 196 141 107 195 189 32 107 197 175 197 136 32 195 186 112 196 155 108 32 196 143 195 161 98 101 108 115 107 195 169 32 195 179 100 121].
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   402
        (self output encoding: #utf8) write: text; close.
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   403
        result := self input read: bytes size.
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   404
        self assert: result = bytes
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   405
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   406
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   407
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   408
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   409
testWriteInjecting
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   410
	(self output injecting: 0 into: [:all :each | all + each])
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   411
		write: #[ 1 2 3 4 ]; close.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   412
	self assert: (self input read: 4) = #[ 1 3 6 10 ]
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   413
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   414
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   415
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   416
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   417
testWriteRejecting
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   418
	(self output rejecting: #even) write: #[ 1 2 3 4 5 6 7 8 9 ]; close.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   419
	self assert: (self input read: 5) = #[ 1 3 5 7 9 ]
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   420
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   421
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   422
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   423
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   424
testWriteSelecting
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   425
	(self output selecting: #even) write: #[ 1 2 3 4 5 6 7 8 9 ]; close.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   426
	self assert: (self input read: 4) = #[ 2 4 6 8 ]
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   427
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   428
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   429
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   430
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   431
testWriteTransformHexToByte
123
1dffa525d5d7 * fixed testWriteTransformHexToByte
joe
parents: 115
diff changeset
   432
        | hex2Byte decoder result |
1dffa525d5d7 * fixed testWriteTransformHexToByte
joe
parents: 115
diff changeset
   433
        decoder := [ :char | ('0123456789ABCDEF' indexOf: char asUppercase) - 1 ].
1dffa525d5d7 * fixed testWriteTransformHexToByte
joe
parents: 115
diff changeset
   434
        hex2Byte :=
1dffa525d5d7 * fixed testWriteTransformHexToByte
joe
parents: 115
diff changeset
   435
                self output transforming: [ :in :out |
1dffa525d5d7 * fixed testWriteTransformHexToByte
joe
parents: 115
diff changeset
   436
                        out put: (((decoder value: in get) bitShift: 4) + (decoder value: in get)) ].
1dffa525d5d7 * fixed testWriteTransformHexToByte
joe
parents: 115
diff changeset
   437
        hex2Byte buffer: (ElasticBuffer on: (String new: 16)).
1dffa525d5d7 * fixed testWriteTransformHexToByte
joe
parents: 115
diff changeset
   438
        hex2Byte write: 'ab'.
1dffa525d5d7 * fixed testWriteTransformHexToByte
joe
parents: 115
diff changeset
   439
        self assert: self input get = 16rAB.
1dffa525d5d7 * fixed testWriteTransformHexToByte
joe
parents: 115
diff changeset
   440
        hex2Byte write: 'cdef'.
1dffa525d5d7 * fixed testWriteTransformHexToByte
joe
parents: 115
diff changeset
   441
        hex2Byte close.
1dffa525d5d7 * fixed testWriteTransformHexToByte
joe
parents: 115
diff changeset
   442
        result := self input read: 2.
1dffa525d5d7 * fixed testWriteTransformHexToByte
joe
parents: 115
diff changeset
   443
        self assert: result = #[16rcd 16ref].
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   444
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   445
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   446
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   447
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   448
testWriteTransforming1into2
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   449
	| result |
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   450
	(self output transforming: [:in :out | | x | x := in get. out put: x; put: x])
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   451
		write: #[ 1 2 3 ];
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   452
		close.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   453
	result := (self input read: 6).
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   454
	self assert: result = #[ 1 1 2 2 3 3 ]
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   455
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   456
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   457
!Xtreams::ReadingWritingTest methodsFor:'tests - transforming'!
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   458
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   459
testWriteTransforming2into1
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   460
	| result |
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   461
	(self output transforming: [:in :out | in get. out put: in get])
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   462
		write: #[ 1 2 3 4 ];
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   463
		close.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   464
	result := self input read: 2.
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   465
	self assert: result = #[ 2 4 ]
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   466
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   467
73
mkobetic
parents: 59
diff changeset
   468
!Xtreams::ReadingWritingTest methodsFor:'tests - interpreting'!
10
3813193bdf4e first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
   469
73
mkobetic
parents: 59
diff changeset
   470
testWriteUnsignedShortEndianness
mkobetic
parents: 59
diff changeset
   471
mkobetic
parents: 59
diff changeset
   472
	(self output interpreting: #unsignedShort_le) put: 16rFF.
mkobetic
parents: 59
diff changeset
   473
	(self output interpreting: #unsignedShort_be) put: 16rFF00.
mkobetic
parents: 59
diff changeset
   474
	self output close.
mkobetic
parents: 59
diff changeset
   475
	self assert: (self input read: 4) = #[ 16rFF 16r00 16rFF 00]
mkobetic
parents: 59
diff changeset
   476
! !
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   477
73
mkobetic
parents: 59
diff changeset
   478
!stx_goodies_xtreams_transforms_tests class methodsFor:'documentation'!
mkobetic
parents: 59
diff changeset
   479
109
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   480
extensionsVersion_HG
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   481
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   482
    ^ '$Changeset: <not expanded> $'
9587e2df7029 Merged in latest version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   483
! !