|
1 | 1 | package scales |
2 | 2 |
|
3 | 3 | import scala.collection.mutable.ListBuffer |
4 | | -import scala.reflect.internal.util.SourceFile |
5 | 4 |
|
6 | 5 | /** |
7 | 6 | * @author Stephen Samuel */ |
8 | 7 | class Coverage |
9 | | - extends CoverageMetrics with |
10 | | - MethodBuilders with |
11 | | - java.io.Serializable with |
12 | | - ClassBuilders with |
13 | | - PackageBuilders with |
14 | | - Numerics { |
| 8 | + extends CoverageMetrics |
| 9 | + with MethodBuilders |
| 10 | + with java.io.Serializable |
| 11 | + with ClassBuilders |
| 12 | + with PackageBuilders |
| 13 | + with FileBuilders |
| 14 | + with Numerics { |
15 | 15 |
|
16 | 16 | val statements = new ListBuffer[MeasuredStatement] |
17 | 17 |
|
@@ -49,17 +49,25 @@ trait ClassBuilders { |
49 | 49 | def classCount: Int = classes.size |
50 | 50 | } |
51 | 51 |
|
| 52 | +trait FileBuilders { |
| 53 | + val statements: Iterable[MeasuredStatement] |
| 54 | + def files: Iterable[MeasuredFile] = statements.groupBy(_.source).map(arg => MeasuredFile(arg._1, arg._2)) |
| 55 | + def fileCount: Int = files.size |
| 56 | +} |
| 57 | + |
52 | 58 | case class MeasuredMethod(name: String, statements: Iterable[MeasuredStatement]) extends CoverageMetrics |
53 | 59 |
|
54 | 60 | case class MeasuredClass(name: String, statements: Iterable[MeasuredStatement]) |
55 | | - extends CoverageMetrics with MethodBuilders with Numerics |
| 61 | + extends CoverageMetrics with MethodBuilders with Numerics { |
| 62 | + def source = statements.head.source |
| 63 | +} |
56 | 64 |
|
57 | 65 | case class MeasuredPackage(name: String, statements: Iterable[MeasuredStatement]) |
58 | 66 | extends CoverageMetrics with ClassCoverage with ClassBuilders { |
59 | 67 | def files = Nil //statements.groupBy(_.source).map(arg => MeasuredFile(arg._1, arg._2)) |
60 | 68 | } |
61 | 69 |
|
62 | | -case class MeasuredFile(source: SourceFile, statements: Iterable[MeasuredStatement]) |
| 70 | +case class MeasuredFile(source: String, statements: Iterable[MeasuredStatement]) |
63 | 71 | extends CoverageMetrics with ClassCoverage with ClassBuilders { |
64 | 72 | def lineStatus(lineNumber: Int): LineStatus = { |
65 | 73 | statements.filter(_.line == lineNumber) match { |
|
0 commit comments