1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
import scala.tools.nsc.doc.model._
import scala.tools.nsc.doc.model.diagram._
import scala.tools.partest.ScaladocModelTest
object Test extends ScaladocModelTest {
override def code = """
package scala.test.scaladoc.diagrams.inherited.nodes {
/** @contentDiagram
* @inheritanceDiagram hideDiagram */
trait T1 {
trait A1
trait A2 extends A1
trait A3 extends A2
}
/** @contentDiagram
* @inheritanceDiagram hideDiagram */
trait T2 extends T1 {
trait B1 extends A1
trait B2 extends A2 with B1
trait B3 extends A3 with B2
}
/** @contentDiagram
* @inheritanceDiagram hideDiagram */
trait T3 {
self: T1 with T2 =>
trait C1 extends B1
trait C2 extends B2 with C1
trait C3 extends B3 with C2
}
/** @contentDiagram
* @inheritanceDiagram hideDiagram */
trait T4 extends T3 with T2 with T1 {
trait D1 extends C1
trait D2 extends C2 with D1
trait D3 extends C3 with D2
}
}
"""
// diagrams must be started. In case there's an error with dot, it should not report anything
def scaladocSettings = "-diagrams"
def testModel(rootPackage: Package) = {
// get the quick access implicit defs in scope (_package(s), _class(es), _trait(s), object(s) _method(s), _value(s))
import access._
// base package
// Assert we have 7 nodes and 6 edges
val base = rootPackage._package("scala")._package("test")._package("scaladoc")._package("diagrams")._package("inherited")._package("nodes")
def checkDiagram(t: String, nodes: Int, edges: Int) = {
// trait T1
val T = base._trait(t)
val TDiag = T.contentDiagram.get
assert(TDiag.nodes.length == nodes, t + ": " + TDiag.nodes + ".length == " + nodes)
assert(TDiag.edges.map(_._2.length).sum == edges, t + ": " + TDiag.edges.mkString("List(\n", ",\n", "\n)") + ".map(_._2.length).sum == " + edges)
}
checkDiagram("T1", 3, 2)
checkDiagram("T2", 6, 7)
checkDiagram("T3", 3, 2)
checkDiagram("T4", 12, 17)
}
}
|