View Javadoc

1   /*
2    * The JUnit-addons Software License, Version 1.0
3    *     (based on the Apache Software License, Version 1.1)
4    *
5    * Copyright (c) 2002-2003 Vladimir R. Bossicard.  All rights reserved.
6    *
7    * Redistribution and use in source and binary forms, with or without
8    * modification, are permitted provided that the following conditions
9    * are met:
10   *
11   * 1. Redistributions of source code must retain the above copyright
12   *    notice, this list of conditions and the following disclaimer.
13   *
14   * 2. Redistributions in binary form must reproduce the above copyright
15   *    notice, this list of conditions and the following disclaimer in
16   *    the documentation and/or other materials provided with the
17   *    distribution.
18   *
19   * 3. The end-user documentation included with the redistribution, if
20   *    any, must include the following acknowlegement:
21   *       "This product includes software developed by Vladimir R.
22   *        Bossicard as well as other contributors
23   *        (http://junit-addons.sourceforge.net/)."
24   *    Alternately, this acknowlegement may appear in the software itself,
25   *    if and wherever such third-party acknowlegements normally appear.
26   *
27   * 4. The name "JUnit-addons" must not be used to endorse or promote
28   *    products derived from this software without prior written
29   *    permission. For written permission, please contact
30   *    vbossica@users.sourceforge.net.
31   *
32   * 5. Products derived from this software may not be called "JUnit-addons"
33   *    nor may "JUnit-addons" appear in their names without prior written
34   *    permission of the project managers.
35   *
36   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
40   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47   * SUCH DAMAGE.
48   * ======================================================================
49   *
50   * This software consists of voluntary contributions made by many
51   * individuals.  For more information on the JUnit-addons Project, please
52   * see <http://junit-addons.sourceforge.net/>.
53   */
54  
55  package junitx.framework;
56  
57  /**
58   * A set of assert methods specially targetted to asserting objects.
59   *
60   * @version $Revision: 1.7 $ $Date: 2003/04/27 02:14:33 $
61   * @author <a href="mailto:vbossica@users.sourceforge.net">Vladimir R. Bossicard</a>
62   */
63  public class ObjectAssert {
64  
65      /**
66       * Don't let anyone have access to this constructor.
67       */
68      private ObjectAssert() {
69      }
70  
71      /**
72       * Asserts that an object is an instance of a class.  Throws an
73       * <tt>AssertionFailedError</tt> if it is not an instance of that class.
74       */
75      public static void assertInstanceOf(String message,
76                                          Class expected,
77                                          Object actual) {
78          if (expected.isInstance(actual)) {
79              return;
80          }
81          failInstanceOf(message, expected, actual);
82      }
83  
84      /**
85       * Asserts that an object is an instance of a class.  Throws an
86       * <tt>AssertionFailedError</tt> if it is not an instance of that class.
87       */
88      public static void assertInstanceOf(Class expected,
89                                          Object actual) {
90          assertInstanceOf(null, expected, actual);
91      }
92  
93      /**
94       * Asserts that an object is not an instance of a class.  Throws an
95       * <tt>AssertionFailedError</tt> if it is an instance of that class.
96       */
97      public static void assertNotInstanceOf(String message,
98                                             Class expected,
99                                             Object actual) {
100         if (!expected.isInstance(actual)) {
101             return;
102         }
103         failNotInstanceOf(message, expected);
104     }
105 
106     /**
107      * Asserts that an object is not an instance of a class.  Throws an
108      * <tt>AssertionFailedError</tt> if it is an instance of that class.
109      */
110     public static void assertNotInstanceOf(Class expected,
111                                            Object actual) {
112         assertNotInstanceOf(null, expected, actual);
113     }
114 
115     /**
116      * Asserts that an object are the same.  Throws an
117      * <tt>AssertionFailedError</tt> if they are not (including the objects' 
118      * values).
119      */
120     public static void assertSame(Object expected,
121                                     Object actual) {
122         assertSame(null, expected, actual);
123     }
124 
125     /**
126      * Asserts that an object are the same.  Throws an
127      * <tt>AssertionFailedError</tt> if they are not  (including the objects' 
128      * values).
129      */
130     public static void assertSame(String message, 
131                                     Object expected,
132                                     Object actual) {
133         if (expected == actual) {
134             return;
135         }
136         failSame(message, expected, actual);
137     }
138 
139     /**
140      * Asserts that an object are not the same.  Throws an
141      * <tt>AssertionFailedError</tt> if they are.
142      */
143     public static void assertNotSame(Object expected,
144                                        Object actual) {
145         assertNotSame(null, expected, actual);
146     }
147 
148     /**
149      * Asserts that an object are not the same.  Throws an
150      * <tt>AssertionFailedError</tt> if they are.
151      */
152     public static void assertNotSame(String message, 
153                                        Object expected,
154                                        Object actual) {
155         if (expected != actual) {
156             return;
157         }
158         failNotSame(message, expected);
159     }
160 
161     static private void failInstanceOf(String message,
162                                        Class expected,
163                                        Object actual) {
164         String formatted = "";
165         if (message != null) {
166             formatted = message + " ";
167         }
168 
169         Assert.fail(formatted + "expected instance of class: <" + expected.getName() + "> but was of class: <" + actual.getClass().getName() + ">");
170     }
171 
172     static private void failNotInstanceOf(String message,
173                                           Class expected) {
174         String formatted = "";
175         if (message != null) {
176             formatted = message + " ";
177         }
178 
179         Assert.fail(formatted + "expected not instance of class: <" + expected.getName() + ">");
180     }
181 
182     static private void failSame(String message,
183                                    Object expected,
184                                    Object actual) {
185        String formatted = "";
186        if (message != null) {
187            formatted = message + " ";
188        }
189 
190        Assert.fail(formatted + "expected same as : <" + expected + "> but was <" + actual + ">");
191     }
192     
193     static private void failNotSame(String message,
194                                       Object expected) {
195        String formatted = "";
196        if (message != null) {
197            formatted = message + " ";
198        }
199 
200        Assert.fail(formatted + "expected not same as : <" + expected + ">");
201     }
202     
203 }