UltiSnips/test/test_TabStop.py
kawing.chiu f9a22111f0 Fix adjacent tabstop input issue.
Previously, adjacent tabstops like $1$2 were not handled properly.
$2 could be jumped to but no text could be added. See issue #457.
2015-03-13 23:49:45 +08:00

374 lines
12 KiB
Python

from test.vim_test_case import VimTestCase as _VimTest
from test.constant import *
class TabStopSimpleReplace_ExpectCorrectResult(_VimTest):
snippets = ('hallo', 'hallo ${0:End} ${1:Beginning}')
keys = 'hallo' + EX + 'na' + JF + 'Du Nase'
wanted = 'hallo Du Nase na'
class TabStopSimpleReplaceZeroLengthTabstops_ExpectCorrectResult(_VimTest):
snippets = ('test', r":latex:\`$1\`$0")
keys = 'test' + EX + 'Hello' + JF + 'World'
wanted = ':latex:`Hello`World'
class TabStopSimpleReplaceReversed_ExpectCorrectResult(_VimTest):
snippets = ('hallo', 'hallo ${1:End} ${0:Beginning}')
keys = 'hallo' + EX + 'na' + JF + 'Du Nase'
wanted = 'hallo na Du Nase'
class TabStopSimpleReplaceSurrounded_ExpectCorrectResult(_VimTest):
snippets = ('hallo', 'hallo ${0:End} a small feed')
keys = 'hallo' + EX + 'Nase'
wanted = 'hallo Nase a small feed'
class TabStopSimpleReplaceSurrounded1_ExpectCorrectResult(_VimTest):
snippets = ('hallo', 'hallo $0 a small feed')
keys = 'hallo' + EX + 'Nase'
wanted = 'hallo Nase a small feed'
class TabStop_Exit_ExpectCorrectResult(_VimTest):
snippets = ('echo', '$0 run')
keys = 'echo' + EX + 'test'
wanted = 'test run'
class TabStopNoReplace_ExpectCorrectResult(_VimTest):
snippets = ('echo', 'echo ${1:Hallo}')
keys = 'echo' + EX
wanted = 'echo Hallo'
class TabStop_EscapingCharsBackticks(_VimTest):
snippets = ('test', r"snip \` literal")
keys = 'test' + EX
wanted = 'snip ` literal'
class TabStop_EscapingCharsDollars(_VimTest):
snippets = ('test', r"snip \$0 $$0 end")
keys = 'test' + EX + 'hi'
wanted = 'snip $0 $hi end'
class TabStop_EscapingCharsDollars1(_VimTest):
snippets = ('test', r"a\${1:literal}")
keys = 'test' + EX
wanted = 'a${1:literal}'
class TabStop_EscapingCharsDollars_BeginningOfLine(_VimTest):
snippets = ('test', '\n\\${1:literal}')
keys = 'test' + EX
wanted = '\n${1:literal}'
class TabStop_EscapingCharsDollars_BeginningOfDefinitionText(_VimTest):
snippets = ('test', '\\${1:literal}')
keys = 'test' + EX
wanted = '${1:literal}'
class TabStop_EscapingChars_Backslash(_VimTest):
snippets = ('test', r"This \ is a backslash!")
keys = 'test' + EX
wanted = 'This \\ is a backslash!'
class TabStop_EscapingChars_Backslash2(_VimTest):
snippets = ('test', r"This is a backslash \\ done")
keys = 'test' + EX
wanted = r"This is a backslash \ done"
class TabStop_EscapingChars_Backslash3(_VimTest):
snippets = ('test', r"These are two backslashes \\\\ done")
keys = 'test' + EX
wanted = r"These are two backslashes \\ done"
class TabStop_EscapingChars_Backslash4(_VimTest):
# Test for bug 746446
snippets = ('test', r"\\$1{$2}")
keys = 'test' + EX + 'hello' + JF + 'world'
wanted = r"\hello{world}"
class TabStop_EscapingChars_RealLife(_VimTest):
snippets = ('test', r"usage: \`basename \$0\` ${1:args}")
keys = 'test' + EX + '[ -u -v -d ]'
wanted = 'usage: `basename $0` [ -u -v -d ]'
class TabStopEscapingWhenSelected_ECR(_VimTest):
snippets = ('test', 'snip ${1:default}')
keys = 'test' + EX + ESC + '0ihi'
wanted = 'hisnip default'
class TabStopEscapingWhenSelectedSingleCharTS_ECR(_VimTest):
snippets = ('test', 'snip ${1:i}')
keys = 'test' + EX + ESC + '0ihi'
wanted = 'hisnip i'
class TabStopEscapingWhenSelectedNoCharTS_ECR(_VimTest):
snippets = ('test', 'snip $1')
keys = 'test' + EX + ESC + '0ihi'
wanted = 'hisnip '
class TabStopWithOneChar_ExpectCorrectResult(_VimTest):
snippets = ('hallo', 'nothing ${1:i} hups')
keys = 'hallo' + EX + 'ship'
wanted = 'nothing ship hups'
class TabStopTestJumping_ExpectCorrectResult(_VimTest):
snippets = ('hallo', 'hallo ${2:End} mitte ${1:Beginning}')
keys = 'hallo' + EX + JF + 'Test' + JF + 'Hi'
wanted = 'hallo Test mitte BeginningHi'
class TabStopTestJumping2_ExpectCorrectResult(_VimTest):
snippets = ('hallo', 'hallo $2 $1')
keys = 'hallo' + EX + JF + 'Test' + JF + 'Hi'
wanted = 'hallo Test Hi'
class TabStopTestJumpingRLExampleWithZeroTab_ExpectCorrectResult(_VimTest):
snippets = ('test', 'each_byte { |${1:byte}| $0 }')
keys = 'test' + EX + JF + 'Blah'
wanted = 'each_byte { |byte| Blah }'
class TabStopTestJumpingDontJumpToEndIfThereIsTabZero_ExpectCorrectResult(
_VimTest):
snippets = ('hallo', 'hallo $0 $1')
keys = 'hallo' + EX + 'Test' + JF + 'Hi' + JF + JF + 'du'
wanted = 'hallo Hi' + 2 * JF + 'du Test'
class TabStopTestBackwardJumping_ExpectCorrectResult(_VimTest):
snippets = ('hallo', 'hallo ${2:End} mitte${1:Beginning}')
keys = 'hallo' + EX + 'Somelengthy Text' + JF + 'Hi' + JB + \
'Lets replace it again' + JF + 'Blah' + JF + JB * 2 + JF
wanted = 'hallo Blah mitteLets replace it again' + JB * 2 + JF
class TabStopTestBackwardJumping2_ExpectCorrectResult(_VimTest):
snippets = ('hallo', 'hallo $2 $1')
keys = 'hallo' + EX + 'Somelengthy Text' + JF + 'Hi' + JB + \
'Lets replace it again' + JF + 'Blah' + JF + JB * 2 + JF
wanted = 'hallo Blah Lets replace it again' + JB * 2 + JF
class TabStopTestMultilineExpand_ExpectCorrectResult(_VimTest):
snippets = ('hallo', 'hallo $0\nnice $1 work\n$3 $2\nSeem to work')
keys = 'test hallo World' + ESC + '02f i' + EX + 'world' + JF + 'try' + \
JF + 'test' + JF + 'one more' + JF
wanted = 'test hallo one more' + JF + '\nnice world work\n' \
'test try\nSeem to work World'
class TabStop_TSInDefaultTextRLExample_OverwriteNone_ECR(_VimTest):
snippets = ('test', """<div${1: id="${2:some_id}"}>\n $0\n</div>""")
keys = 'test' + EX
wanted = """<div id="some_id">\n \n</div>"""
class TabStop_TSInDefaultTextRLExample_OverwriteFirst_NoJumpBack(_VimTest):
snippets = ('test', """<div${1: id="${2:some_id}"}>\n $0\n</div>""")
keys = 'test' + EX + ' blah' + JF + 'Hallo'
wanted = """<div blah>\n Hallo\n</div>"""
class TabStop_TSInDefaultTextRLExample_DeleteFirst(_VimTest):
snippets = ('test', """<div${1: id="${2:some_id}"}>\n $0\n</div>""")
keys = 'test' + EX + BS + JF + 'Hallo'
wanted = """<div>\n Hallo\n</div>"""
class TabStop_TSInDefaultTextRLExample_OverwriteFirstJumpBack(_VimTest):
snippets = ('test', """<div${1: id="${2:some_id}"}>\n $3 $0\n</div>""")
keys = 'test' + EX + 'Hi' + JF + 'Hallo' + JB + 'SomethingElse' + JF + \
'Nupl' + JF + 'Nox'
wanted = """<divSomethingElse>\n Nupl Nox\n</div>"""
class TabStop_TSInDefaultTextRLExample_OverwriteSecond(_VimTest):
snippets = ('test', """<div${1: id="${2:some_id}"}>\n $0\n</div>""")
keys = 'test' + EX + JF + 'no' + JF + 'End'
wanted = """<div id="no">\n End\n</div>"""
class TabStop_TSInDefaultTextRLExample_OverwriteSecondTabBack(_VimTest):
snippets = ('test', """<div${1: id="${2:some_id}"}>\n $3 $0\n</div>""")
keys = 'test' + EX + JF + 'no' + JF + 'End' + JB + 'yes' + JF + 'Begin' \
+ JF + 'Hi'
wanted = """<div id="yes">\n Begin Hi\n</div>"""
class TabStop_TSInDefaultTextRLExample_OverwriteSecondTabBackTwice(_VimTest):
snippets = ('test', """<div${1: id="${2:some_id}"}>\n $3 $0\n</div>""")
keys = 'test' + EX + JF + 'no' + JF + 'End' + JB + 'yes' + JB + \
' allaway' + JF + 'Third' + JF + 'Last'
wanted = """<div allaway>\n Third Last\n</div>"""
class TabStop_TSInDefaultText_ZeroLengthNested_OverwriteSecond(_VimTest):
snippets = ('test', """h${1:a$2b}l""")
keys = 'test' + EX + JF + 'ups' + JF + 'End'
wanted = """haupsblEnd"""
class TabStop_TSInDefaultText_ZeroLengthNested_OverwriteFirst(_VimTest):
snippets = ('test', """h${1:a$2b}l""")
keys = 'test' + EX + 'ups' + JF + 'End'
wanted = """hupslEnd"""
class TabStop_TSInDefaultText_ZeroLengthNested_OverwriteSecondJumpBackOverwrite(
_VimTest):
snippets = ('test', """h${1:a$2b}l""")
keys = 'test' + EX + JF + 'longertext' + JB + 'overwrite' + JF + 'End'
wanted = """hoverwritelEnd"""
class TabStop_TSInDefaultText_ZeroLengthNested_OverwriteSecondJumpBackAndForward0(
_VimTest):
snippets = ('test', """h${1:a$2b}l""")
keys = 'test' + EX + JF + 'longertext' + JB + JF + 'overwrite' + JF + 'End'
wanted = """haoverwriteblEnd"""
class TabStop_TSInDefaultText_ZeroLengthNested_OverwriteSecondJumpBackAndForward1(
_VimTest):
snippets = ('test', """h${1:a$2b}l""")
keys = 'test' + EX + JF + 'longertext' + JB + JF + JF + 'End'
wanted = """halongertextblEnd"""
class TabStop_TSInDefaultNested_OverwriteOneJumpBackToOther(_VimTest):
snippets = ('test', 'hi ${1:this ${2:second ${3:third}}} $4')
keys = 'test' + EX + JF + 'Hallo' + JF + 'Ende'
wanted = 'hi this Hallo Ende'
class TabStop_TSInDefaultNested_OverwriteOneJumpToThird(_VimTest):
snippets = ('test', 'hi ${1:this ${2:second ${3:third}}} $4')
keys = 'test' + EX + JF + JF + 'Hallo' + JF + 'Ende'
wanted = 'hi this second Hallo Ende'
class TabStop_TSInDefaultNested_OverwriteOneJumpAround(_VimTest):
snippets = ('test', 'hi ${1:this ${2:second ${3:third}}} $4')
keys = 'test' + EX + JF + JF + 'Hallo' + JB + JB + 'Blah' + JF + 'Ende'
wanted = 'hi Blah Ende'
class TabStop_TSInDefault_MirrorsOutside_DoNothing(_VimTest):
snippets = ('test', 'hi ${1:this ${2:second}} $2')
keys = 'test' + EX
wanted = 'hi this second second'
class TabStop_TSInDefault_MirrorsOutside_OverwriteSecond(_VimTest):
snippets = ('test', 'hi ${1:this ${2:second}} $2')
keys = 'test' + EX + JF + 'Hallo'
wanted = 'hi this Hallo Hallo'
class TabStop_TSInDefault_MirrorsOutside_Overwrite0(_VimTest):
snippets = ('test', 'hi ${1:this ${2:second}} $2')
keys = 'test' + EX + 'Hallo'
wanted = 'hi Hallo '
class TabStop_TSInDefault_MirrorsOutside_Overwrite1(_VimTest):
snippets = ('test', "$1: ${1:'${2:second}'} $2")
keys = 'test' + EX + 'Hallo'
wanted = 'Hallo: Hallo '
class TabStop_TSInDefault_MirrorsOutside_OverwriteSecond1(_VimTest):
snippets = ('test', "$1: ${1:'${2:second}'} $2")
keys = 'test' + EX + JF + 'Hallo'
wanted = "'Hallo': 'Hallo' Hallo"
class TabStop_TSInDefault_MirrorsOutside_OverwriteFirstSwitchNumbers(_VimTest):
snippets = ('test', "$2: ${2:'${1:second}'} $1")
keys = 'test' + EX + 'Hallo'
wanted = "'Hallo': 'Hallo' Hallo"
class TabStop_TSInDefault_MirrorsOutside_OverwriteFirst_RLExample(_VimTest):
snippets = (
'test',
"""`!p snip.rv = t[1].split('/')[-1].lower().strip("'")` = require(${1:'${2:sys}'})""")
keys = 'test' + EX + 'WORLD' + JF + 'End'
wanted = 'world = require(WORLD)End'
class TabStop_TSInDefault_MirrorsOutside_OverwriteSecond_RLExample(_VimTest):
snippets = (
'test',
"""`!p snip.rv = t[1].split('/')[-1].lower().strip("'")` = require(${1:'${2:sys}'})""")
keys = 'test' + EX + JF + 'WORLD' + JF + 'End'
wanted = "world = require('WORLD')End"
class TabStop_Multiline_Leave(_VimTest):
snippets = ('test', 'hi ${1:first line\nsecond line} world')
keys = 'test' + EX
wanted = 'hi first line\nsecond line world'
class TabStop_Multiline_Overwrite(_VimTest):
snippets = ('test', 'hi ${1:first line\nsecond line} world')
keys = 'test' + EX + 'Nothing'
wanted = 'hi Nothing world'
class TabStop_Multiline_MirrorInFront_Leave(_VimTest):
snippets = ('test', 'hi $1 ${1:first line\nsecond line} world')
keys = 'test' + EX
wanted = 'hi first line\nsecond line first line\nsecond line world'
class TabStop_Multiline_MirrorInFront_Overwrite(_VimTest):
snippets = ('test', 'hi $1 ${1:first line\nsecond line} world')
keys = 'test' + EX + 'Nothing'
wanted = 'hi Nothing Nothing world'
class TabStop_Multiline_DelFirstOverwriteSecond_Overwrite(_VimTest):
snippets = ('test', 'hi $1 $2 ${1:first line\nsecond line} ${2:Hi} world')
keys = 'test' + EX + BS + JF + 'Nothing'
wanted = 'hi Nothing Nothing world'
class TabStopNavigatingInInsertModeSimple_ExpectCorrectResult(_VimTest):
snippets = ('hallo', 'Hallo ${1:WELT} ups')
keys = 'hallo' + EX + 'haselnut' + 2 * ARR_L + 'hips' + JF + 'end'
wanted = 'Hallo haselnhipsut upsend'
class TabStop_CROnlyOnSelectedNear(_VimTest):
snippets = ('test', 't$1t${2: }t{\n\t$0\n}')
keys = 'test' + EX + JF + '\n' + JF + 't'
wanted = 'tt\nt{\n\tt\n}'
class TabStop_AdjacentTabStopAddText_ExpectCorrectResult(_VimTest):
snippets = ('test', '[ $1$2 ] $1')
keys = 'test' + EX + 'Hello' + JF + 'World' + JF
wanted = '[ HelloWorld ] Hello'