public void add_tax_to_total()
        {
            // arrange
              var tax = new Amount(Currency.DKK, 25);
              var expected = new Price(total, tax);
              var fakeTaxStrategy = A.Fake<TaxCalculationStrategy>();
              A.CallTo(fakeTaxStrategy).WithReturnType<Amount>().Returns(tax);

              var sut = new PriceCalculator(fakeTaxStrategy);
              var order = CreateOrder(sut, 25, isConsumer: true);

              // act
              var actual = order.CreateBill().Price;

              // assert
              Assert.Equal(expected, actual);
        }
 private static void CheckCurrencies(Amount lhs, Amount rhs)
 {
     if (lhs.currency != rhs.currency)
     throw new Exception("incompatible currencies");
 }
 protected bool Equals(Amount other)
 {
     return amount.Equals(other.amount) && currency == other.currency;
 }
 public Price(Amount basePrice, Amount tax)
 {
     BasePrice = basePrice;
       Tax = tax;
 }
 public StrategyExercise()
 {
     total = new Amount(Currency.DKK, 100);
 }