1   //----------------------------------------------------------------------
2   // 
3   // PerfectJPattern: "Design patterns are good but components are better!" 
4   // TestStatusData.java Copyright (c) 2009 Giovanni Azua Garcia
5   // bravegag@hotmail.com
6   //  
7   // This program is free software; you can redistribute it and/or
8   // modify it under the terms of the GNU General Public License
9   // as published by the Free Software Foundation; either version 3
10  // of the License, or (at your option) any later version.
11  //
12  // This program is distributed in the hope that it will be useful,
13  // but WITHOUT ANY WARRANTY; without even the implied warranty of
14  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  // GNU General Public License for more details.
16  //
17  // You should have received a copy of the GNU General Public License
18  // along with this program; if not, see <http://www.gnu.org/licenses/>.
19  //
20  //----------------------------------------------------------------------
21  package org.perfectjpattern.core.behavioral.observer.data;
22  
23  import junit.framework.*;
24  
25  /**
26   * Test Suite for <code>StatusData</code> implementation.
27   *
28   * @see StatusData
29   *
30   * @author <a href="mailto:bravegag@hotmail.com">Giovanni Azua</a>
31   * @version $Revision: 1.0 $ $Date: Jun 23, 2007 1:15:16 AM $
32   */
33  public final 
34  class TestStatusData 
35  extends TestCase 
36  {
37      //------------------------------------------------------------------------
38      // public
39      //------------------------------------------------------------------------
40      public void
41      testValueOf()
42      {
43          StatusData myInstanceOne = new StatusData(Status.STARTED, 
44              "There was a time");
45          StatusData myInstanceTwo = new StatusData(myInstanceOne);
46          
47          assertEquals("valueOf() implemented incorrectly", myInstanceOne, 
48              myInstanceTwo);
49      }
50  
51      //------------------------------------------------------------------------
52      public void
53      testEquals()
54      {
55          assertEquals("equals() implemented incorrectly", StatusData.STARTED, 
56              new StatusData(Status.STARTED, "Task has started."));
57          
58          assertFalse("equals() implemented incorrectly", 
59              StatusData.STARTED.equals(ProgressData.STARTED));
60                 
61          assertFalse("equals() implemented incorrectly", 
62              StatusData.STARTED.equals(null));
63  
64          assertTrue("equals() implemented incorrectly", 
65              !StatusData.STARTED.equals(StatusData.COMPLETED));
66      }
67      
68      //------------------------------------------------------------------------
69      public void
70      testHashcode()
71      {
72          // same hash code => equals true
73          assertTrue("hashCode() implemented incorrectly", 
74              StatusData.STARTED.hashCode() == StatusData.STARTED.hashCode() && 
75                  StatusData.STARTED.equals(StatusData.STARTED));        
76          
77          StatusData myData = 
78              new StatusData(Status.STARTED, "Task has started.");
79  
80          // different hash code may still hold equals true
81          assertTrue("hashCode() implemented incorrectly", 
82              StatusData.STARTED.hashCode() == myData.hashCode() && 
83                  StatusData.STARTED.equals(myData));        
84          
85          // equals false => different hash code
86          assertTrue("hashCode() implemented incorrectly",
87              !StatusData.COMPLETED.equals(myData) &&
88                  StatusData.COMPLETED.hashCode() != myData.hashCode());
89      }    
90  
91      //------------------------------------------------------------------------
92      public void
93      testToString()
94      {
95          assertEquals("toString() implemented incorrectly", 
96              StatusData.STARTED.toString(), 
97              "StatusData(Status='Started', " +
98              "Message='Task has started.')");        
99      }
100 }