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());
}



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();
    }
    
}

Open in new window

MickeysAsked:
Who is Participating?
 
objectsConnect With a Mentor Commented:
you need to format the value in toString() as required by the test

http://helpdesk.objects.com.au/java/how-to-format-a-double-as-a-string
0
 
sweetfa2Connect With a Mentor Commented:
   public String toString()
      {         
          Transform t = new Transform();
          return "En " +getDescription() +" är " +t.convertToCentimetre(length, this) +" centimeter";
      }
0
 
objectsCommented:
>     public String ToString()

should be toString()
0
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

 
MickeysAuthor Commented:
Atleast now it compiles. :-) Small problem but I still get the wrong answer......in my test.


Namnl-s.jpg
0
 
ksivananthCommented:
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());


0
 
MickeysAuthor Commented:
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.
0
 
MickeysAuthor Commented:
eh you mean put the things in the link into my toString?
0
 
objectsCommented:
yes, you need to format the value returned by t.convertToCentimetre(length, this)
0
 
ksivananthConnect With a Mentor Commented:
>>you mean put the things in the link into my toString?

you need to just modify,

public String toString()
      {         
          return "En " +getDescription() +" är " + length +" centimeter";
      }
0
 
CEHJCommented:
Try
    public String toString() {
        return String .format("En %s är %.2f centimeter", description, length);
    }

Open in new window

0
 
MickeysAuthor Commented:
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?
0
 
ksivananthCommented:
which locale you are in? and what code you use now?
0
 
CEHJCommented:
You would choose a different format for a different Locale. That one's using *your* Locale
0
 
MickeysAuthor Commented:
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());
      }
0
 
CEHJCommented:
Or you can choose the Locale at runtime
java -Duser.country=GB -Duser.language=en YourApp

Open in new window

0
 
CEHJCommented:
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
0
 
MickeysAuthor Commented:
Using ksivananth code solved the error.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.