/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠNeural ĠLayer Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . ro bo quant . feeds . csv Ċ Ċ import Ġorg . junit . Test Ċ import Ġorg . ro bo quant . TestData Ċ import Ġorg . ro bo quant . common . Asset Ċ import Ġorg . ro bo quant . common . Exchange Ċ import Ġjava . time . Instant Ċ import Ġkotlin . test .* Ċ Ċ internal Ġclass ĠCSV Feed Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Contracts () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfeed Ġ= ĠCSV Feed ( TestData . data Dir () Ġ+ Ġ" US ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġfeed . assets . size ) ĊĠĠĠĠĠĠĠ Ġval Ġc 2 Ġ= Ġfeed . assets . find Ġ{ Ġit . symbol Ġ== Ġ" A AP L " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" A AP L ", Ġc 2 ?. symbol ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġno Assets () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCSV Feed ( TestData . data Dir () Ġ+ Ġ" NON _ Existing _ DIR ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠCSV Config ( file Extension Ġ= Ġ" non _ existing _ ext ") ĊĠĠĠĠĠĠĠ Ġval Ġfeed 1 Ġ= ĠCSV Feed ( TestData . data Dir () Ġ+ Ġ" US ", Ġconfig ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( feed 1 . assets . isEmpty ()) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcustom Builder () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġasset Ġ= ĠAsset (" TEMPLATE ", Ġexchange Code Ġ= Ġ" TEST 1 2 3 ") ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠCSV Config ( template Ġ= Ġasset , Ġprice Validate Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġfeed Ġ= ĠCSV Feed ( TestData . data Dir () Ġ+ Ġ" US ", Ġconfig ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" TEST 1 2 3 ", Ġfeed . assets . first (). exchange Code ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Column Info () Ġ{ ĊĠĠĠĠĠĠ Ġval Ġci Ġ= ĠColumn Info () ĊĠĠĠĠĠĠĠ Ġci . detect Columns ( listOf (" OPEN ", Ġ" dummy ", Ġ" high ", Ġ" close ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġci . open ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġci . high ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġci . close ) ĊĊĠĠĠĠĠĠĠ Ġval Ġci 2 Ġ= ĠColumn Info () ĊĠĠĠĠĠĠĠ Ġci 2 . define (" OX HC ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġci 2 . open ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġci 2 . high ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġci 2 . close ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġci 2 . adjusted Close ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( ci 2 . has Volume ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlocal Time Parser () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠLocal Time Parser (" dd - MM - yyyy ", ĠdateFormat Ġ= Ġtrue , Ġexchange Ġ= ĠExchange . getInstance (" US ")) ĊĠĠĠĠĠĠĠ Ġval Ġinstant Ġ= Ġparser . parse (" 0 1 - 0 1 - 2 0 2 0 ") ĊĠĠĠĠĠĠĠ Ġval Ġclosing Time Ġ= ĠInstant . parse (" 2 0 2 0 - 0 1 - 0 1 T 2 1 : 0 0 : 0 0 Z ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( closing Time , Ġinstant ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconfig () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġasset Ġ= ĠAsset (" TEMPLATE ", Ġexchange Code Ġ= Ġ" TEST 1 2 3 ") ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠCSV Config ( template Ġ= Ġasset ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( asset . currency , Ġconfig . currency ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcolumn Info Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĠColumn Info () ĊĠĠĠĠĠĠĠ Ġa . define (" XO HX LC ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġa . open ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 5 , Ġa . close ) ĊĊĠĠĠĠĠĠĠ Ġassert Fails Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa . define (" QQ Q ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ }