forked from aniani/vim
158 lines
4.7 KiB
Plaintext
158 lines
4.7 KiB
Plaintext
Test for ":match", ":2match", ":3match", "clearmatches()", "getmatches()",
|
|
"matchadd()", "matcharg()", "matchdelete()", and "setmatches()".
|
|
|
|
STARTTEST
|
|
:so small.vim
|
|
:" --- Check that "matcharg()" returns the correct group and pattern if a match
|
|
:" --- is defined.
|
|
:let @r = "*** Test 1: "
|
|
:highlight MyGroup1 ctermbg=red
|
|
:highlight MyGroup2 ctermbg=green
|
|
:highlight MyGroup3 ctermbg=blue
|
|
:match MyGroup1 /TODO/
|
|
:2match MyGroup2 /FIXME/
|
|
:3match MyGroup3 /XXX/
|
|
:if matcharg(1) == ['MyGroup1', 'TODO'] && matcharg(2) == ['MyGroup2', 'FIXME'] && matcharg(3) == ['MyGroup3', 'XXX']
|
|
: let @r .= "OK\n"
|
|
:else
|
|
: let @r .= "FAILED\n"
|
|
:endif
|
|
:" --- Check that "matcharg()" returns an empty list if the argument is not 1,
|
|
:" --- 2 or 3 (only 0 and 4 are tested).
|
|
:let @r .= "*** Test 2: "
|
|
:if matcharg(0) == [] && matcharg(4) == []
|
|
: let @r .= "OK\n"
|
|
:else
|
|
: let @r .= "FAILED\n"
|
|
:endif
|
|
:" --- Check that "matcharg()" returns ['', ''] if a match is not defined.
|
|
:let @r .= "*** Test 3: "
|
|
:match
|
|
:2match
|
|
:3match
|
|
:if matcharg(1) == ['', ''] && matcharg(2) == ['', ''] && matcharg(3) == ['', '']
|
|
: let @r .= "OK\n"
|
|
:else
|
|
: let @r .= "FAILED\n"
|
|
:endif
|
|
:" --- Check that "matchadd()" and "getmatches()" agree on added matches and
|
|
:" --- that default values apply.
|
|
:let @r .= "*** Test 4: "
|
|
:let m1 = matchadd("MyGroup1", "TODO")
|
|
:let m2 = matchadd("MyGroup2", "FIXME", 42)
|
|
:let m3 = matchadd("MyGroup3", "XXX", 60, 17)
|
|
:if getmatches() == [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 4}, {'group': 'MyGroup2', 'pattern': 'FIXME', 'priority': 42, 'id': 5}, {'group': 'MyGroup3', 'pattern': 'XXX', 'priority': 60, 'id': 17}]
|
|
: let @r .= "OK\n"
|
|
:else
|
|
: let @r .= "FAILED\n"
|
|
:endif
|
|
:" --- Check that "matchdelete()" deletes the matches defined in the previous
|
|
:" --- test correctly.
|
|
:let @r .= "*** Test 5: "
|
|
:call matchdelete(m1)
|
|
:call matchdelete(m2)
|
|
:call matchdelete(m3)
|
|
:unlet m1
|
|
:unlet m2
|
|
:unlet m3
|
|
:if getmatches() == []
|
|
: let @r .= "OK\n"
|
|
:else
|
|
: let @r .= "FAILED\n"
|
|
:endif
|
|
:" --- Check that "matchdelete()" returns 0 if successful and otherwise -1.
|
|
:let @r .= "*** Test 6: "
|
|
:let m = matchadd("MyGroup1", "TODO")
|
|
:let r1 = matchdelete(m)
|
|
:let r2 = matchdelete(42)
|
|
:if r1 == 0 && r2 == -1
|
|
: let @r .= "OK\n"
|
|
:else
|
|
: let @r .= "FAILED\n"
|
|
:endif
|
|
:unlet m
|
|
:unlet r1
|
|
:unlet r2
|
|
:" --- Check that "clearmatches()" clears all matches defined by ":match" and
|
|
:" --- "matchadd()".
|
|
:let @r .= "*** Test 7: "
|
|
:let m1 = matchadd("MyGroup1", "TODO")
|
|
:let m2 = matchadd("MyGroup2", "FIXME", 42)
|
|
:let m3 = matchadd("MyGroup3", "XXX", 60, 17)
|
|
:match MyGroup1 /COFFEE/
|
|
:2match MyGroup2 /HUMPPA/
|
|
:3match MyGroup3 /VIM/
|
|
:call clearmatches()
|
|
:if getmatches() == []
|
|
: let @r .= "OK\n"
|
|
:else
|
|
: let @r .= "FAILED\n"
|
|
:endif
|
|
:unlet m1
|
|
:unlet m2
|
|
:unlet m3
|
|
:" --- Check that "setmatches()" restores a list of matches saved by
|
|
:" --- "getmatches()" without changes. (Matches with equal priority must also
|
|
:" --- remain in the same order.)
|
|
:let @r .= "*** Test 8: "
|
|
:let m1 = matchadd("MyGroup1", "TODO")
|
|
:let m2 = matchadd("MyGroup2", "FIXME", 42)
|
|
:let m3 = matchadd("MyGroup3", "XXX", 60, 17)
|
|
:match MyGroup1 /COFFEE/
|
|
:2match MyGroup2 /HUMPPA/
|
|
:3match MyGroup3 /VIM/
|
|
:let ml = getmatches()
|
|
:call clearmatches()
|
|
:call setmatches(ml)
|
|
:if getmatches() == ml
|
|
: let @r .= "OK\n"
|
|
:else
|
|
: let @r .= "FAILED\n"
|
|
:endif
|
|
:call clearmatches()
|
|
:unlet m1
|
|
:unlet m2
|
|
:unlet m3
|
|
:unlet ml
|
|
:" --- Check that "setmatches()" will not add two matches with the same ID. The
|
|
:" --- expected behaviour (for now) is to add the first match but not the
|
|
:" --- second and to return 0 (even though it is a matter of debate whether
|
|
:" --- this can be considered successful behaviour).
|
|
:let @r .= "*** Test 9: "
|
|
:let r1 = setmatches([{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}, {'group': 'MyGroup2', 'pattern': 'FIXME', 'priority': 10, 'id': 1}])
|
|
:if getmatches() == [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}] && r1 == 0
|
|
: let @r .= "OK\n"
|
|
:else
|
|
: let @r .= "FAILED\n"
|
|
:endif
|
|
:call clearmatches()
|
|
:unlet r1
|
|
:" --- Check that "setmatches()" returns 0 if successful and otherwise -1.
|
|
:" --- (A range of valid and invalid input values are tried out to generate the
|
|
:" --- return values.)
|
|
:let @r .= "*** Test 10: "
|
|
:let rs1 = setmatches([])
|
|
:let rs2 = setmatches([{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}])
|
|
:call clearmatches()
|
|
:let rf1 = setmatches(0)
|
|
:let rf2 = setmatches([0])
|
|
:let rf3 = setmatches([{'wrong key': 'wrong value'}])
|
|
:if rs1 == 0 && rs2 == 0 && rf1 == -1 && rf2 == -1 && rf3 == -1
|
|
: let @r .= "OK\n"
|
|
:else
|
|
: let @r .= "FAILED\n"
|
|
:endif
|
|
:unlet rs1
|
|
:unlet rs2
|
|
:unlet rf1
|
|
:unlet rf2
|
|
:unlet rf3
|
|
:highlight clear MyGroup1
|
|
:highlight clear MyGroup2
|
|
:highlight clear MyGroup3
|
|
G"rp
|
|
:/^Results/,$wq! test.out
|
|
ENDTEST
|
|
|
|
Results of test63:
|