package Ġio . github . pel let ier 1 9 7 . csv . reader . types Ċ Ċ import Ġio . github . pel let ier 1 9 7 . csv . reader . Csv Read ers Ċ import Ġio . github . pel let ier 1 9 7 . csv . reader . delete Test File Ċ import Ġio . github . pel let ier 1 9 7 . csv . reader . filePath Ċ import Ġio . github . pel let ier 1 9 7 . csv . reader . parser . Raw Csv Line Ċ import Ġio . github . pel let ier 1 9 7 . csv . reader . write Test File Ċ import Ġio . kot est . core . spec . style . Should Spec Ċ import Ġio . kot est . matchers . collections . should Contain Exactly Ċ import Ġio . kot est . matchers . collections . should Not Contain Ċ import Ġjava . io . File Ċ import Ġjava . nio . charset . Charset Ċ import Ġjava . nio . file . Paths Ċ import Ġkotlin . streams . toList Ċ Ċ class ĠRaw Csv Reader Test Ġ: ĠShould Spec ({ ĊĠĠĠ Ġval Ġunder Test Ġ= ĠCsv Read ers . raw () ĊĊĠĠĠ Ġcontext (" on Ġa Ġregular ĠCSV ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcsv Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa , b , c ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 , 2 , 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġval Ġexpected Lines Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= ĠlistOf (" a ", Ġ" b ", Ġ" c "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= ĠlistOf (" 1 ", Ġ" 2 ", Ġ" 3 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcontext (" parsing ĠCSV Ġfrom Ġstring ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" parse Ġand Ġreturn Ġall ĠCSV Ġlines ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . read ( csv ). toList (). should Contain Exactly ( expected Lines ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" parsing ĠCSV Ġfrom Ġlines Ġlist ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" parse Ġand Ġreturn Ġall ĠCSV Ġlines ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . read ( csv . lines ()). toList (). should Contain Exactly ( expected Lines ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" parsing ĠCSV Ġfrom Ġinput Ġstream ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" parse Ġand Ġreturn Ġall ĠCSV Ġlines ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . read ( csv . byte InputStream ()). toList (). should Contain Exactly ( expected Lines ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" parsing ĠCSV Ġfrom Ġpath ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbefore Test Ġ{ Ġwrite Test File ( csv ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" parse Ġand Ġreturn Ġall ĠCSV Ġlines ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . read ( Paths . get ( filePath )). toList (). should Contain Exactly ( expected Lines ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" parsing ĠCSV Ġfrom Ġfile ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbefore Test Ġ{ Ġwrite Test File ( csv ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" parse Ġand Ġreturn Ġall ĠCSV Ġlines ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . read ( File ( filePath )). toList (). should Contain Exactly ( expected Lines ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" parsing ĠCSV Ġfrom ĠURL ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbefore Test Ġ{ Ġwrite Test File ( csv ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" parse Ġand Ġreturn Ġall ĠCSV Ġlines ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Blocking Method In Non Blocking Context ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . read ( Paths . get ( filePath ). to Uri (). to URL ()). toList (). should Contain Exactly ( expected Lines ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcontext (" when Ġsetting Ġcustom Ġseparator ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcsv Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa ; b ; c , 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġcontext (" with Ġcustom Ġseparator ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext (" with Ġdefault Ġseparator ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" use Ġdefault Ġseparator Ġto Ġsplit ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . read ( csv ). toList (). should Contain Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= ĠlistOf (" a ; b ; c ", Ġ" 4 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" use Ġonly Ġthe Ġcustom Ġseparator Ġto Ġsplit ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . with Separator (' ; '). read ( csv ). toList (). should Contain Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= ĠlistOf (" a ", Ġ" b ", Ġ" c , 4 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcontext (" when Ġsetting Ġcustom Ġcolumn Ġdelimiter ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcsv Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa ," b , Ġc ",' c , Ġd ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġcontext (" with Ġdefault Ġdelimiter ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" use Ġdefault Ġdelimiter Ġfor Ġquotes ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . read ( csv ). toList (). should Contain Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= ĠlistOf (" a ", Ġ" b , Ġc ", Ġ"' c ", Ġ" Ġd ' "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" with Ġcustom Ġdelimiter ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" use Ġonly Ġcustom Ġdelimiter Ġto Ġ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . with Delimiter (' \' '). read ( csv ). toList (). should Contain Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= ĠlistOf (" a ", Ġ"\" b ", Ġ" Ġc \"", Ġ" c , Ġd "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcontext (" when Ġtri mm ing Ġwh ites p aces ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcsv Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa Ġ Ġ, Ġb Ġ, Ġc ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġcontext (" with Ġdefault Ġsetting ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" not Ġtrim Ġwh ites p aces ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . read ( csv ). toList (). should Contain Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= ĠlistOf (" a Ġ Ġ", Ġ" Ġb Ġ", Ġ" Ġc "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" activ ating Ġwhitespace Ġtri mm ing ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" trim Ġwh ites p aces ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . with Trim Entries ( true ). read ( csv ). toList (). should Contain Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= ĠlistOf (" a ", Ġ" b ", Ġ" c "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcontext (" when Ġparsing Ġempty Ġstrings Ġas Ġnull ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcsv Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa ,, c ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġcontext (" with Ġdefault Ġsetting ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" return Ġempty Ġstrings Ġas Ġempty ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . read ( csv ). toList (). should Contain Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= ĠlistOf (" a ", Ġ"", Ġ" c "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcontext (" when Ġactiv ating Ġempty Ġstrings Ġas Ġnull ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" return Ġempty Ġstrings Ġas Ġnull ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . with Empty Strings As Null ( true ). read ( csv ). toList (). should Contain Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= ĠlistOf (" a ", Ġnull , Ġ" c "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcontext (" when Ġskipping Ġempty Ġlines ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcsv Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġa , b , c ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġcontext (" with Ġdefault Ġsettings ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" skip Ġempty Ġlines ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . read ( csv ). toList (). should Contain Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= ĠlistOf (" a ", Ġ" b ", Ġ" c "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcontext (" when Ġde activ ating Ġempty Ġlines Ġskipping ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" return Ġempty Ġlines Ġresults ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . with Skip Empty Lines ( false ). read ( csv ). toList (). should Contain Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= ĠlistOf (" a ", Ġ" b ", Ġ" c "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcontext (" when Ġusing Ġcustom Ġencoding ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcsv Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠÃł , b , Ã§ , d , Ã© ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Line Ġ= ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= ĠlistOf (" Ãł ", Ġ" b ", Ġ" Ã§ ", Ġ" d ", Ġ" Ã© "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcontext (" using Ġdefault Ġencoding ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould (" parse Ġcharacters Ġcorrectly ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . read ( csv . byte InputStream ( charset Ġ= ĠCharset . default Charset ())). toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should Contain Exactly ( expected Line ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" using Ġa Ġdifferent Ġencoding ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext (" text Ġis Ġencoded Ġusing Ġa Ġdifferent Ġencoding ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Encoding ( Charsets . ISO _ 8 8 5 9 _ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read ( csv . byte InputStream ( charset Ġ= ĠCharset . default Charset ())). toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should Not Contain ( expected Line ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext (" text Ġis Ġencoded Ġusing Ġthe Ġsame Ġencoding ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Encoding ( Charsets . ISO _ 8 8 5 9 _ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read ( csv . byte InputStream ( Charsets . ISO _ 8 8 5 9 _ 1 )). toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should Contain Exactly ( expected Line ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcontext (" when ĠCSV Ġhas Ġa Ġline Ġof Ġmultiple Ġlines ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcsv Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa , b ," ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ", f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper Ġline , Ġh , Ġwith Ġother Ġstuff ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġshould (" parse Ġeach Ġline Ġcorrectly ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . read ( csv ). toList (). should Contain Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" a ", Ġ" b ", Ġ"\ nc ,\ nd ,\ n ", Ġ" f " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" super Ġline ", Ġ" Ġh ", Ġ" Ġwith Ġother Ġstuff " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcontext (" when ĠCSV Ġcontains Ġescaped Ġcharacters ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcsv Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa , b ," and Ġthen Ġhe Ġsaid Ġ\" we Ġdon 't Ġneed Ġany Ġb ooleans , Ġwe Ġgot Ġinteger \" Ġand Ġeveryone Ġla ug hed ", f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper Ġline , Ġh , Ġwith Ġother Ġstuff ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġshould (" parse Ġeach Ġline Ġcorrectly ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . read ( csv ). toList (). should Contain Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" a ", Ġ" b ", Ġ" and Ġthen Ġhe Ġsaid Ġ\" we Ġdon 't Ġneed Ġany Ġb ooleans , Ġwe Ġgot Ġinteger \" Ġand Ġeveryone Ġla ug hed ", Ġ" f " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" super Ġline ", Ġ" Ġh ", Ġ" Ġwith Ġother Ġstuff " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcontext (" when Ġcsv Ġcontains Ġcar riage Ġreturns ") Ġ{ ĊĠĠĠĠĠĠĠ Ġshould (" ignore Ġthe Ġcar riage Ġreturn Ġchar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunder Test . read (" a , b ,\" t \ r \ n , e \"" ). toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should Contain Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRaw Csv Line ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumns Ġ= ĠlistOf (" a ", Ġ" b ", Ġ" t \ n , e "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġafter Spec Ġ{ Ġdelete Test File () Ġ} Ċ }) Ċ