public void IsWholeNumber_IsValidResultNegative() { // arrange Fraction fraction1 = new Fraction(-3); Fraction fraction2 = new Fraction(-3, 4); Fraction fraction3 = new Fraction(-3, 2, 5); Boolean expected1 = true; Boolean expected2 = false; Boolean expected3 = false; // action Boolean actual1 = fraction1.IsWholeNumber(); Boolean actual2 = fraction2.IsWholeNumber(); Boolean actual3 = fraction3.IsWholeNumber(); // assert Assert.AreEqual(expected1, actual1, "Invalid result with one argument; negative whole number."); Assert.AreEqual(expected2, actual2, "Invalid result with two arguments; negative fraction."); Assert.AreEqual(expected3, actual3, "Invalid result with three arguments; negative mixed number."); }
/// <summary> /// MakeImproper - converts a mixed fraction or whole number to an improper fraction. /// </summary> /// <param name="fraction">Fraction to to convert.</param> /// <returns>Proper or Improper Fraction.</returns> public static Fraction MakeImproper(Fraction fraction) { // Check for mixed number fractions if (fraction.IsMixedNumber()){ // Check whole part for negative sign if(fraction.WholePart < 0) { // Convert a mixed number fraction to an improper fraction return new Fraction( -1 * (fraction.Denominator * Math.Abs(fraction.WholePart) + fraction.Numerator), fraction.Denominator); } else { // Convert a mixed number fraction to an improper fraction return new Fraction((fraction.Denominator * fraction.WholePart) + fraction.Numerator, fraction.Denominator); } } else if (fraction.IsWholeNumber()) { // Convert a whole number to an improper fraction return new Fraction(fraction.WholePart, 1); } else { // If not improper fraction, return original fraction return new Fraction(fraction.Numerator, fraction.Denominator); } }
/// <summary> /// MakeDecimal - provides the "decimal" version of a fraction. /// </summary> /// <param name="fraction"></param> /// <returns>Decimal</returns> public static decimal MakeDecimal(Fraction fraction) { Fraction prepFraction; if(fraction.IsWholeNumber()) { // whole number return (decimal)fraction.WholePart; } else { // fractions // Convert fractions to improper fraction format (returns the same fraction if it's proper fraction.) prepFraction = FractionOperations.MakeImproper(fraction); return ((decimal)prepFraction.Numerator / (decimal)prepFraction.Denominator); } }