Link to home
Create AccountLog in
Avatar of Mickeys
MickeysFlag for Sweden

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



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

SOLUTION
Avatar of sweetfa2
sweetfa2
Flag of Australia image

Link to home
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
See answer
Avatar of Mick Barry
>     public String ToString()

should be toString()
Avatar of Mickeys

ASKER

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


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


Avatar of Mickeys

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
Link to home
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
Avatar of Mickeys

ASKER

eh you mean put the things in the link into my toString?
yes, you need to format the value returned by t.convertToCentimetre(length, this)
SOLUTION
Link to home
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);
    }

Open in new window

Avatar of Mickeys

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?
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
Avatar of Mickeys

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());
      }
Or you can choose the Locale at runtime
java -Duser.country=GB -Duser.language=en YourApp

Open in new window

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
Avatar of Mickeys

ASKER

Using ksivananth code solved the error.