mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 7.4.1700
Problem: Equivalence classes are not properly tested. Solution: Add tests for multi-byte and latin1. Fix an error. (Owen Leibman)
This commit is contained in:
@@ -791,7 +791,7 @@ char *EQUIVAL_CLASS_C[16] = {
|
|||||||
"E\x71\x72\x73\x74",
|
"E\x71\x72\x73\x74",
|
||||||
"I\x75\x76\x77\x78",
|
"I\x75\x76\x77\x78",
|
||||||
"N\x69",
|
"N\x69",
|
||||||
"O\xEB\xEC\xED\xEE\xEF",
|
"O\xEB\xEC\xED\xEE\xEF\x80",
|
||||||
"U\xFB\xFC\xFD\xFE",
|
"U\xFB\xFC\xFD\xFE",
|
||||||
"Y\xBA",
|
"Y\xBA",
|
||||||
"a\x42\x43\x44\x45\x46\x47",
|
"a\x42\x43\x44\x45\x46\x47",
|
||||||
@@ -799,7 +799,7 @@ char *EQUIVAL_CLASS_C[16] = {
|
|||||||
"e\x51\x52\x53\x54",
|
"e\x51\x52\x53\x54",
|
||||||
"i\x55\x56\x57\x58",
|
"i\x55\x56\x57\x58",
|
||||||
"n\x49",
|
"n\x49",
|
||||||
"o\xCB\xCC\xCD\xCE\xCF",
|
"o\xCB\xCC\xCD\xCE\xCF\x70",
|
||||||
"u\xDB\xDC\xDD\xDE",
|
"u\xDB\xDC\xDD\xDE",
|
||||||
"y\x8D\xDF",
|
"y\x8D\xDF",
|
||||||
};
|
};
|
||||||
|
@@ -183,6 +183,8 @@ NEW_TESTS = test_arglist.res \
|
|||||||
test_viml.res \
|
test_viml.res \
|
||||||
test_visual.res \
|
test_visual.res \
|
||||||
test_window_id.res \
|
test_window_id.res \
|
||||||
|
test_alot_latin.res \
|
||||||
|
test_alot_utf8.res \
|
||||||
test_alot.res
|
test_alot.res
|
||||||
|
|
||||||
|
|
||||||
|
7
src/testdir/test_alot_latin.vim
Normal file
7
src/testdir/test_alot_latin.vim
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
" A series of tests that can run in one Vim invocation.
|
||||||
|
" This makes testing go faster, since Vim doesn't need to restart.
|
||||||
|
|
||||||
|
" These tests use latin1 'encoding'. Setting 'encoding' is in the individual
|
||||||
|
" files, so that they can be run by themselves.
|
||||||
|
|
||||||
|
source test_regexp_latin.vim
|
7
src/testdir/test_alot_utf8.vim
Normal file
7
src/testdir/test_alot_utf8.vim
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
" A series of tests that can run in one Vim invocation.
|
||||||
|
" This makes testing go faster, since Vim doesn't need to restart.
|
||||||
|
|
||||||
|
" These tests use utf8 'encoding'. Setting 'encoding' is in the individual
|
||||||
|
" files, so that they can be run by themselves.
|
||||||
|
|
||||||
|
source test_regexp_utf8.vim
|
32
src/testdir/test_regexp_latin.vim
Normal file
32
src/testdir/test_regexp_latin.vim
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
" Tests for regexp in latin1 encoding
|
||||||
|
set encoding=latin1
|
||||||
|
scriptencoding latin1
|
||||||
|
|
||||||
|
func s:equivalence_test()
|
||||||
|
let str = "A<><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD> B C D E<><45><EFBFBD><EFBFBD> F G H I<><49><EFBFBD><EFBFBD> J K L M N<> O<><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD> P Q R S T U<><55><EFBFBD><EFBFBD> V W X Y<> Z a<><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD> b c d e<><65><EFBFBD><EFBFBD> f g h i<><69><EFBFBD><EFBFBD> j k l m n<> o<><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p q r s t u<><75><EFBFBD><EFBFBD> v w x y<><79> z"
|
||||||
|
let groups = split(str)
|
||||||
|
for group1 in groups
|
||||||
|
for c in split(group1, '\zs')
|
||||||
|
" next statement confirms that equivalence class matches every
|
||||||
|
" character in group
|
||||||
|
call assert_match('^[[=' . c . '=]]*$', group1)
|
||||||
|
for group2 in groups
|
||||||
|
if group2 != group1
|
||||||
|
" next statement converts that equivalence class doesn't match
|
||||||
|
" a character in any other group
|
||||||
|
call assert_equal(-1, match(group2, '[[=' . c . '=]]'))
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
endfor
|
||||||
|
endfor
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
func Test_equivalence_re1()
|
||||||
|
set re=1
|
||||||
|
call s:equivalence_test()
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
func Test_equivalence_re2()
|
||||||
|
set re=2
|
||||||
|
call s:equivalence_test()
|
||||||
|
endfunc
|
35
src/testdir/test_regexp_utf8.vim
Normal file
35
src/testdir/test_regexp_utf8.vim
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
" Tests for regexp in utf8 encoding
|
||||||
|
if !has('multi_byte')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
set encoding=utf-8
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
func s:equivalence_test()
|
||||||
|
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źżžƶẑẕ"
|
||||||
|
let groups = split(str)
|
||||||
|
for group1 in groups
|
||||||
|
for c in split(group1, '\zs')
|
||||||
|
" next statement confirms that equivalence class matches every
|
||||||
|
" character in group
|
||||||
|
call assert_match('^[[=' . c . '=]]*$', group1)
|
||||||
|
for group2 in groups
|
||||||
|
if group2 != group1
|
||||||
|
" next statement converts that equivalence class doesn't match
|
||||||
|
" character in any other group
|
||||||
|
call assert_equal(-1, match(group2, '[[=' . c . '=]]'))
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
endfor
|
||||||
|
endfor
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
func Test_equivalence_re1()
|
||||||
|
set re=1
|
||||||
|
call s:equivalence_test()
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
func Test_equivalence_re2()
|
||||||
|
set re=2
|
||||||
|
call s:equivalence_test()
|
||||||
|
endfunc
|
@@ -748,6 +748,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1700,
|
||||||
/**/
|
/**/
|
||||||
1699,
|
1699,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user