using System.Collections;
using System.Collections.Generic;
public class TestCalculator
public void TestCalculateTax()
FakeSlabProvider fakeSlabProvider = new FakeSlabProvider();
TaxCalculater objTaxCalculator = new TaxCalculater(fakeSlabProvider);
float calculatedTax = objTaxCalculator.CalculateTax(age, Salary);
Assert.AreEqual(0, calculatedTax);
public interface ISlabProvider
public List<Slab> GetSlab(int age);
public Slab(float slabAmount, float taxPercent)
this.SlabAmount = slabAmount;
this.TaxPercent = taxPercent;
public float SlabAmount {get; set;}
public float TaxPercent {get; set;}
public class FakeSlabProvider : ISlabProvider
public List<Slab> GetSlab(int age)
return new List<Slab> { new Slab(1000000, 30f), new Slab(500000, 20f), new Slab(300000, 10f) };
return new List<Slab> { new Slab(1000000, 20f), new Slab(500000, 10f) };
private ISlabProvider _slabProvider;
public TaxCalculater(ISlabProvider slabProvider)
_slabProvider = slabProvider;
public float CalculateTax(int age, float income)
List<Slab> slab = new List<Slab>();
slab= _slabProvider.GetSlab(61);
foreach (Slab _slab in slab)
Console.WriteLine(_slab.SlabAmount);
Console.WriteLine(_slab.TaxPercent);
public class IncometaxCalculator
public static void Main()
var x = new NUnitLite.AutoRun().Execute(new string[]{"--test:TestCalculator", "--noc"});
Console.WriteLine("----------------------------------------------");
Console.WriteLine(x==0?"All Test Passed... :¬)": string.Format("{0} tests failed... :¬(", x));
Console.WriteLine("----------------------------------------------");