Package fraction

Source Code of fraction.FractionTest

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package fraction;

import fraction.Fraction;
import junit.framework.Assert;
import junit.framework.TestCase;
import no.hal.jex.runtime.JExercise;

/**
*
* @author bjorncs og hal
*
*/

@JExercise(
    description="Fraction-klassen skal representere en brøk (teller og nevner)." +
        "Det skal være mulig å kunne utføre vanlige regneoperasjoner som pluss, minus, deling og multplikasjon på instanser av klassen, samt kunne hente ut verdien som en double." +
        "Når du implementerer klassen skal du spesifisere synlighet på felter og metoder (Hint: Innkapsling).",
    comment="Alle former for utregning skal bruke teller og nevner (ikke flyttallsberegninger), og resultatet skal alltid være en ny brøk." +
        "Når klassen er ferdig skal den kunne brukes på denne måten:" +
        "<p><code>" +
        "Fraction f1 = new Fraction(2, 3);<br>" +
        "Fraction f2 = new Fraction(4, 3);<br>" +
        "Fraction result1 = f1.add(f2);<br>" +
        "Fraction result2 = f1.substract(f2);<br>" +
        "println(result1.toString()); // Skriver ut 2/1<br>" +
        "println(result2.toString()); // Skriver ut -2/3<br>" +
        "println(result1.asDouble()); // Skriver ut 2.0<br>" +
        "println(f1.getNumerator()); // Skriver 2<br>" +
        "println(f1.getDenominator()); // Skriver 3<br>" +
        "</code>"
    )

public class FractionTest extends TestCase {

  @JExercise(
      tests="Fraction(int,int); int getNumerator(); int getDenominator()",
      description="Konstruktøren skal ta inn en teller og en nevner som heltall. Lag også gettere for teller og nevner hhv. getNumerator og getDenominator."
      )
  public void testFraction() {
    Fraction fraction = new Fraction(4, 5);
    Assert.assertEquals(4, fraction.getNumerator());
    Assert.assertEquals(5, fraction.getDenominator());
  }

  @JExercise(
      tests="toString()",
      description="toString-metoden skal returnere en streng som representerer brøken. Strengen skal være på formen 3/4, 12/11, -2/3 etc."
      )
  public void testToString() {
    Fraction fraction = new Fraction(4, 5);
    Assert.assertEquals("4/5", fraction.toString());
  }

  @JExercise(
      tests="double asDouble()",
      description="asDouble()-metoden returnerer brøken som et desimaltall (returverdi av type double)."
      )
  public void testAsDouble() {
    Fraction fraction = new Fraction(1, 8);
    Assert.assertEquals(1.0/8.0, fraction.asDouble());
  }

  @JExercise(
      tests="private boolean simplify()",
      description="Når vi utfører en regneoperasjon med 2 brøker, får vi ofte en brøk som kan forenkles." +
          "For eksempel:  ⅔ + 4/3 == 6/3 == 2/1, Eller 7/10 - ⅕ == 5/10 == ½." +
          "Lag hjelpemetoden simplify() som forenkler brøken. Den skal endre feltene for teller og nevner slik at brøken blir forenklet mest mulig." +
          "Den skal også sørge for at kun teller kan være negativ. Gjør om konstruktøren slik at den bruker simplify()." +
          "Gi metoden en relevant synlighet (Hint: når og hvor skal metoden brukes).",
      comment="Eksempel på hvordan simplify vil fungere:" +
          "<p><code>" +
          "Fraction f1 = new Fraction(3, 15); // simplify vil forenkle brøken til 1/3<br>" +
          "println(f1); // Skriver ut 1/3<br>" +
          "println(f1.asDouble()); //Skriver ut 0.3333......<br>" +
          "println(f1.getNumerator()); //Skriver 1<br>" +
          "println(f1.getDenominator()); //Skriver 3<br>" +
          "</code>"
      )
  public void testSimplify() {
    Fraction fraction = new Fraction(2, -8);
    Assert.assertEquals(-1, fraction.getNumerator());
    Assert.assertEquals(4, fraction.getDenominator());
  }

  @JExercise(
      tests="Fraction add(Fraction)",
      description="add-metoden tar inn et Fraction-objekt og regner ut summen av parameteren og objektet som metoden blir kalt på." +
          "Den skal returnere et nytt Fraction-objekt, det originale Fraction-objektet skal ikke blir endret!"
      )
  public void testAdd() {
    Fraction fraction1 = new Fraction(3, 2);
    Fraction fraction2 = new Fraction(3, 2);
    Fraction result = fraction1.add(fraction2);
    Assert.assertEquals(3.0, result.asDouble());
  }

  @JExercise(
      tests="Fraction multiply(Fraction)",
      description="multiply-metoden tar inn et Fraction-objekt og regner ut produktet av parameteren og objektet som metoden blir kalt på." +
          "Den skal returnere et nytt Fraction-objekt, det originale Fraction-objektet skal ikke blir endret!"
      )
  public void testMultipy() {
    Fraction fraction1 = new Fraction(3, 2);
    Fraction fraction2 = new Fraction(2, 1);
    Fraction result = fraction1.multiply(fraction2);
    Assert.assertEquals(3.0, result.asDouble());
  }

  @JExercise(
      tests="Fraction substract(Fraction)",
      description="substract-metoden tar inn et Fraction-objekt og regner ut differansen mellom objektet som metoden blir kalt på og parameteren, altså this - parameteret." +
          "Den skal returnere et nytt Fraction-objekt, det originale Fraction-objektet skal ikke blir endret!"
      )
  public void testSubstract() {
    Fraction fraction1 = new Fraction(5, 2);
    Fraction fraction2 = new Fraction(3, 2);
    Fraction result = fraction1.substract(fraction2);
    Assert.assertEquals(1.0, result.asDouble());
  }

  @JExercise(
      tests="Fraction divide(Fraction)",
      description="divide-metoden tar inn et Fraction-objekt og deler objektet på parameteren, altså this / parameteret." +
          "Den skal returnere et nytt Fraction-objekt, det originale Fraction-objektet skal ikke blir endret!"
      )
  public void testDivide() {
    Fraction fraction1 = new Fraction(18, 2);
    Fraction fraction2 = new Fraction(3, 1);
    Fraction result = fraction1.divide(fraction2);
    Assert.assertEquals(3.0, result.asDouble());
  }
}
TOP

Related Classes of fraction.FractionTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.