public static bool TryProcessRule(this ParcelRuleBase parcelRule, Parcel parcel, out decimal cost) { cost = 0; //No weight or volume limit. Price by volume only if (parcelRule.WeightLimit <= 0 && parcelRule.VolumeLimit <= 0) { cost = parcel.Volume() * parcelRule.Rate; return(true); } //Weight Limit. Price by weight if (parcelRule.WeightLimit > 0 && parcel.Weight > parcelRule.WeightLimit) { cost = parcel.Weight * parcelRule.Rate; return(true); } //Volume Limit. Price by volume if (parcelRule.VolumeLimit > 0 && parcel.Volume() < parcelRule.VolumeLimit) { cost = parcel.Volume() * parcelRule.Rate; return(true); } return(false); }
public void TryProcessRule_returns_correct_cost(ParcelRuleBase parcelRule, Parcel parcel, decimal expectedCost) { //Given var sut = parcelRule; //When sut.TryProcessRule(parcel, out decimal cost); //Then Assert.Equal(expectedCost, cost); }