scala/ScalaBook/chapter-11/test-iter
object Case {
import scalabook.iter._
import java.io.File
val start = new File("1")
val processor = (file: File) => { println(file.getName) }
val provider = new FileChildrenProvider
////////// ITERATOR-based //////////////
// provider could be made an implicit parameter, so that we
// do not repeat it al the time
val dfsPre = new PreOrderDFS(start, provider)
val dfsPost = new PostOrderDFS(start, provider)
val bfs = new BFS(start, provider)
//////////// TRAVERSABLE-based ///////////////////
val tprovider = FileTraversableProvider
val tdfsPre = new PreOrderDFST(start, tprovider)
val tdfsPost = new PostOrderDFST(start, tprovider)
def run(msg: String, itemName: String, item: Either[NodeIteratorSkeleton[File], Traversable[File]]) {
def sep1 = println("=" * (msg.length * 2))
def sep2 = println("-" * (msg.length * 2))
println
sep1
println(msg)
sep2
item.fold(
_.foreach(f => println(f.getName)),
_.foreach(f => println(f.getName)))
//item.foreach(f => println(f.getName))
sep2
printf("%s = %s", itemName,
item.fold(
_.toString(_.getName),
_.toString(_.getName)))
println
sep1
println
}
}
import Case._
run("Depth-FS (preorder)", "dfsPre", Left(dfsPre))
run("Depth-FS (postorder)", "dfsPost", Left(dfsPost))
run("Breadth-FS", "bfs", Left(bfs))
run("Depth-FS (preorder) (trav)", "tdfsPre", Right(tdfsPre))
run("Depth-FS (postorder) (trav)", "tdfsPost", Right(tdfsPost))