[squeak-dev] The Trunk: MultilingualTests-pre.24.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Jun 8 07:44:50 UTC 2017
Patrick Rein uploaded a new version of MultilingualTests to project The Trunk:
http://source.squeak.org/trunk/MultilingualTests-pre.24.mcz
==================== Summary ====================
Name: MultilingualTests-pre.24
Author: pre
Time: 8 June 2017, 9:44:45.939697 am
UUID: 04c3d62b-8671-ff46-abc0-9704cb38be0c
Ancestors: MultilingualTests-ul.23
Adds more extensive tests for encodings. Fixes MultiByteFileStreamTest broken due to abstract encoding classes.
=============== Diff against MultilingualTests-ul.23 ===============
Item was changed:
----- Method: MultiByteFileStreamTest>>testByteTextConverter (in category 'testing') -----
testByteTextConverter
+ | strings converterClasses |
+ strings := {
+ String newFrom: ((0 to: 255) collect: [:e | e asCharacter]).
+ }.
+
+ converterClasses := ByteTextConverter allSubclasses
+ copyWithoutAll: {ISO8859TextConverter . WinCPTextConverter . MacOSCPTextConverter}.
+ converterClasses do: [:converterClass |
+ strings do: [:string | | converter stream encoded decoded encoded2 |
+ converter := converterClass new.
+ stream := string readStream.
+ encoded := string select: [:e | (converter nextFromStream: stream) notNil].
+ stream := encoded readStream.
+ decoded := encoded collect: [:e | converter nextFromStream: stream].
+ self assert: stream atEnd.
+ stream := String new writeStream.
+ converter nextPutAll: decoded toStream: stream.
+ encoded2 := stream contents.
+ self assert: (encoded2 collect: [:e | e charCode] as: Array) = (encoded collect: [:e | e charCode] as: Array).
+ stream := String new writeStream.
+ decoded do: [:e | converter nextPut: e toStream: stream].
+ encoded2 := stream contents.
+ self assert: (encoded2 collect: [:e | e charCode] as: Array) = (encoded collect: [:e | e charCode] as: Array)]]!
-
- | byteCharacters |
- byteCharacters := Character allByteCharacters.
- ByteTextConverter allSubclassesDo: [ :converterClass |
- | converter stream encoded decoded encoded2 |
- converter := converterClass new.
- stream := byteCharacters readStream.
- "Find bytes that can be decoded by this converter."
- encoded := byteCharacters select: [ :e | (converter nextFromStream: stream) notNil ].
- "Decode those bytes."
- stream := encoded readStream.
- decoded := encoded collect: [ :e | converter nextFromStream: stream ].
- self assert: stream atEnd.
- "Re-encode the decoded bytes using #nextPutAll:toStream:, and check if they match the original bytes."
- encoded2 := String streamContents: [ :writeStream |
- converter nextPutAll: decoded toStream: writeStream ].
- encoded with: encoded2 do: [ :original :reencoded |
- self
- assert: original charCode = reencoded charCode
- description: [ '{1} could not decode or re-encode {2} using #nextPutAll:toStream:. Instead, it yielded {3}.'
- format: {
- converterClass name.
- original charCode.
- reencoded charCode } ] ].
- "Re-encode the decoded bytes using #nextPut:toStream:, and check if they match the original bytes."
- encoded2 := String streamContents: [ :writeStream |
- decoded do: [:e | converter nextPut: e toStream: writeStream ] ].
- encoded with: encoded2 do: [ :original :reencoded |
- self
- assert: original charCode = reencoded charCode
- description: [ '{1} could not decode or re-encode {2} using #nextPut:toStream:. Instead, it yielded {3}.'
- format: {
- converterClass name.
- original charCode.
- reencoded charCode } ] ] ]!
Item was changed:
----- Method: MultiByteFileStreamTest>>testLineEndConversion (in category 'testing') -----
testLineEndConversion
| failures |
fileName := 'foolinendconversion.txt'.
failures := OrderedCollection new.
TextConverter allSubclassesDo: [ :textConverterClass |
textConverterClass encodingNames ifNotEmpty: [
#(cr lf crlf) do: [ :lineEndConvention |
self
testLineEndConvention: lineEndConvention
withConverter: textConverterClass
ifFail: [ :expectedResult :result |
failures add: {
textConverterClass.
lineEndConvention.
expectedResult.
result } ] ] ] ].
+ self assert: failures isEmpty!
- self assert: failures isEmpty.
- "The code below is here to help you see why those cases fail"
- failures do: [ :failure |
- self
- testLineEndConvention: failure second
- withConverter: failure first
- ifFail: [ :expectedResult :result | self halt ] ]!
Item was changed:
+ UTFTextConverterWithByteOrderTest subclass: #UTF16TextConverterTest
- TestCase subclass: #UTF16TextConverterTest
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'MultilingualTests-TextConversion'!
Item was added:
+ ----- Method: UTF16TextConverterTest>>characterWidthInBytes (in category 'constants') -----
+ characterWidthInBytes
+ "Only true for the test case. Beware of changing the unicode string"
+
+ ^ 2!
Item was added:
+ ----- Method: UTF16TextConverterTest>>converterClass (in category 'constants') -----
+ converterClass
+
+ ^ UTF16TextConverter!
Item was added:
+ UTFTextConverterWithByteOrderTest subclass: #UTF32TextConverterTest
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'MultilingualTests-TextConversion'!
Item was added:
+ ----- Method: UTF32TextConverterTest>>characterWidthInBytes (in category 'constants') -----
+ characterWidthInBytes
+
+ ^ 4!
Item was added:
+ ----- Method: UTF32TextConverterTest>>converterClass (in category 'constants') -----
+ converterClass
+
+ ^ UTF32TextConverter!
Item was changed:
+ TestCase subclass: #UTF8TextConverterTest
- ClassTestCase subclass: #UTF8TextConverterTest
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'MultilingualTests-TextConversion'!
Item was added:
+ ----- Method: UTF8TextConverterTest>>testBasicConversion (in category 'tests') -----
+ testBasicConversion
+ |converter originalText bytes decodedText |
+ originalText := self unicodeString.
+ converter := UTF8TextConverter new.
+
+ "Default (ie useLittleEndian instvar nil)"
+ bytes := (originalText convertToWithConverter: converter).
+ decodedText := bytes convertFromWithConverter: converter.
+
+ self assert: originalText equals: decodedText.
+
+ !
Item was added:
+ ----- Method: UTF8TextConverterTest>>unicodeString (in category 'fixtures') -----
+ unicodeString
+
+ ^ String newFrom: (#(19335 12403) collect: [:n | Character codePoint: n])!
Item was added:
+ TestCase subclass: #UTFTextConverterWithByteOrderTest
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'MultilingualTests-TextConversion'!
Item was added:
+ ----- Method: UTFTextConverterWithByteOrderTest class>>isAbstract (in category 'as yet unclassified') -----
+ isAbstract
+
+ ^ self = UTFTextConverterWithByteOrderTest!
Item was added:
+ ----- Method: UTFTextConverterWithByteOrderTest>>characterWidthInBytes (in category 'constants') -----
+ characterWidthInBytes
+
+ self subclassResponsibility!
Item was added:
+ ----- Method: UTFTextConverterWithByteOrderTest>>converterClass (in category 'constants') -----
+ converterClass
+
+ self subclassResponsibility!
Item was added:
+ ----- Method: UTFTextConverterWithByteOrderTest>>testByteOrders (in category 'tests') -----
+ testByteOrders
+ |converter originalText bytes decodedText |
+ originalText := 'test'.
+ converter := self converterClass new.
+
+ "Default (ie useLittleEndian instvar nil)"
+ bytes := (originalText convertToWithConverter: converter).
+ decodedText := bytes convertFromWithConverter: converter.
+
+ self assert: originalText equals: decodedText.
+
+ "Little-endian"
+ converter useLittleEndian: true.
+
+ bytes := (originalText convertToWithConverter: converter).
+ decodedText := bytes convertFromWithConverter: converter.
+
+ self assert: originalText equals: decodedText.
+
+ "Big-endian"
+ converter useLittleEndian: false.
+
+ bytes := (originalText convertToWithConverter: converter).
+ decodedText := bytes convertFromWithConverter: converter.
+
+ self assert: originalText equals: decodedText.
+
+ !
Item was added:
+ ----- Method: UTFTextConverterWithByteOrderTest>>testByteOrdersMarks (in category 'tests') -----
+ testByteOrdersMarks
+ |converter originalText bytes decodedText |
+ originalText := self unicodeString.
+ converter := self converterClass new.
+
+ converter useByteOrderMark: true.
+ bytes := (originalText convertToWithConverter: converter).
+ self assert: (self characterWidthInBytes * (self unicodeString size + 1)) equals: bytes size.
+ decodedText := bytes convertFromWithConverter: converter.
+
+ self assert: originalText equals: decodedText.
+ !
Item was added:
+ ----- Method: UTFTextConverterWithByteOrderTest>>testByteOrdersWithNonLatin (in category 'tests') -----
+ testByteOrdersWithNonLatin
+ |converter originalText bytes decodedText |
+ originalText := self unicodeString.
+ converter := self converterClass new.
+
+ "Default (ie useLittleEndian instvar nil)"
+ bytes := (originalText convertToWithConverter: converter).
+ decodedText := bytes convertFromWithConverter: converter.
+
+ self assert: originalText equals: decodedText.
+
+ "Little-endian"
+ converter useLittleEndian: true.
+
+ bytes := (originalText convertToWithConverter: converter).
+ decodedText := bytes convertFromWithConverter: converter.
+
+ self assert: originalText equals: decodedText.
+
+ "Big-endian"
+ converter useLittleEndian: false.
+
+ bytes := (originalText convertToWithConverter: converter).
+ decodedText := bytes convertFromWithConverter: converter.
+
+ self assert: originalText equals: decodedText.
+
+ !
Item was added:
+ ----- Method: UTFTextConverterWithByteOrderTest>>unicodeString (in category 'fixtures') -----
+ unicodeString
+
+ ^ String newFrom: (#(19335 12403) collect: [:n | Character codePoint: n])!
More information about the Squeak-dev
mailing list
|