package Ġorg . dom nik l . algorithms . graphs Ċ Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Test Ċ Ċ class ĠGraph Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` can Ġsearch Ġb read th Ġfirst `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgraph Ġ= ĠGraph < Int >() ĊĊĠĠĠĠĠĠĠ Ġgraph . add Un directed Edge ( 0 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġgraph . add Edge ( 0 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġgraph . add Edge ( 0 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġgraph . add Edge ( 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġgraph . add Edge ( 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġgraph . add Edge ( 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġgraph . add Edge ( 4 , Ġ 7 ) ĊĠĠĠĠĠĠĠ Ġgraph . add Edge ( 7 , Ġ 8 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġvisited Ġ= Ġgraph . bread th First ( 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( 0 , Ġ 4 , Ġ 3 , Ġ 1 , Ġ 7 , Ġ 2 , Ġ 8 ), Ġvisited ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` can Ġsearch Ġdepth Ġfirst `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgraph Ġ= ĠGraph < String >() ĊĊĠĠĠĠĠĠĠ Ġgraph . add Edge (" A ", Ġ" B ") ĊĠĠĠĠĠĠĠ Ġgraph . add Edge (" B ", Ġ" C ") ĊĠĠĠĠĠĠĠ Ġgraph . add Edge (" D ", Ġ" E ") ĊĠĠĠĠĠĠĠ Ġgraph . add Edge (" A ", Ġ" E ") ĊĠĠĠĠĠĠĠ Ġgraph . add Edge (" E ", Ġ" F ") ĊĠĠĠĠĠĠĠ Ġgraph . add Edge (" C ", Ġ" G ") ĊĊĠĠĠĠĠĠĠ Ġval Ġvisited Ġ= Ġgraph . depth First (" A ") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf (" A ", Ġ" B ", Ġ" C ", Ġ" G ", Ġ" E ", Ġ" F "), Ġvisited ) ĊĠĠĠ Ġ} Ċ } Ċ