package test;
import junit.framework.TestCase;
public class Jtest extends TestCase {
Number fraction;
Number complex;
@Override
protected void setUp() throws Exception {
fraction=new Fraction(5,3);
complex=new Complex(3,4);
}
@Override
protected void tearDown() throws Exception {
fraction=null;
complex=null;
}
public void testFractionCompare(){
assertEquals(0.6, fraction.getValue());
}
public void testFractionToString(){
assertEquals(1, fraction.compare(new Fraction(6,3)));
}
public void testFractionGetValue(){
assertEquals("3/5", fraction.toString());
}
public void testComplexCompare(){
assertEquals(5.0, complex.getValue());
}
public void testComplexToString(){
assertEquals(-1, complex.compare(new Complex(7,8)));
}
public void testComplexGetValue(){
assertEquals("3+4i", complex.toString());
}
}
interface Number{
int compare(Number n); //比較自己和另外壹個抽象數n的大小,返回1表示前者大,0表示相等,-1表示自己比n小
double getValue(); //取得自己代表的實際值
String toString(); //輸出自己內部存儲的數
}
class Fraction implements Number{
private int denominator;
private int numerator;
public Fraction() {
super();
}
public Fraction(int denominator, int numerator) {
super();
this.denominator = denominator;
this.numerator = numerator;
}
public int compare(Number n) {
double result=this.getValue()-n.getValue();
return result==0?0:(result>0?1:-1);
}
public double getValue() {
return ((double)numerator)/denominator;
}
public int getDenominator() {
return denominator;
}
public void setDenominator(int denominator) {
if(denominator==0){
throw new ArithmeticException("The denominator can't be zero.");
}else{
this.denominator = denominator;
}
}
public int getNumerator() {
return numerator;
}
public void setNumerator(int numerator) {
this.numerator = numerator;
}
@Override
public String toString() {
return this.getNumerator()+"/"+this.getDenominator();
}
}
class Complex implements Number{
int actualNumber;
int imaginaryNumber;
public Complex() {
super();
}
public Complex(int actualNumber, int imaginaryNumber) {
super();
this.actualNumber = actualNumber;
this.imaginaryNumber = imaginaryNumber;
}
public int compare(Number n) {
double result=this.getValue()-n.getValue();
return result==0?0:(result>0?1:-1);
}
public double getValue() {
return Math.sqrt(actualNumber*actualNumber+imaginaryNumber*imaginaryNumber);
}
public int getActualNumber() {
return actualNumber;
}
public void setActualNumber(int actualNumber) {
this.actualNumber = actualNumber;
}
public int getImaginaryNumber() {
return imaginaryNumber;
}
public void setImaginaryNumber(int imaginaryNumber) {
this.imaginaryNumber = imaginaryNumber;
}
@Override
public String toString() {
return this.getActualNumber()+"+"+this.getImaginaryNumber()+"i";
}
}