~ubuntu-branches/ubuntu/wily/gmetrics/wily

« back to all changes in this revision

Viewing changes to src/test/groovy/org/gmetrics/metric/abc/AbcMetric_ClassTest.groovy

  • Committer: Package Import Robot
  • Author(s): Miguel Landaeta, Miguel Landaeta, tony mancill
  • Date: 2012-01-18 20:57:50 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20120118205750-68fv86p7fs8xz470
Tags: 0.5-1
[Miguel Landaeta]
* New upstream release.
* Remove patch ftbfs_613266.diff since it was merged upstream.
* Update dates in copyright file.

[tony mancill]
* Set DMUA flag.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
package org.gmetrics.metric.abc
17
17
 
18
18
import org.gmetrics.metric.MetricLevel
 
19
import org.gmetrics.result.MethodKey
19
20
 
20
21
/**
21
22
 * Tests for AbcMetric calculation of class-level metrics
22
23
 *
23
24
 * @author Chris Mair
24
 
 * @version $Revision: 125 $ - $Date: 2010-07-17 21:39:11 -0400 (Sat, 17 Jul 2010) $
 
25
 * @version $Revision: 180 $ - $Date: 2011-11-27 21:56:48 -0500 (Sun, 27 Nov 2011) $
25
26
 */
26
27
class AbcMetric_ClassTest extends AbstractAbcMetricTest {
27
28
    static metricClass = AbcMetric
52
53
        final SOURCE = """
53
54
            println 123     // this is a script; will generate main() and run() methods
54
55
        """
55
 
        assertApplyToClass(SOURCE, [0, 1, 0], [0,1,0], [run:[0, 1, 0]])
 
56
        assertApplyToClass(SOURCE, [0, 1, 0], [0,1,0], ['java.lang.Object run()':[0, 1, 0]])
56
57
    }
57
58
 
58
59
    void testApplyToClass_ResultsForClassWithOneMethod() {
59
60
        final SOURCE = """
60
 
            def a() {
 
61
            String a() {
61
62
                def x = 1               // A=1
62
63
            }
63
64
        """
64
 
        assertApplyToClass(SOURCE, [1, 0, 0], [1,0,0], [a:[1, 0, 0]])
 
65
        assertApplyToClass(SOURCE, [1, 0, 0], [1,0,0], ['String a()':[1, 0, 0]])
65
66
    }
66
67
 
67
68
    void testApplyToClass_ResultsForClassWithSeveralMethods() {
70
71
                def MyClass() {
71
72
                    def x = 1; y = x            // A=2
72
73
                }
73
 
                def b() {
 
74
                String b() {
74
75
                    new SomeClass(99)           // B=1
75
76
                    new SomeClass().run()       // B=2
76
77
                    x++                         // A=1
77
78
                }
78
 
                def c() {
 
79
                String c() {
79
80
                    switch(x) {
80
81
                        case 1: break           // C=1
81
82
                        case 3: break           // C=1
84
85
                }
85
86
            }
86
87
        """
87
 
        assertApplyToClass(SOURCE, [3,3,6], [1,1,2], [(CONSTRUCTOR_NAME):[2,0,0], b:[1,3,0], c:[0,0,6]])
 
88
        assertApplyToClass(SOURCE, [3,3,6], [1,1,2], [(DEFAULT_CONSTRUCTOR):[2,0,0], 'String b()':[1,3,0], 'String c()':[0,0,6]])
88
89
    }
89
90
 
90
91
    void testApplyToClass_ResultsForScript_RunMethod() {
93
94
                def x = 1
94
95
            }
95
96
        """
96
 
        assertApplyToClass(SOURCE, [2, 0, 0], [2,0,0], [run:[2, 0, 0]])
 
97
        assertApplyToClass(SOURCE, [2, 0, 0], [2,0,0], [(RUN_METHOD):[2, 0, 0]])
97
98
    }
98
99
 
99
100
    void testApplyToClass_ResultsForClassWithOneClosureField() {
124
125
        def results = applyToClass(SOURCE)
125
126
        def methodResults = results.methodMetricResults
126
127
        log("methodResults=$methodResults")
127
 
        assertEqualSets(methodResults.keySet(), ['a', 'b', 'c']) 
 
128
        assertEqualSets(methodResults.keySet().methodName, ['a', 'b', 'c'])
128
129
    }
129
130
 
130
131
    protected void assertApplyToClass(String source, classTotalValue, classAverageValue, Map methodValues) {
132
133
        def results = metric.applyToClass(classNode, sourceCode)
133
134
        log("results=$results")
134
135
        def classMetricResult = results.classMetricResult
 
136
        assert classMetricResult.metricLevel == MetricLevel.CLASS
135
137
        AbcTestUtil.assertEquals(classMetricResult.averageAbcVector, classAverageValue)
136
138
        AbcTestUtil.assertEquals(classMetricResult.totalAbcVector, classTotalValue)
137
139
 
140
142
 
141
143
        def methodNames = methodValues?.keySet()
142
144
        methodNames.each { methodName ->
143
 
            def methodValue = methodMetricResults[methodName].abcVector
 
145
            def methodKey = new MethodKey(methodName)
 
146
            def methodResult = methodMetricResults[methodKey]
 
147
            assert methodResult, "Method named [$methodName] does not exist"
 
148
            def methodValue = methodResult.abcVector
144
149
            AbcTestUtil.assertEquals(methodValue, methodValues[methodName])
 
150
            assert methodResult.metricLevel == MetricLevel.METHOD
145
151
        }
146
152
    }
147
153