blob: f5d7ec946d4029f82af1c32e62f5856627d69033 [file] [log] [blame]
Bram Moolenaar22e42152016-04-03 14:02:02 +02001" Tests for regexp in utf8 encoding
2if !has('multi_byte')
3 finish
4endif
5set encoding=utf-8
6scriptencoding utf-8
7
8func s:equivalence_test()
9 let str = "AÀÁÂÃÄÅĀĂĄǍǞǠẢ BḂḆ CÇĆĈĊČ DĎĐḊḎḐ EÈÉÊËĒĔĖĘĚẺẼ F GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÌÍÎÏĨĪĬĮİǏỈ JĴ KĶǨḰḴ LĹĻĽĿŁḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎŐƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ V WŴẀẂẄẆ XẊẌ YÝŶŸẎỲỶỸ ZŹŻŽƵẐẔ aàáâãäåāăąǎǟǡả bḃḇ cçćĉċč dďđḋḏḑ eèéêëēĕėęěẻẽ f gĝğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįǐỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṁ nñńņňʼnṅṉ oòóôõöøōŏőơǒǫǭỏ pṕṗ q rŕŗřṙṟ sśŝşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ v wŵẁẃẅẇẘ xẋẍ yýÿŷẏẙỳỷỹ zźżžƶẑẕ"
10 let groups = split(str)
11 for group1 in groups
12 for c in split(group1, '\zs')
13 " next statement confirms that equivalence class matches every
14 " character in group
15 call assert_match('^[[=' . c . '=]]*$', group1)
16 for group2 in groups
17 if group2 != group1
18 " next statement converts that equivalence class doesn't match
19 " character in any other group
20 call assert_equal(-1, match(group2, '[[=' . c . '=]]'))
21 endif
22 endfor
23 endfor
24 endfor
25endfunc
26
27func Test_equivalence_re1()
28 set re=1
29 call s:equivalence_test()
30endfunc
31
32func Test_equivalence_re2()
33 set re=2
34 call s:equivalence_test()
35endfunc