package Ġde . ma ib orn w ol ff . code chart a . importer . source code parser . metric writ ers Ċ Ċ import Ġcom . google . gson . Json Parser Ċ import Ġde . ma ib orn w ol ff . code chart a . importer . source code parser . metrics . File Metric Map Ċ import Ġde . ma ib orn w ol ff . code chart a . importer . source code parser . metrics . Project Metrics Ċ import Ġorg . assertj . core . api . Assertions Ċ import Ġorg . json . JSONObject Ċ import Ġorg . junit . Test Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . File Ċ import Ġjava . io . OutputStream Writer Ċ import Ġjava . io . Print Stream ĊĊ Ċ class ĠJSON Metric Writer Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` file Ġhierarchy Ġand Ġnames Ġare Ġcorrect `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Result File Ġ= ĠFile (" src / test / resources / json Metric Hierarchy . json "). absolute File ĊĠĠĠĠĠĠĠ Ġval Ġmetrics Ġ= ĠProject Metrics () ĊĠĠĠĠĠĠĠ Ġmetrics . add File (" foo / bar . java ") ĊĠĠĠĠĠĠĠ Ġmetrics . add File (" foo / foo 2 / bar 2 . cpp ") ĊĠĠĠĠĠĠĠ Ġmetrics . add File (" foo 3 / bar . java ") ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠByteArrayOutputStream () ĊĊĠĠĠĠĠĠĠ ĠJSON Metric Writer ( OutputStream Writer ( Print Stream ( result ))). generate ( metrics , Ġset Of ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult JSON Ġ= ĠJSONObject ( result . toString ()). toString () ĊĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠJson Parser () ĊĠĠĠĠĠĠĠ Ġval Ġexpected Json Ġ= Ġparser . parse ( expected Result File . reader ()). toString () ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( result JSON ). isEqualTo ( expected Json ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` node Ġmetrics Ġare Ġcorrect `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Result File Ġ= ĠFile (" src / test / resources / json Metric Values . json "). absolute File ĊĠĠĠĠĠĠĠ Ġval Ġfile Metrics 1 Ġ= ĠFile Metric Map (). add (" m cc ", Ġ 2 ). add (" r loc ", Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġfile Metrics 2 Ġ= ĠFile Metric Map (). add (" m cc ", Ġ 1 ). add (" r loc ", Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġmetrics Ġ= ĠProject Metrics () ĊĠĠĠĠĠĠĠ Ġmetrics . add File Metric Map (" foo . java ", Ġfile Metrics 1 ) ĊĠĠĠĠĠĠĠ Ġmetrics . add File Metric Map (" bar . kt ", Ġfile Metrics 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠByteArrayOutputStream () ĊĊĠĠĠĠĠĠĠ ĠJSON Metric Writer ( OutputStream Writer ( Print Stream ( result ))). generate ( metrics , Ġset Of ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult JSON Ġ= ĠJSONObject ( result . toString ()). toString () ĊĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠJson Parser () ĊĠĠĠĠĠĠĠ Ġval Ġexpected Json Ġ= Ġparser . parse ( expected Result File . reader ()). toString () ĊĊĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( result JSON Ġ== Ġexpected Json ). isTrue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` top Ġlevel Ġfiles Ġare Ġembedded Ġcorrectly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Metrics Ġ= ĠFile Metric Map (). add (" m cc ", Ġ 2 ). add (" r loc ", Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġmetrics Ġ= ĠProject Metrics () ĊĠĠĠĠĠĠĠ Ġmetrics . add File Metric Map (" foo . java ", Ġfile Metrics ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠByteArrayOutputStream () ĊĊĠĠĠĠĠĠĠ ĠJSON Metric Writer ( OutputStream Writer ( Print Stream ( result ))). generate ( metrics , Ġset Of ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult JSON Ġ= ĠJSONObject ( result . toString ()) ĊĠĠĠĠĠĠĠ Ġval Ġleaf Ġ= Ġresult JSON . get JSONArray (" nodes "). getJSONObject ( 0 ). get JSONArray (" children "). getJSONObject ( 0 ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( leaf [" type "]). isEqualTo (" File ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( leaf [" name "]). isEqualTo (" foo . java ") ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( leaf . getJSONObject (" attributes "). length ()). isEqualTo ( 2 ) ĊĠĠĠ Ġ} Ċ Ċ }