/*----------------------------------------------------------------------
Prof-It for C#
Copyright (c) 2004 Klaus Lehner, University of Linz
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
----------------------------------------------------------------------*/
using System;
using System.Collections;
namespace at.jku.ssw.ProfIt.Components{
/// <summary>
/// This class represents one method in the instrumented source code
/// and referes as a CalcBlock to the first block of the method
/// </summary>
[Serializable]
public class MethodCounter : CalcBlock {
public ArrayList blocks = new ArrayList();
private string name;
public MethodCounter(Position start) : base(start,null){
}
public string Name {
get { return name; }
set { name = value; }
}
public void AddBlock(IBlock block) {
blocks.Add(block);
}
public override int Statements {
get {
int result = 0;
foreach (IBlock block in blocks) {
result += block.Statements;
}
return result;
}
}
public float Coverage {
get {
float total = 0;
float executed = 0;
foreach (IBlock block in blocks) {
total += block.Statements;
if (block.Counter > 0) executed += block.Statements;
}
if (total == 0) return 0;
return executed / total * 100;
}
}
public override int Executions {
get {
int result = 0;
foreach (IBlock block in blocks) {
result += block.Executions;
}
return result;
}
}
public override string ToString() {
return "MethodBlock for " + Name;
}
}
}
|