package Ġorg . crystal . intellij . tests Ċ Ċ import Ġcom . intellij . test Framework . fixtures . Base Platform TestCase Ċ import Ġorg . crystal . intellij . editor . br ackets Ċ import Ġorg . crystal . intellij . editor . quotes Ċ Ċ class ĠCr ystal Type Handler Test Ġ: ĠBase Platform TestCase () Ġ{ ĊĠĠĠ Ġprivate Ġfun Ġdo Test ( before : ĠString , Ġch : ĠChar , Ġafter : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Fixture . configure By Text (" a . cr ", Ġbefore ) ĊĠĠĠĠĠĠĠ Ġmy Fixture . type ( ch ) ĊĠĠĠĠĠĠĠ Ġmy Fixture . check Result ( after ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpercent Kinds Ġ= ĠlistOf ("", Ġ" q ", Ġ" Q ", Ġ" i ", Ġ" r ", Ġ" w ", Ġ" x ") ĊĊĠĠĠ Ġfun Ġtest Auto Sur round For Quotes () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( quote Before Ġin Ġquotes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( quote After Ġin Ġquotes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( quote Before Ġ== Ġquote After ) Ġcontinue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< selection >${ quote Before } foo ${ quote Before }</ selection >", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquote After , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ quote After } < selection >< caret > foo </ selection >${ quote After }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Auto Sur round For Br ackets () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ(( left Before , Ġright Before ) Ġin Ġbrackets ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( left After , Ġright After ) Ġin Ġbrackets ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( left Before Ġ== Ġleft After ) Ġcontinue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< selection >${ left Before } foo ${ right Before }</ selection >", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft After , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ left After } < selection >< caret > foo </ selection >${ right After }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Pa ired Quote Replacement () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( quote Before Ġin Ġquotes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( quote After Ġin Ġquotes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( quote Before Ġ== Ġquote After ) Ġcontinue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< selection >${ quote Before }</ selection > foo ${ quote Before }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquote After , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ quote After } < caret > foo ${ quote After }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Pa ired Bracket Replacement () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ(( left Before , Ġright Before ) Ġin Ġbrackets ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( left After , Ġright After ) Ġin Ġbrackets ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( left Before Ġ== Ġleft After ) Ġcontinue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< selection >${ left Before }</ selection > foo ${ right Before }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft After , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ left After } < caret > foo ${ right After }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Insert Pair Quote Outside String () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( quote Ġin Ġquotes Ġ- Ġ'/') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ< caret >", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquote , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ$ quote < caret >$ quote " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Insert Pair Bracket Outside String () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ(( left , Ġright ) Ġin Ġbrackets ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ< caret >", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ$ left < caret >$ right " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Insert Pair Quote Inside Simple String () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( quote Ġin Ġquotes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( string Quote Ġin Ġquotes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ$ string Quote < caret > a $ string Quote ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquote , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ$ string Quote $ quote < caret > a $ string Quote " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Insert Pair Bracket Inside Simple String () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( left Ġin Ġbrackets . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( string Quote Ġin Ġquotes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ$ string Quote < caret > a $ string Quote ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ$ string Quote $ left < caret > a $ string Quote " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Insert Pair Quote Inside Quoted Symbol () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( quote Ġin Ġquotes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ: \" < caret > a \"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquote , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ: \" $ quote < caret > a \"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Insert Pair Bracket Inside Quoted Symbol () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( left Ġin Ġbrackets . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ: \" < caret > a \"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ: \" $ left < caret > a \"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Insert Pair Quote Inside Percent String () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( quote Ġin Ġquotes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( kind Ġin Ġpercent Kinds ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( l Bracket , Ġr Bracket ) Ġin Ġbrackets ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġ"% $ kind $ l Bracket " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġ"% $ kind $ r Bracket " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ$ left < caret > a $ right ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquote , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ$ left $ quote < caret > a $ right " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Insert Pair Bracket Inside Percent String () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( typed Left Ġin Ġbrackets . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( kind Ġin Ġpercent Kinds ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( l Bracket , Ġr Bracket ) Ġin Ġbrackets ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġ"% $ kind $ l Bracket " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġ"% $ kind $ r Bracket " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ$ left < caret > a $ right ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Left , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ$ left $ typed Left < caret > a $ right " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest No Insert Before End Quote () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( quote Ġin Ġquotes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ${ quote } a < caret >${ quote }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquote , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ${ quote } a ${ quote } < caret >" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest No Insert Before End Bracket () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ(( left , Ġright ) Ġin Ġbrackets ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ${ left } a < caret >${ right }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x Ġ= Ġ${ left } a ${ right } < caret >" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }