/* Ċ Ġ* ĠCopyright ĠD 3 ĠLed ger , ĠInc . ĠAll ĠRights ĠReserved . Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ*/ Ċ package Ġcom . d 3 . datac ol lect or . tests Ċ Ċ import Ġcom . d 3 . datac ol lect or . service . Finance Service Ċ import Ġcom . google . gson . Json ParseException Ċ import Ġcom . google . gson . Json Parser Ċ import Ġorg . junit . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠFinance Service Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġjson Ġ= ĠJson Parser (). parse ( ĊĠĠĠĠĠĠĠ Ġ" {\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġ\" quote Response \": Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠ Ġ\" result \": Ġ[\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠ Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" full Exchange Name \": Ġ\" CC Y \",\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" symbol \": Ġ\" J PY = X \",\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" f ifty Two Week Low Change Percent \": Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" raw \": Ġ 0 . 0 0 8 5 6 8 7 1 4 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" fmt \": Ġ\" 0 . 8 6 % \"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ},\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" gmt Off Set Milliseconds \": Ġ 3 6 0 0 0 0 0 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" regular Market Open \": Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" raw \": Ġ 1 0 5 . 8 1 1 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" fmt \": Ġ\" 1 0 5 . 8 1 1 0 \"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ},\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" language \": Ġ\" en - US \",\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" regular Market Time \": Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" raw \": Ġ 1 5 6 5 0 8 4 2 9 1 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" fmt \": Ġ\" 1 0 : 3 8 AM ĠB ST \"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ},\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" regular Market Change Percent \": Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" raw \": Ġ 0 . 5 6 0 4 3 5 4 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" fmt \": Ġ\" 0 . 5 6 0 4 % \"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ},\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" uuid \": Ġ\" 2 4 6 8 a 8 0 f - e 3 c 8 - 3 e 1 2 - b 9 0 d - 5 1 4 4 5 a 7 c 3 bae \",\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" quote Type \": Ġ\" CUR RE NCY \",\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" regular Market Day Range \": Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" raw \": Ġ\" 1 0 5 . 5 Ġ- Ġ 1 0 7 . 0 9 \",\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" fmt \": Ġ\" 1 0 5 . 5 0 Ġ- Ġ 1 0 7 . 0 9 \"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ},\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" f ifty Two Week Low Change \": Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" raw \": Ġ 0 . 9 0 3 9 9 9 3 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" fmt \": Ġ\" 0 . 9 0 \"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ},\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" f ifty Two Week High Change Percent \": Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" raw \": Ġ- 0 . 0 7 0 7 9 6 7 1 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" fmt \": Ġ\" - 7 . 0 8 % \"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ},\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" regular Market Day High \": Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" raw \": Ġ 1 0 7 . 0 9 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" fmt \": Ġ\" 1 0 7 . 0 9 0 0 \"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ},\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" trade able \": Ġfalse ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" currency \": Ġ\" J PY \",\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" f ifty Two Week High \": Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" raw \": Ġ 1 1 4 . 5 1 1 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" fmt \": Ġ\" 1 1 4 . 5 1 1 0 \"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ},\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" regular Market Previous Close \": Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" raw \": Ġ 1 0 5 . 8 1 1 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" fmt \": Ġ\" 1 0 5 . 8 1 1 0 \"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ},\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" exchange Timezone Name \": Ġ\" Europe / L ondon \",\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" f ifty Two Week High Change \": Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" raw \": Ġ- 8 . 1 0 7 0 0 2 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" fmt \": Ġ\" - 8 . 1 1 \"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ},\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" f ifty Two Week Range \": Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" raw \": Ġ\" 1 0 5 . 5 Ġ- Ġ 1 1 4 . 5 1 1 \",\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" fmt \": Ġ\" 1 0 5 . 5 0 Ġ- Ġ 1 1 4 . 5 1 \"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ},\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" regular Market Change \": Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" raw \": Ġ 0 . 5 9 3 0 0 2 3 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" fmt \": Ġ\" 0 . 5 9 3 0 \"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ},\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" exchange Data Delayed By \": Ġ 0 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" exchange Timezone ShortName \": Ġ\" B ST \",\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" market State \": Ġ\" REG ULAR \",\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" f ifty Two Week Low \": Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" raw \": Ġ 1 0 5 . 5 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" fmt \": Ġ\" 1 0 5 . 5 0 0 0 \"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ},\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" regular Market Price \": Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" raw \": Ġ 1 0 6 . 4 0 4 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" fmt \": Ġ\" 1 0 6 . 4 0 4 0 \"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ},\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" market \": Ġ\" cc y _ market \",\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" regular Market Volume \": Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" raw \": Ġ 0 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" fmt \": Ġ\" 0 \",\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" long Fmt \": Ġ\" 0 \"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ},\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" quote Source Name \": Ġ\" Delayed ĠQuote \",\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" message Board Id \": Ġ\" fin mb _ J PY _ X \",\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" price Hint \": Ġ 4 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" regular Market Day Low \": Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" raw \": Ġ 1 0 5 . 5 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠ Ġ\" fmt \": Ġ\" 1 0 5 . 5 0 0 0 \"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ},\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" exchange \": Ġ\" CC Y \",\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" source Interval \": Ġ 1 5 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" short Name \": Ġ\" USD / J PY \",\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" region \": Ġ\" US \",\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ\" trigger able \": Ġfalse \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠ Ġ}\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠ Ġ], \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠ Ġ\" error \": Ġnull \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġ}\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ given Ġproperly Ġformatted Ġjson Ġobject ĊĠĠĠĠ Ġ* Ġ@ when Ġ[ Finance Service ] Ġfinds Ġa Ġvalue Ġfor Ġquote Response . result . regular Market Price . raw Ġnested Ġattribute ĊĠĠĠĠ Ġ* Ġ@ then Ġthe Ġvalue Ġis Ġcorrect Ġbeing Ġequal Ġto Ġ 1 0 6 . 4 0 4 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Json Parsing () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 0 6 . 4 0 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFinance Service . retrieve Rate ( json , Ġ" quote Response . result . regular Market Price . raw ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ given Ġproperly Ġformatted Ġjson Ġobject ĊĠĠĠĠ Ġ* Ġ@ when Ġ[ Finance Service ] Ġfinds Ġa Ġvalue Ġfor Ġunknown Ġquote Response . result . regular Market Price . some Ġnested Ġattribute ĊĠĠĠĠ Ġ* Ġ@ then Ġthe Ġvalue Ġis Ġcorrect Ġbeing Ġequal Ġto Ġ 1 0 6 . 4 0 4 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ( expected Ġ= ĠJson ParseException :: class ) ĊĠĠĠ Ġfun Ġtest Json Bad Parsing () Ġ{ ĊĠĠĠĠĠĠĠ ĠFinance Service . retrieve Rate ( json , Ġ" quote Response . result . regular Market Price . some ") ĊĠĠĠ Ġ} Ċ } Ċ