Ferdig intro til unit testing

This commit is contained in:
Geir Okkenhaug Jerstad 2025-01-02 14:41:32 +01:00
parent 3cbfff200e
commit 8ff1f69ea3
2 changed files with 36 additions and 11 deletions

View file

@ -5,7 +5,30 @@ public class StatsTest
[Test]
public void TestWith3And4()
{
// arrange
var stats = new Stats();
Assert.Pass();
//act
stats.Add(3);
stats.Add(4);
// assert
Assert.AreEqual(2, stats.Count);
Assert.AreEqual(7, stats.Sum);
Assert.AreEqual(4, stats.Max);
Assert.AreEqual(3, stats.Min);
Assert.AreEqual(3.5, stats.Mean, 0.0001);
}
[Test]
public void TestEmptyStats()
{
var stats = new Stats();
Assert.AreEqual(0, stats.Count);
Assert.AreEqual(0, stats.Sum);
Assert.IsNull(stats.Max);
Assert.IsNull(stats.Min);
Assert.AreEqual(float.NaN, stats.Mean);
}
}

View file

@ -6,14 +6,14 @@ public class Stats
{
public int Count {get; private set;}
public int Sum {get; private set;}
public int Max {get; private set;}
public int Min {get; private set;}
public int? Max { get; private set; }
public int? Min {get; private set;}
public float Mean => (float)Sum / Count;
public void Add(int number)
{
if (Max == -1 || number > Max) Max = number;
if (Min == -1 || number < Min) Min = number;
if (Max == null || number > Max) Max = number;
if (Min == null || number < Min) Min = number;
Count++;
Sum += number;
}
@ -23,20 +23,22 @@ public class Stats
return
Format("Antall tall", Count) +
Format("Sum", Sum) +
Format("Max", Max) +
Format("Min", Min) +
Format("Max", Max.Value) +
Format("Min", Min.Value) +
Format("Gjennomsnitt", Mean);
}
private static string Format(string label, float number)
private static string Format(string label, float? number)
{
return FormatImpl(label, number.ToString("####.##"));
if (number == null) return String.Empty;
return FormatImpl(label, number.Value.ToString("####.##"));
}
private static string Format(string label, int number)
private static string Format(string label, int? number)
{
return FormatImpl(label, number.ToString("####"));
if (number == null) return String.Empty;
return FormatImpl(label, number.Value.ToString("####"));
}
private static string FormatImpl(string label, string number)