The Trunk: MultilingualTests-pre.34.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: MultilingualTests-pre.34.mcz

commits-2
Patrick Rein uploaded a new version of MultilingualTests to project The Trunk:
http://source.squeak.org/trunk/MultilingualTests-pre.34.mcz

==================== Summary ====================

Name: MultilingualTests-pre.34
Author: pre
Time: 13 October 2018, 2:39:02.980477 pm
UUID: 3fcfb4f8-6659-6641-8d7f-4759fd167b80
Ancestors: MultilingualTests-ul.33

Marks several UTF8 and UTF16 tests as expectedFailures as they have never been implemented.
While at it, i recategorized the tests.

=============== Diff against MultilingualTests-ul.33 ===============

Item was changed:
+ ----- Method: UTF8EdgeCaseTest>>expectBytesToFailDecoding: (in category 'asserting') -----
- ----- Method: UTF8EdgeCaseTest>>expectBytesToFailDecoding: (in category 'as yet unclassified') -----
  expectBytesToFailDecoding: aByteArray
  self should: [aByteArray utf8Decoded] raise: InvalidUTF8!

Item was changed:
+ ----- Method: UTF8EdgeCaseTest>>expectHex:toDecodeToCodepoint: (in category 'asserting') -----
- ----- Method: UTF8EdgeCaseTest>>expectHex:toDecodeToCodepoint: (in category 'as yet unclassified') -----
  expectHex: aString toDecodeToCodepoint: anInteger
  self expectHex: aString toDecodeToCodepoints: { anInteger }
  !

Item was changed:
+ ----- Method: UTF8EdgeCaseTest>>expectHex:toDecodeToCodepoints: (in category 'asserting') -----
- ----- Method: UTF8EdgeCaseTest>>expectHex:toDecodeToCodepoints: (in category 'as yet unclassified') -----
  expectHex: aString toDecodeToCodepoints: anArray
  | s |
  s := (ByteArray readHexFrom: aString) utf8Decoded.
  self assert: anArray size equals: s size.
  self assert: anArray asArray equals: (s asArray collect: [:c | c asInteger]).!

Item was changed:
+ ----- Method: UTF8EdgeCaseTest>>expectHexToFailDecoding: (in category 'asserting') -----
- ----- Method: UTF8EdgeCaseTest>>expectHexToFailDecoding: (in category 'as yet unclassified') -----
  expectHexToFailDecoding: aString
  self should: [(ByteArray readHexFrom: aString) utf8Decoded] raise: InvalidUTF8.
  !

Item was added:
+ ----- Method: UTF8EdgeCaseTest>>expectedFailures (in category 'failures') -----
+ expectedFailures
+
+ ^ #(testMaximumOverlongSequences testOverlongAsciiSequences
+ testOverlongNUL testOverlongNUL testPairedUTF16Surrogates testSingleUTF16Surrogates)!

Item was changed:
+ ----- Method: UTF8EdgeCaseTest>>testConcatenationOfIncompleteSequences (in category 'tests') -----
- ----- Method: UTF8EdgeCaseTest>>testConcatenationOfIncompleteSequences (in category 'as yet unclassified') -----
  testConcatenationOfIncompleteSequences
  "Concatenation of incomplete sequences"
  self expectHexToFailDecoding: 'c0e080'. "Should fail between the c0 and the e0"
  "(similar omitted)"!

Item was changed:
+ ----- Method: UTF8EdgeCaseTest>>testFirstPossibleSequenceOfACertainLength (in category 'tests') -----
- ----- Method: UTF8EdgeCaseTest>>testFirstPossibleSequenceOfACertainLength (in category 'as yet unclassified') -----
  testFirstPossibleSequenceOfACertainLength
  "First possible sequence of a certain length"
  self expectHex: '00' toDecodeToCodepoint: 0.
  self expectHex: 'c280' toDecodeToCodepoint: 16r80.
  self expectHex: 'e0a080' toDecodeToCodepoint: 16r800.
  self expectHex: 'f0908080' toDecodeToCodepoint: 16r10000.
  "self expectHex: 'f888808080' toDecodeToCodepoint: 16r200000." "Codepoint is out of range."
  "self expectHex: 'fc8480808080' toDecodeToCodepoint: 16r4000000." "Codepoint is out of range."!

Item was changed:
+ ----- Method: UTF8EdgeCaseTest>>testImpossibleBytes (in category 'tests') -----
- ----- Method: UTF8EdgeCaseTest>>testImpossibleBytes (in category 'as yet unclassified') -----
  testImpossibleBytes
  "Impossible bytes"
  self expectHexToFailDecoding: 'fe'.
  self expectHexToFailDecoding: 'ff'.
  self expectHexToFailDecoding: 'fefeffff'.!

Item was changed:
+ ----- Method: UTF8EdgeCaseTest>>testLastPossibleSequenceOfACertainLength (in category 'tests') -----
- ----- Method: UTF8EdgeCaseTest>>testLastPossibleSequenceOfACertainLength (in category 'as yet unclassified') -----
  testLastPossibleSequenceOfACertainLength
  self expectHex: '7f' toDecodeToCodepoint: 16r7f.
  self expectHex: 'dfbf' toDecodeToCodepoint: 16r7ff.
  self expectHex: 'efbfbf' toDecodeToCodepoint: 16rffff.
  self expectHex: 'f7bfbfbf' toDecodeToCodepoint: 16r1fffff.
  "self expectHex: 'fbbfbfbfbf' toDecodeToCodepoint: 16r3ffffff." "Codepoint is out of range."
  "self expectHex: 'fdbfbfbfbfbf' toDecodeToCodepoint: 16r7fffffff." "Codepoint is out of range."
  !

Item was changed:
+ ----- Method: UTF8EdgeCaseTest>>testLonelyStartCharacters (in category 'tests') -----
- ----- Method: UTF8EdgeCaseTest>>testLonelyStartCharacters (in category 'as yet unclassified') -----
  testLonelyStartCharacters
  "Lonely start characters"
  "
  All 32 first bytes of 2-byte sequences (0xc0-0xdf),
  All 16 first bytes of 3-byte sequences (0xe0-0xef),
  All 8 first bytes of 4-byte sequences (0xf0-0xf7),
  All 4 first bytes of 5-byte sequences (0xf8-0xfb),
  All 2 first bytes of 6-byte sequences (0xfc-0xfd),
  ... each followed by a space character
  "
  (16rc0 to: 16rfd) do: [:i | self expectBytesToFailDecoding: (ByteArray with: i with: 32)].
  !

Item was changed:
+ ----- Method: UTF8EdgeCaseTest>>testMaximumOverlongSequences (in category 'tests') -----
- ----- Method: UTF8EdgeCaseTest>>testMaximumOverlongSequences (in category 'as yet unclassified') -----
  testMaximumOverlongSequences
  "Maximum overlong sequences"
  self expectHexToFailDecoding: 'c1bf'.
  self expectHexToFailDecoding: 'e09fbf'.
  self expectHexToFailDecoding: 'f08fbfbf'.
  self expectHexToFailDecoding: 'f887bfbfbf'.
  self expectHexToFailDecoding: 'fc83bfbfbfbf'.
  !

Item was changed:
+ ----- Method: UTF8EdgeCaseTest>>testNoncharacterCodePositions (in category 'tests') -----
- ----- Method: UTF8EdgeCaseTest>>testNoncharacterCodePositions (in category 'as yet unclassified') -----
  testNoncharacterCodePositions
  "Noncharacter code positions"
  self expectHex: 'efbfbe' toDecodeToCodepoint: 16rfffe.
  self expectHex: 'efbfbf' toDecodeToCodepoint: 16rffff.
  self expectHex: 'efb790efb791efb792efb793efb794efb795efb796efb797efb798efb799efb79aefb79befb79cefb79defb79eefb79fefb7a0efb7a1efb7a2efb7a3efb7a4efb7a5efb7a6efb7a7efb7a8efb7a9efb7aaefb7abefb7acefb7adefb7aeefb7af'
  toDecodeToCodepoints: ((16rFDD0 to: 16rFDEF) asArray).
  self expectHex: 'f09fbfbef09fbfbff0afbfbef0afbfbff0bfbfbef0bfbfbff18fbfbef18fbfbff19fbfbef19fbfbff1afbfbef1afbfbff1bfbfbef1bfbfbff28fbfbef28fbfbff29fbfbef29fbfbff2afbfbef2afbfbff2bfbfbef2bfbfbff38fbfbef38fbfbff39fbfbef39fbfbff3afbfbef3afbfbff3bfbfbef3bfbfbff48fbfbef48fbfbf'
  toDecodeToCodepoints: ([ | a |
  a := OrderedCollection new.
  (1 to: 16r10) do: [:n |
  a add: n * 16r10000 + 16rFFFE.
  a add: n * 16r10000 + 16rFFFF].
  a] value).
  !

Item was changed:
+ ----- Method: UTF8EdgeCaseTest>>testOtherBoundaryConditions (in category 'tests') -----
- ----- Method: UTF8EdgeCaseTest>>testOtherBoundaryConditions (in category 'as yet unclassified') -----
  testOtherBoundaryConditions
  "Other boundary conditions"
  self expectHex: 'ed9fbf' toDecodeToCodepoint: 16rd7ff.
  self expectHex: 'ee8080' toDecodeToCodepoint: 16re000.
  self expectHex: 'efbfbd' toDecodeToCodepoint: 16rfffd. "REPLACEMENT CHARACTER"
  self expectHex: 'f48fbfbf' toDecodeToCodepoint: 16r10ffff. "Last valid code point (happens to be a NONCHARACTER)"
  self expectHex: 'f4908080' toDecodeToCodepoint: 16r110000. "First number beyond valid code point space"!

Item was changed:
+ ----- Method: UTF8EdgeCaseTest>>testOverlongAsciiSequences (in category 'tests') -----
- ----- Method: UTF8EdgeCaseTest>>testOverlongAsciiSequences (in category 'as yet unclassified') -----
  testOverlongAsciiSequences
  "Overlong sequences"
  "ASCII 2F"
  self expectHexToFailDecoding: 'c0af'.
  self expectHexToFailDecoding: 'e080af'.
  self expectHexToFailDecoding: 'f08080af'.
  self expectHexToFailDecoding: 'f8808080af'.
  self expectHexToFailDecoding: 'fc80808080af'.
  !

Item was changed:
+ ----- Method: UTF8EdgeCaseTest>>testOverlongNUL (in category 'tests') -----
- ----- Method: UTF8EdgeCaseTest>>testOverlongNUL (in category 'as yet unclassified') -----
  testOverlongNUL
  "Overlong representation of the NUL character"
  self expectHexToFailDecoding: 'c080'.
  self expectHexToFailDecoding: 'e08080'.
  self expectHexToFailDecoding: 'f0808080'.
  self expectHexToFailDecoding: 'f880808080'.
  self expectHexToFailDecoding: 'fc8080808080'.
  !

Item was changed:
+ ----- Method: UTF8EdgeCaseTest>>testPairedUTF16Surrogates (in category 'tests') -----
- ----- Method: UTF8EdgeCaseTest>>testPairedUTF16Surrogates (in category 'as yet unclassified') -----
  testPairedUTF16Surrogates
  "Illegal code positions"
  "Paired UTF-16 surrogates"
  self expectHexToFailDecoding: 'eda080edb080'.
  self expectHexToFailDecoding: 'eda080edbfbf'.
  self expectHexToFailDecoding: 'edadbfedb080'.
  self expectHexToFailDecoding: 'edadbfedbfbf'.
  self expectHexToFailDecoding: 'edae80edb080'.
  self expectHexToFailDecoding: 'edae80edbfbf'.
  self expectHexToFailDecoding: 'edafbfedb080'.
  self expectHexToFailDecoding: 'edafbfedbfbf'.
  !

Item was changed:
+ ----- Method: UTF8EdgeCaseTest>>testSequencesWithLastContinuationByteMissing (in category 'tests') -----
- ----- Method: UTF8EdgeCaseTest>>testSequencesWithLastContinuationByteMissing (in category 'as yet unclassified') -----
  testSequencesWithLastContinuationByteMissing
  "Sequences with last continuation byte missing"
 
  self expectHexToFailDecoding: 'c0'. "U+0000"
  self expectHexToFailDecoding: 'e080'. "U+0000"
  self expectHexToFailDecoding: 'f08080'. "U+0000"
  self expectHexToFailDecoding: 'f8808080'. "U+0000"
  self expectHexToFailDecoding: 'fc80808080'. "U+0000"
 
  self expectHexToFailDecoding: 'df'. "U+07FF"
  self expectHexToFailDecoding: 'efbf'. "U+FFFF"
  self expectHexToFailDecoding: 'f7bfbf'. "U+1FFFFF"
  self expectHexToFailDecoding: 'fbbfbfbf'. "U+3FFFFFF"
  self expectHexToFailDecoding: 'fdbfbfbfbf'. "U+7FFFFFFF"
 
  "Additional tests not in Kuhn's document, testing for presence of off-by-two errors:"
 
  self expectHexToFailDecoding: 'e0'. "U+0000"
  self expectHexToFailDecoding: 'f080'. "U+0000"
  self expectHexToFailDecoding: 'f88080'. "U+0000"
  self expectHexToFailDecoding: 'fc808080'. "U+0000"
 
  self expectHexToFailDecoding: 'ef'. "U+FFFF"
  self expectHexToFailDecoding: 'f7bf'. "U+1FFFFF"
  self expectHexToFailDecoding: 'fbbfbf'. "U+3FFFFFF"
  self expectHexToFailDecoding: 'fdbfbfbf'. "U+7FFFFFFF"
  !

Item was changed:
+ ----- Method: UTF8EdgeCaseTest>>testSingleUTF16Surrogates (in category 'tests') -----
- ----- Method: UTF8EdgeCaseTest>>testSingleUTF16Surrogates (in category 'as yet unclassified') -----
  testSingleUTF16Surrogates
  "Illegal code positions"
  "Single UTF-16 surrogates"
  self expectHexToFailDecoding: 'eda080'.
  self expectHexToFailDecoding: 'edadbf'.
  self expectHexToFailDecoding: 'edae80'.
  self expectHexToFailDecoding: 'edafbf'.
  self expectHexToFailDecoding: 'edb080'.
  self expectHexToFailDecoding: 'edbe80'.
  self expectHexToFailDecoding: 'edbfbf'.
  !

Item was changed:
+ ----- Method: UTF8EdgeCaseTest>>testUnexpectedContinuationBytes (in category 'tests') -----
- ----- Method: UTF8EdgeCaseTest>>testUnexpectedContinuationBytes (in category 'as yet unclassified') -----
  testUnexpectedContinuationBytes
  "Unexpected continuation bytes"
  self expectHexToFailDecoding: '80'. "First continuation byte"
  self expectHexToFailDecoding: 'bf'. "Last continuation byte"
  self expectHexToFailDecoding: '80bf'. "Two continuation bytes"
  self expectHexToFailDecoding: '80bf80'. "Three continuation bytes"
  self expectHexToFailDecoding: '80bf80bf'. "Four continuation bytes"
  self expectHexToFailDecoding: '80bf80bf80'. "Five continuation bytes"
  self expectHexToFailDecoding: '80bf80bf80bf'. "Six continuation bytes"
  self expectHexToFailDecoding: '80bf80bf80bf80'. "Seven continuation bytes"
  "(Skipping 'sequence of all 64 possible continuation bytes (0x80-0xbf)')"!