package Ġcom . github . vertical _ blank . sq lform atter . features Ċ Ċ import Ġcom . github . vertical _ blank . sq lform atter . Sql Formatter Ċ import Ġcom . github . vertical _ blank . sq lform atter . expect Ċ import Ġcom . github . vertical _ blank . sq lform atter . languages . StringLiteral Ċ import Ġorg . spe k framework . spe k 2 . style . specification . Suite Ċ Ċ fun ĠSuite . supports Strings ( formatter : ĠSql Formatter . Formatter , Ġstring Types : ĠList < String > Ġ= ĠlistOf ()) Ġ{ ĊĠ Ġwith ( formatter ) Ġ{ ĊĠĠĠ Ġif Ġ( string Types . contains ( StringLiteral . DOUBLE _ QUOTE )) Ġ{ ĊĠĠĠĠĠ Ġit (" supports Ġdouble - quoted Ġstrings ") Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( format (" """ foo ĠJOIN Ġbar """" )). toBe (" """ foo ĠJOIN Ġbar """ ") ĊĠĠĠĠĠĠĠ Ġexpect ( format (" """ foo Ġ\" ĠJOIN Ġbar """" )). toBe (" """ foo Ġ\" ĠJOIN Ġbar """ ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( string Types . contains ( StringLiteral . SINGLE _ QUOTE )) Ġ{ ĊĠĠĠĠĠ Ġit (" supports Ġsingle - quoted Ġstrings ") Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( format ("' foo ĠJOIN Ġbar ' ")). toBe ("' foo ĠJOIN Ġbar '") ĊĠĠĠĠĠĠĠ Ġexpect ( format ("' foo Ġ\\ ' ĠJOIN Ġbar ' ")). toBe ("' foo Ġ\\ ' ĠJOIN Ġbar '") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( string Types . contains ( StringLiteral . BACK _ QUOTE )) Ġ{ ĊĠĠĠĠĠ Ġit (" supports Ġback tick - quoted Ġstrings ") Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( format (" ` foo ĠJOIN Ġbar ` ")). toBe (" ` foo ĠJOIN Ġbar ` ") ĊĠĠĠĠĠĠĠ Ġexpect ( format (" ` foo Ġ`` ĠJOIN Ġbar ` ")). toBe (" ` foo Ġ`` ĠJOIN Ġbar ` ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( string Types . contains ( StringLiteral . U _ DOUBLE _ QUOTE )) Ġ{ ĊĠĠĠĠĠ Ġit (" supports Ġunicode Ġdouble - quoted Ġstrings ") Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( format (""" U & " foo ĠJOIN Ġbar """" )). toBe (""" U & " foo ĠJOIN Ġbar """ ") ĊĠĠĠĠĠĠĠ Ġexpect ( format (""" U & " foo Ġ\" ĠJOIN Ġbar """" )). toBe (""" U & " foo Ġ\" ĠJOIN Ġbar """ ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( string Types . contains ( StringLiteral . U _ SINGLE _ QUOTE )) Ġ{ ĊĠĠĠĠĠ Ġit (" supports Ġsingle - quoted Ġstrings ") Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( format (" U & ' foo ĠJOIN Ġbar ' ")). toBe (" U & ' foo ĠJOIN Ġbar '") ĊĠĠĠĠĠĠĠ Ġexpect ( format (" U & ' foo Ġ\\ ' ĠJOIN Ġbar ' ")). toBe (" U & ' foo Ġ\\ ' ĠJOIN Ġbar '") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( string Types . contains ( StringLiteral . DO LL AR )) Ġ{ ĊĠĠĠĠĠ Ġit (" supports ĠD OL L AR - quoted Ġstrings ") Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( format ("\ $ xxx \$ foo Ġ\ $\ $ ĠLEFT ĠJOIN Ġ\$ yyy \$ Ġbar \$ xxx \$ ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toBe ("\ $ xxx \$ foo Ġ\ $\ $ ĠLEFT ĠJOIN Ġ\$ yyy \$ Ġbar \$ xxx \$ ") ĊĠĠĠĠĠĠĠ Ġexpect ( format ("\ $\ $ foo ĠJOIN Ġbar \ $\ $ ")). toBe ("\ $\ $ foo ĠJOIN Ġbar \ $\ $ ") ĊĠĠĠĠĠĠĠ Ġexpect ( format ("\ $\ $ foo Ġ\$ ĠJOIN Ġbar \ $\ $ ")). toBe ("\ $\ $ foo Ġ$ ĠJOIN Ġbar \ $\ $ ") ĊĠĠĠĠĠĠĠ Ġexpect ( format ("\ $\ $ foo Ġ\ n Ġbar \ $\ $ ")). toBe ("\ $\ $ foo Ġ\ n Ġbar \ $\ $ ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( string Types . contains ( StringLiteral . BRACK ET )) Ġ{ ĊĠĠĠĠĠ Ġit (" supports Ġ[ BRACK ET - quoted Ġidentifiers ]") Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( format ("[ foo ĠJOIN Ġbar ] ")). toBe ("[ foo ĠJOIN Ġbar ]") ĊĠĠĠĠĠĠĠ Ġexpect ( format ("[ foo Ġ]] ĠJOIN Ġbar ] ")). toBe ("[ foo Ġ]] ĠJOIN Ġbar ]") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( string Types . contains ( StringLiteral . N _ SINGLE _ QUOTE )) Ġ{ ĊĠĠĠĠĠ Ġit (" supports ĠT - SQL Ġunicode Ġstrings ") Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( format (" N ' foo ĠJOIN Ġbar ' ")). toBe (" N ' foo ĠJOIN Ġbar '") ĊĠĠĠĠĠĠĠ Ġexpect ( format (" N ' foo Ġ\\ ' ĠJOIN Ġbar ' ")). toBe (" N ' foo Ġ\\ ' ĠJOIN Ġbar '") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( string Types . contains ( StringLiteral . Q _ SINGLE _ QUOTE )) Ġ{ ĊĠĠĠĠĠ Ġit (" supports ĠOracle Ġquot ation Ġoperator ") Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( format (" Q '[ I 'm Ġboy ]', Q '{ I 'm Ġboy }', Q '< I 'm Ġboy >', Q '( I 'm Ġboy )', 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toBe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" Q '[ I 'm Ġboy ]', ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Q '{ I 'm Ġboy }', ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Q '< I 'm Ġboy >', ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Q '( I 'm Ġboy )', ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| 1 """. trim Margin ()) ĊĠĠĠĠĠĠĠ Ġexpect ( format (" NQ '[ I 'm Ġboy ]', NQ '{ I 'm Ġboy }', NQ '< I 'm Ġboy >', NQ '( I 'm Ġboy )', 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toBe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" NQ '[ I 'm Ġboy ]', ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| NQ '{ I 'm Ġboy }', ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| NQ '< I 'm Ġboy >', ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| NQ '( I 'm Ġboy )', ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| 1 """. trim Margin ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ