[squeak-dev] The Inbox: Regex-Tests-Core-ct.28

Thiede, Christoph Christoph.Thiede at student.hpi.uni-potsdam.de
Thu Oct 28 17:00:09 UTC 2021


Yeah, rich-text diffs on squeak-dev are not that bad, I could get used to this ... :-)


Best,

Christoph

________________________________
Von: Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> im Auftrag von Thiede, Christoph
Gesendet: Donnerstag, 28. Oktober 2021 05:44:26
An: squeak-dev at lists.squeakfoundation.org
Betreff: [squeak-dev] The Inbox: Regex-Tests-Core-ct.28

Name: Regex-Tests-Core-ct.28
Author: ct
Time: 28 October 2021, 4:56:42.233233 am
UUID: 4baf515d-1baa-814c-b109-26781d0698b1
Ancestors: Regex-Tests-Core-mt.16

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

Complements Regex-Core-ct.71 (Unicode backslash atoms). Supersedes Regex-Tests-Core-ct.24. Merges Regex-Tests-Core-tobe.17.

=============== Diff against Regex-Core-mt.61 ===============

RxMatcherTest>>testHenry039 {testing-henry} · ct 10/28/2021 02:44 (changed)
testHenry039
-     self runRegex: #('a[a-b-c]' nil)
+     self runRegex: #('a[a-c-d]'
+         'aa' true nil
+         'ab' true nil
+         'ac' true nil
+         'ad' true nil
+         'a-' true nil
+         'ae' false nil)

RxParserTest>>testCharacterSetWithEscapedCharacters {tests} · ct 10/27/2021 23:17 (changed)
testCharacterSetWithEscapedCharacters
    "self debug: #testCharacterSetRange"

    {
        '[\r]'. String cr. String space.
        '[\n]'. String lf. String space.
        '[\t]'. String tab. String space.
        '[\e]'. Character escape asString. String space.
        '[\f]'. Character newPage asString. String space.
        '[\]]+'. ']]]'. '[[['.
        '[\S]+[\s]+=[\s]+#[^\[(]'. 'foo = #bar'. 'foo = #[1 2 3]'.
        '[\d]+'. '123'. 'abc'.
        '[\D]+'. 'abc'. '123'.
        '[\w]+'. 'a1_b2'. '...'.
        '[\W]+'. '...'. 'a1_b2'.
+         '[\b]'. 'b'. ' '.
+         '[\p{L}\d]+'. 'tschüß123'. ':-)'.
+         '[\P{L}a]'. 'a'. 'b'.
    } groupsDo: [ :regexString :inputToAccept :inputToReject |
        | regex |
        regex := regexString asRegex.
        self
            assert: (regex search: inputToAccept);
            deny: (regex search: inputToReject) ]

RxParserTest>>testCodePointu {tests} · ct 10/28/2021 04:46
+ testCodePointu
+
+     | string |
+     string := String value: 16r1f388.
+     self assert: [string matchesRegex: '\u{1f388}'].
+     self assert: ['A' matchesRegex: '\u0041'].
+     self assert: ['Aa' matchesRegex: '\u0041a'].
+     self assert: ['m' matchesRegex: '\u006D'].
+     self assert: ['m' matchesRegex: '\u006d'].
+     self should: ['\u004' asRegex] raise: RegexSyntaxError.
+     self should: ['\u0g41' asRegex] raise: RegexSyntaxError.
+
+     self assert: ['e' matchesRegex: '\u{ar101}'].
+     self deny: [string matchesRegex: '\u{1f387}'].
+     self deny: ['\u{1f388}' matchesRegex: '\u{1f388}'].
+     self deny: ['1f388' matchesRegex: '\u{1f388}'].
+     self deny: ['u' matchesRegex: '\u{1}'].
+     self deny: [(String value: 16r1f389) matchesRegex: '\u{1f388}'].
+     self deny: [(WideString fromByteArray: #(16r17f3 16r88)) matchesRegex: '\u{1f388}'].
+     self deny: [(WideString fromByteArray: #(16r17f3 88)) matchesRegex: '\u{1f388}'].
+
+     self assert: ['m' matchesRegex: '[\u006d]'].
+     self assert: ['3' matchesRegex: '[\u0032-4]'].
+     self deny: ['0' matchesRegex: '[\u0032-4]'].
+     self assert: ['3' matchesRegex: '[2-\u0034]'].
+     self deny: ['0' matchesRegex: '[2-\u0034]'].
+     self should: ['[\u006d-\d]' asRegex] raise: RegexSyntaxError.
+     self should: ['[\d-\u006d]' asRegex] raise: RegexSyntaxError.
+     self assert: ['A' matchesRegex: '[\u006d-\u006fA]'].

RxParserTest>>testCodePointx {tests} · ct 10/28/2021 04:47
+ testCodePointx
+
+     self assert: ['8' matchesRegex: '\x38'].
+     self deny: ['8' matchesRegex: '\x39'].
+     self deny: ['9' matchesRegex: '\x38'].
+     self deny: ['&' matchesRegex: '\x38'].
+     self deny: ['\x38' matchesRegex: '\x38'].
+     self deny: ['38' matchesRegex: '\x38'].
+     self assert: ['8a' matchesRegex: '\x38a'].
+     self should: ['\x3' asRegex] raise: RegexSyntaxError.
+     self deny: [(WideString fromByteArray: {3. 8}) matchesRegex: '\x38'].
+     self deny: [(WideString fromByteArray: {3. 38}) matchesRegex: '\x38'].
+     self deny: [(String new: 20 withAll: $x) matchesRegex: '\x20'].
+
+     self assert: ['8' matchesRegex: '\x{38}'].
+     self assert: ['?' matchesRegex: '\x{38a}'].
+     self assert: ['8' matchesRegex: '\x{2r111000}'].
+     self deny: ['8' matchesRegex: '\x{39}'].
+     self deny: ['9' matchesRegex: '\x{38}'].
+     self deny: ['\x{38}' matchesRegex: '\x{38}'].
+
+     self assert: ['8a' matchesRegex: '[\x38a]+'].

RxParserTest>>testRegexSyntaxErrorPosition {tests} · ct 10/28/2021 03:14
+ testRegexSyntaxErrorPosition
+
+     | position |
+     ['a::z' asRegex] on: RegexSyntaxError do: [:ex | position := ex position].
+     self assert: 3 equals: position.
+     ['a[b[:space:_]y]z' asRegex] on: RegexSyntaxError do: [:ex | position := ex position].
+     self assert: 12 equals: position.
+     ['a[^][::]]z' asRegex] on: RegexSyntaxError do: [:ex | position := ex position].
+     self assert: 8 equals: position.
+
+     "During nested parsing, the global position must be provided"
+     ['a\x{}z' asRegex] on: RegexSyntaxError do: [:ex | position := ex position].
+     self assert: 5 equals: position.
+     ['a[b\x{}y]z' asRegex] on: RegexSyntaxError do: [:ex | position := ex position].
+     self assert: 7 equals: position.
+     ['a[^b\x{}y]z' asRegex] on: RegexSyntaxError do: [:ex | position := ex position].
+     self assert: 8 equals: position.

RxParserTest>>testUnicodeCategory {tests} · ct 10/28/2021 04:47
+ testUnicodeCategory
+
+     self assert: ['X' matchesRegex: '\p{Lu}'].
+     self assert: ['X' matchesRegex: '\p{L}'].
+     self deny: ['X' matchesRegex: '\p{Ll}'].
+     self assert: ['x' matchesRegex: '\p{Ll}'].
+     self assert: ['x' matchesRegex: '\p{L}'].
+     self deny: ['x' matchesRegex: '\p{Lu}'].
+
+     self deny: ['X' matchesRegex: '\P{Lu}'].
+     self deny: ['X' matchesRegex: '\P{L}'].
+     self assert: ['X' matchesRegex: '\P{Ll}'].
+     self deny: ['x' matchesRegex: '\P{Ll}'].
+     self deny: ['x' matchesRegex: '\P{L}'].
+     self assert: ['x' matchesRegex: '\P{Lu}'].
+
+     self assert: ['x' matchesRegex: '[\p{L}]'].
+     self deny: ['x' matchesRegex: '[\P{L}]'].
+     self assert: ['x' matchesRegex: '[^\P{L}]'].


---
Sent from Squeak Inbox Talk<https://github.com/hpi-swa-lab/squeak-inbox-talk>
["Regex-Tests-Core-ct.28.mcz"]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20211028/1660266a/attachment.html>


More information about the Squeak-dev mailing list