Mickeys
asked on
ToString with assertEquals
I guess it is to easy but I cant solve this.......
how shall the toString class be for this???
public void testToString()
{
assertEquals("En aln är 59.4 centimeter.", mMeasure4.toString());
assertEquals("En tvärhand är 9.88 centimeter.", mMeasure2.toString());
}
how shall the toString class be for this???
public void testToString()
{
assertEquals("En aln är 59.4 centimeter.", mMeasure4.toString());
assertEquals("En tvärhand är 9.88 centimeter.", mMeasure2.toString());
}
public class OldMeasureTest extends junit.framework.TestCase
{
private Transform mTransfor1;
private Measure mMeasure1;
private Measure mMeasure2;
private Measure mMeasure3;
private Measure mMeasure4;
private int mMetre, mDeciMetre;
public OldMeasureTest()
{
}
protected void setUp()
{
mTransfor1 = new Transform();
mMeasure1 = new Measure("tum", 2.47);
mMeasure2 = new Measure("tvärhand", (4 * mMeasure1.getLength()));
mMeasure3 = new Measure("fot", 29.7);
mMeasure4 = new Measure("aln", 59.4);
mMetre = 100;
mDeciMetre = 10;
}
protected void tearDown()
{
}
public void testConvertToCentimetre()
{
assertEquals(7.41, mTransfor1.convertToCentimetre(3, mMeasure1));
assertEquals(39.52, mTransfor1.convertToCentimetre(4, mMeasure2));
}
public void testConvertFromCentimetre()
{
assertEquals(3.367003367003367, mTransfor1.convertFromCentimetre(mMetre, mMeasure3));
assertEquals(0.16835016835016836, mTransfor1.convertFromCentimetre(mDeciMetre, mMeasure4));
}
public void testGetDescription()
{
assertEquals("tvärhand", mMeasure2.getDescription());
assertEquals("fot", mMeasure3.getDescription());
}
public void testGetLength()
{
assertEquals(2.47, mMeasure1.getLength());
assertEquals(59.4, mMeasure4.getLength());
assertEquals(mMetre, (mDeciMetre *10));
}
public void testToString()
{
assertEquals("En aln är 59.4 centimeter.", mMeasure4.toString());
assertEquals("En tvärhand är 9.88 centimeter.", mMeasure2.toString());
}
}
------------------------------------------------
/**
* Write a description of class Measure here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Measure
{
// instance variables - replace the example below with your own
private double length;
private String description;
/**
* Constructor for objects of class Measure
*/
public Measure()
{
// initialise instance variables
this.length = 0f;
}
public Measure(String description, double length)
{
this.length = length;
this.description = description;
}
public double getLength()
{
return length;
}
public String getDescription()
{
return description;
}
public String ToString()
{
Transform t = new Transform();
return "En " +getDescription() +" är " +t.convertToCentimetre(length, this) +" centimeter";
}
}
--------------------------------------------------
/**
* Write a description of class Transform here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Transform
{
// instance variables - replace the example below with your own
private int x;
/**
* Constructor for objects of class Transform
*/
public Transform()
{
// initialise instance variables
x = 0;
}
public double convertToCentimetre(int input, Measure measure)
{
return (double) input * measure.getLength();
}
public double convertFromCentimetre(int cm, Measure measure)
{
return (double) cm / measure.getLength();
}
}
SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
ASKER
Atleast now it compiles. :-) Small problem but I still get the wrong answer......in my test.
Namnl-s.jpg
Namnl-s.jpg
since convertToCentimetre multiplies length with length, you need to compare the result of them,
>>assertEquals("En aln är 59.4 centimeter.", mMeasure4.toString());
assertEquals("En tvärhand är 9.88 centimeter.", mMeasure2.toString());
>>
should be
assertEquals("En aln är " + ( 59.4 * 59.4 ) + " centimeter.", mMeasure4.toString());
assertEquals("En tvärhand är " + ( 9.88 * 9.88 ) + " centimeter.", mMeasure2.toString());
>>assertEquals("En aln är 59.4 centimeter.", mMeasure4.toString());
assertEquals("En tvärhand är 9.88 centimeter.", mMeasure2.toString());
>>
should be
assertEquals("En aln är " + ( 59.4 * 59.4 ) + " centimeter.", mMeasure4.toString());
assertEquals("En tvärhand är " + ( 9.88 * 9.88 ) + " centimeter.", mMeasure2.toString());
ASKER
well that I could do but since I am not allowed to change the test class I cant solve it that way. I have already thought of that.
ASKER CERTIFIED SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
ASKER
eh you mean put the things in the link into my toString?
yes, you need to format the value returned by t.convertToCentimetre(leng th, this)
SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
Try
public String toString() {
return String .format("En %s är %.2f centimeter", description, length);
}
ASKER
Well I get En aln är 59,4 centimeter.
but the correct should be En aln är 59.4 centimeter.
(the dot!)
Shall I use replace or is there another way?
but the correct should be En aln är 59.4 centimeter.
(the dot!)
Shall I use replace or is there another way?
which locale you are in? and what code you use now?
You would choose a different format for a different Locale. That one's using *your* Locale
ASKER
Well I use the code I inputed above and took CHEJ code toString.
But even if it solves the dot.....it wont make any since because then the next will fail
Look here. One decimal....and two decimal.
public void testToString()
{
assertEquals("En aln är 59,4 centimeter.", mMeasure4.toString());
assertEquals("En tvärhand är 9,88 centimeter.", mMeasure2.toString());
}
But even if it solves the dot.....it wont make any since because then the next will fail
Look here. One decimal....and two decimal.
public void testToString()
{
assertEquals("En aln är 59,4 centimeter.", mMeasure4.toString());
assertEquals("En tvärhand är 9,88 centimeter.", mMeasure2.toString());
}
Or you can choose the Locale at runtime
java -Duser.country=GB -Duser.language=en YourApp
I don't think you should be worrying about getting a dot. Leave ti in your own Locale and use the comma decimal separator in your liiterals
ASKER
Using ksivananth code solved the error.
should be toString()