/testability-explorer/src/test/java/com/google/test/metric/CostUtilTest.java

http://testability-explorer.googlecode.com/ · Java · 132 lines · 96 code · 21 blank · 15 comment · 0 complexity · ecb8c5c513a98ebbf5f3eb349bcbecec MD5 · raw file

  1. /*
  2. * Copyright 2007 Google Inc.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  5. * use this file except in compliance with the License. You may obtain a copy of
  6. * the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  12. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  13. * License for the specific language governing permissions and limitations under
  14. * the License.
  15. */
  16. package com.google.test.metric;
  17. import junit.framework.TestCase;
  18. import com.google.test.metric.testing.MetricComputerBuilder;
  19. import com.google.test.metric.testing.MetricComputerJavaDecorator;
  20. public class CostUtilTest extends TestCase {
  21. private MetricComputerJavaDecorator decoratedComputer;
  22. private final ClassRepository repo = new JavaClassRepository();
  23. @Override
  24. protected void setUp() throws Exception {
  25. MetricComputer toDecorate = new MetricComputerBuilder().withClassRepository(repo).build();
  26. decoratedComputer = new MetricComputerJavaDecorator(toDecorate, repo);
  27. }
  28. public void testInstanceCost0() {
  29. assertEquals(1, totalGlobalCost("boolean instanceCost0()"));
  30. assertEquals(0, cyclomaticCost("boolean instanceCost0()"));
  31. assertEquals(0, globalCost("boolean instanceCost0()"));
  32. assertEquals(0, totalComplexityCost("boolean instanceCost0()"));
  33. }
  34. public void testStaticCost0() {
  35. assertEquals(0, cyclomaticCost("boolean staticCost0()"));
  36. assertEquals(0, globalCost("boolean staticCost0()"));
  37. assertEquals(0, totalComplexityCost("boolean staticCost0()"));
  38. assertEquals(1, totalGlobalCost("boolean staticCost0()"));
  39. }
  40. public void testInstanceCost1() {
  41. assertEquals(1, totalGlobalCost("boolean instanceCost1()"));
  42. assertEquals(1, cyclomaticCost("boolean instanceCost1()"));
  43. assertEquals(0, globalCost("boolean instanceCost1()"));
  44. assertEquals(1, totalComplexityCost("boolean instanceCost1()"));
  45. }
  46. public void testStaticCost1() {
  47. assertEquals(1, cyclomaticCost("boolean staticCost1()"));
  48. assertEquals(0, globalCost("boolean staticCost1()"));
  49. assertEquals(1, totalComplexityCost("boolean staticCost1()"));
  50. assertEquals(1, totalGlobalCost("boolean staticCost1()"));
  51. }
  52. public void testInstanceCost2() {
  53. assertEquals(2, cyclomaticCost("boolean instanceCost2()"));
  54. assertEquals(0, globalCost("boolean instanceCost2()"));
  55. assertEquals(2, totalComplexityCost("boolean instanceCost2()"));
  56. assertEquals(1, totalGlobalCost("boolean instanceCost2()"));
  57. }
  58. public void testStatcCost2() {
  59. assertEquals(2, cyclomaticCost("boolean staticCost2()"));
  60. assertEquals(0, globalCost("boolean staticCost2()"));
  61. assertEquals(2, totalComplexityCost("boolean staticCost2()"));
  62. assertEquals(1, totalGlobalCost("boolean staticCost2()"));
  63. }
  64. public void testInstanceCost3() {
  65. assertEquals(3, cyclomaticCost("boolean instanceCost3()"));
  66. assertEquals(0, globalCost("boolean instanceCost3()"));
  67. assertEquals(3, totalComplexityCost("boolean instanceCost3()"));
  68. assertEquals(1, totalGlobalCost("boolean instanceCost3()"));
  69. }
  70. public void testStaticCost3() {
  71. assertEquals(3, cyclomaticCost("boolean staticCost3()"));
  72. assertEquals(0, globalCost("boolean staticCost3()"));
  73. assertEquals(3, totalComplexityCost("boolean staticCost3()"));
  74. assertEquals(1, totalGlobalCost("boolean staticCost3()"));
  75. }
  76. public void testInstanceCost4() {
  77. assertEquals(4, cyclomaticCost("boolean instanceCost4()"));
  78. assertEquals(0, globalCost("boolean instanceCost4()"));
  79. assertEquals(4, totalComplexityCost("boolean instanceCost4()"));
  80. assertEquals(1, totalGlobalCost("boolean instanceCost4()"));
  81. }
  82. public void testStaticCost4() {
  83. assertEquals(4, cyclomaticCost("boolean staticCost4()"));
  84. assertEquals(0, globalCost("boolean staticCost4()"));
  85. assertEquals(4, totalComplexityCost("boolean staticCost4()"));
  86. assertEquals(1, totalGlobalCost("boolean staticCost4()"));
  87. }
  88. public void testCostUtilClassCost() throws Exception {
  89. ClassCost classCost = decoratedComputer.compute(CostUtil.class);
  90. assertEquals(4, classCost.getHighestMethodComplexityCost());
  91. assertEquals(1, classCost.getHighestMethodGlobalCost());
  92. assertEquals(20, classCost.getTotalComplexityCost());
  93. assertEquals(12, classCost.getTotalGlobalCost());
  94. }
  95. private int totalComplexityCost(String method) {
  96. return methodCostFor(method).getTotalCost().getCyclomaticComplexityCost();
  97. }
  98. private int cyclomaticCost(String method) {
  99. return methodCostFor(method).getCost().getCyclomaticComplexityCost();
  100. }
  101. private int globalCost(String method) {
  102. return methodCostFor(method).getCost().getGlobalCost();
  103. }
  104. private int totalGlobalCost(String method) {
  105. return methodCostFor(method).getTotalCost().getGlobalCost();
  106. }
  107. private MethodCost methodCostFor(String method) {
  108. MethodCost cost = decoratedComputer.compute(CostUtil.class, method);
  109. return cost;
  110. }
  111. }