/testability-explorer/src/test/java/com/google/test/metric/report/DiffReportTest.java

http://testability-explorer.googlecode.com/ · Java · 139 lines · 115 code · 19 blank · 5 comment · 0 complexity · e3d3ecf6c7d253314c67cdbc4805d1e6 MD5 · raw file

  1. package com.google.test.metric.report;
  2. import com.google.test.metric.ReportGeneratorProvider;
  3. import freemarker.template.Configuration;
  4. import junit.framework.TestCase;
  5. import java.io.StringWriter;
  6. import java.io.Writer;
  7. import java.util.Arrays;
  8. import java.util.Collections;
  9. /**
  10. * Tests for HTML generation of the Diff report
  11. *
  12. * @author alexeagle@google.com (Alex Eagle)
  13. */
  14. public class DiffReportTest extends TestCase {
  15. private Writer out;
  16. private Configuration cfg;
  17. @Override
  18. protected void setUp() throws Exception {
  19. super.setUp();
  20. out = new StringWriter();
  21. cfg = new Configuration();
  22. cfg.setTemplateLoader(new ClassPathTemplateLoader(ReportGeneratorProvider.PREFIX));
  23. }
  24. @SuppressWarnings("unchecked")
  25. public void testNoDiffs() throws Exception {
  26. Diff diff = new Diff(Collections.EMPTY_LIST);
  27. DiffReport diffReport = new DiffReport(diff, cfg);
  28. diffReport.writeHtml(out);
  29. assertContains("<html>", out.toString());
  30. }
  31. public void testSourceLinks() throws Exception {
  32. Diff diff = new Diff(Arrays.asList(new Diff.ClassDiff("com.Foo", 123, 456)));
  33. DiffReport diffReport = new DiffReport(diff, cfg);
  34. diffReport.setOldSourceUrl("link1/{path}.html");
  35. diffReport.setNewSourceUrl("link2/{path}.html");
  36. diffReport.writeHtml(out);
  37. assertContains("link1/com.Foo.html", out.toString());
  38. assertContains("link2/com.Foo.html", out.toString());
  39. }
  40. public void testClassCostIncreased() throws Exception {
  41. Diff diff = new Diff(Arrays.asList(new Diff.ClassDiff("Foo", 123, 456)));
  42. DiffReport diffReport = new DiffReport(diff, cfg);
  43. diffReport.writeHtml(out);
  44. assertContains("Foo", out.toString());
  45. assertContains("123", out.toString());
  46. assertContains("456", out.toString());
  47. assertContains("class=\"worse", out.toString());
  48. }
  49. public void testClassCostDecreased() throws Exception {
  50. Diff diff = new Diff(Arrays.asList(new Diff.ClassDiff("Foo", 456, 123)));
  51. DiffReport diffReport = new DiffReport(diff, cfg);
  52. diffReport.writeHtml(out);
  53. assertContains("Foo", out.toString());
  54. assertContains("123", out.toString());
  55. assertContains("456", out.toString());
  56. assertContains("class=\"better", out.toString());
  57. }
  58. public void testClassRemoved() throws Exception {
  59. Diff diff = new Diff(Arrays.asList(new Diff.ClassDiff("Foo", 456, null)));
  60. DiffReport diffReport = new DiffReport(diff, cfg);
  61. diffReport.writeHtml(out);
  62. assertContains("Foo", out.toString());
  63. assertContains("456", out.toString());
  64. assertContains("class=\"better", out.toString());
  65. }
  66. public void testClassAdded() throws Exception {
  67. Diff diff = new Diff(Arrays.asList(new Diff.ClassDiff("Foo", null, 456)));
  68. DiffReport diffReport = new DiffReport(diff, cfg);
  69. diffReport.writeHtml(out);
  70. assertContains("Foo", out.toString());
  71. assertContains("456", out.toString());
  72. assertContains("class=\"worse", out.toString());
  73. }
  74. public void testMethodRemoved() throws Exception {
  75. Diff.MethodDiff methodDiff = new Diff.MethodDiff("doThing", 123, null);
  76. Diff.ClassDiff classDiff = new Diff.ClassDiff("Foo", 1, 1, Arrays.asList(methodDiff));
  77. Diff diff = new Diff(Arrays.asList(classDiff));
  78. DiffReport diffReport = new DiffReport(diff, cfg);
  79. diffReport.writeHtml(out);
  80. assertContains("doThing", out.toString());
  81. assertContains("123", out.toString());
  82. assertContains("class=\"better", out.toString());
  83. }
  84. public void testMethodAdded() throws Exception {
  85. Diff.MethodDiff methodDiff = new Diff.MethodDiff("doThing", null, 123);
  86. Diff.ClassDiff classDiff = new Diff.ClassDiff("Foo", 1, 1, Arrays.asList(methodDiff));
  87. Diff diff = new Diff(Arrays.asList(classDiff));
  88. DiffReport diffReport = new DiffReport(diff, cfg);
  89. diffReport.writeHtml(out);
  90. assertContains("doThing", out.toString());
  91. assertContains("123", out.toString());
  92. assertContains("class=\"worse", out.toString());
  93. }
  94. public void testMethodCostIncreased() throws Exception {
  95. Diff.MethodDiff methodDiff = new Diff.MethodDiff("doThing", 123, 456);
  96. Diff.ClassDiff classDiff = new Diff.ClassDiff("Foo", 1, 1, Arrays.asList(methodDiff));
  97. Diff diff = new Diff(Arrays.asList(classDiff));
  98. DiffReport diffReport = new DiffReport(diff, cfg);
  99. diffReport.writeHtml(out);
  100. assertContains("doThing", out.toString());
  101. assertContains("123", out.toString());
  102. assertContains("456", out.toString());
  103. assertContains("class=\"worse", out.toString());
  104. }
  105. public void testMethodCostDecreased() throws Exception {
  106. Diff.MethodDiff methodDiff = new Diff.MethodDiff("doThing", 456, 123);
  107. Diff.ClassDiff classDiff = new Diff.ClassDiff("Foo", 1, 1, Arrays.asList(methodDiff));
  108. Diff diff = new Diff(Arrays.asList(classDiff));
  109. DiffReport diffReport = new DiffReport(diff, cfg);
  110. diffReport.writeHtml(out);
  111. assertContains("doThing", out.toString());
  112. assertContains("123", out.toString());
  113. assertContains("456", out.toString());
  114. assertContains("class=\"better", out.toString());
  115. }
  116. private void assertContains(String expected, String actual) {
  117. assertTrue(String.format("[%s] expected to contain [%s]", actual, expected),
  118. actual.contains(expected));
  119. }
  120. }