public RealCoinIdentifier(ICoinIdentifier successor, ICoinCheck coinCheck, CoinInput coinSpec, string value) { _coinSpec = coinSpec; _successor = successor; _coinCheck = coinCheck; _value = value; }
public void Calls_coin_identifier() { var coinInput = new CoinInput(); _sorter.Sort(coinInput); _coinIdentifier.AssertWasCalled(i => i.Identify(coinInput)); }
public void Should_call_check_coin() { var coinInput = new CoinInput {Mass = 20}; _realCoinIdentifier.Identify(coinInput); _coinCheck.AssertWasCalled(cc => cc.CheckCoin(Arg<CoinInput>.Is.Equal(coinInput), Arg<CoinInput>.Matches(x => Math.Abs(x.Mass - _expectedMass) < 0.0001))); }
public void Calls_successor_if_diameter_is_the_same() { var coinInput = new CoinInput {Diameter = 12}; var coinSpec = new CoinInput {Diameter = 12}; _coinDiameterCheck.CheckCoin(coinInput, coinSpec); _successor.AssertWasCalled(s => s.CheckCoin(coinInput, coinSpec)); }
public void Should_return_correct_value_if_coin_check_passes() { var coinInput = new CoinInput {Mass = 20}; _coinCheck.Stub(cc => cc.CheckCoin(null, null)).IgnoreArguments().Return(true); Coin output = _realCoinIdentifier.Identify(coinInput); Assert.That(output.Value, Is.EqualTo(_value)); }
public void Should_call_successor_if_coin_check_fails() { var coinInput = new CoinInput {Mass = 20}; _coinCheck.Stub(cc => cc.CheckCoin(null, null)).IgnoreArguments().Return(false); _realCoinIdentifier.Identify(coinInput); _successor.AssertWasCalled(s => s.Identify(coinInput)); }
public void Returns_false_if_mass_is_very_different() { var coinInput = new CoinInput {Mass = 1}; var coinSpec = new CoinInput {Mass = 12}; bool result = _coinMassCheck.CheckCoin(coinInput, coinSpec); Assert.That(result, Is.False); }
public void Calls_successor_if_mass_is_the_same() { var coinInput = new CoinInput {Mass = 1}; var coinSpec = new CoinInput {Mass = 1}; _coinMassCheck.CheckCoin(coinInput, coinSpec); _successor.AssertWasCalled(x => x.CheckCoin(coinInput, coinSpec)); }
public void Calls_successor_if_mass_is_less_than_one_percent_more() { var coinInput = new CoinInput {Mass = 1.001}; var coinSpec = new CoinInput {Mass = 1}; _coinMassCheck.CheckCoin(coinInput, coinSpec); _successor.AssertWasCalled(x => x.CheckCoin(coinInput, coinSpec)); }
public void Returns_result_from_successor_if_mass_is_the_same() { var coinInput = new CoinInput {Mass = 1}; var coinSpec = new CoinInput {Mass = 1}; _successor.Stub(x => x.CheckCoin(coinInput, coinSpec)).Return(false); bool result = _coinMassCheck.CheckCoin(coinInput, coinSpec); Assert.That(result, Is.False); }
public void Returns_value_from_identifier() { var coinInput = new CoinInput(); var coin = new Coin(); _coinIdentifier.Stub(i => i.Identify(coinInput)).Return(coin); Coin result = _sorter.Sort(coinInput); Assert.That(result, Is.EqualTo(coin)); }
public void Returns_result_from_successor_if_diameter_is_the_same() { var coinInput = new CoinInput {Diameter = 12}; var coinSpec = new CoinInput {Diameter = 12}; _successor.Stub(s => s.CheckCoin(coinInput, coinSpec)).Return(false); bool result = _coinDiameterCheck.CheckCoin(coinInput, coinSpec); Assert.That(result, Is.False); }
public void Should_return_value_from_successor() { var coinInput = new CoinInput {Mass = 20}; _coinCheck.Stub(cc => cc.CheckCoin(null, null)).IgnoreArguments().Return(false); var successorCoin = new Coin {Value = _value}; _successor.Stub(s => s.Identify(null)).IgnoreArguments().Return(successorCoin); Coin output = _realCoinIdentifier.Identify(coinInput); Assert.That(output, Is.EqualTo(successorCoin)); }
private static void Main() { while (true) { double mass = ReadCoinMass(); double diameter = ReadCoinDiameter(); var coinInput = new CoinInput {Mass = mass, Diameter = diameter}; Coin coin = _sorter.Sort(coinInput); Con.WriteLine("You have entered a {0} coin", coin.Value); if (!ReadContinue()) { return; } Con.WriteLine(); } }
public bool CheckCoin(CoinInput coinInput, CoinInput coinSpec) { return true; }
public Coin Identify(CoinInput coinInput) { return new Coin {Value = "fake"}; }
public Coin Identify(CoinInput coinInput) { return _coinCheck.CheckCoin(coinInput, _coinSpec) ? new Coin {Value = _value} : _successor.Identify(coinInput); }
public bool CheckCoin(CoinInput coinInput, CoinInput coinSpec) { return Math.Abs((coinInput.Mass - coinSpec.Mass)/coinSpec.Mass) < 0.01 && _successor.CheckCoin(coinInput, coinSpec); }
public Coin Sort(CoinInput coinInput) { return _coinIdentifier.Identify(coinInput); }
public bool CheckCoin(CoinInput coinInput, CoinInput coinSpec) { return Math.Abs(coinInput.Diameter - coinSpec.Diameter) < 0.0001 && _successor.CheckCoin(coinInput, coinSpec); }