1/*
2 *  Licensed to the Apache Software Foundation (ASF) under one or more
3 *  contributor license agreements.  See the NOTICE file distributed with
4 *  this work for additional information regarding copyright ownership.
5 *  The ASF licenses this file to You under the Apache License, Version 2.0
6 *  (the "License"); you may not use this file except in compliance with
7 *  the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 */
17
18package java.lang;
19
20/**
21 * Thrown when an assertion has failed.
22 *
23 * @since 1.4
24 */
25public class AssertionError extends Error {
26
27    private static final long serialVersionUID = -5013299493970297370L;
28
29    /**
30     * Constructs a new {@code AssertionError} with no message.
31     */
32    public AssertionError() {
33        super();
34    }
35
36    /**
37     * Constructs a new {@code AssertionError} with a message based on calling
38     * {@link String#valueOf(Object)} with the specified object. If the object
39     * is an instance of {@link Throwable}, then it also becomes the cause of
40     * this error.
41     *
42     * @param detailMessage
43     *            the object to be converted into the detail message and
44     *            optionally the cause.
45     */
46    public AssertionError(Object detailMessage) {
47        super(String.valueOf(detailMessage),
48                (detailMessage instanceof Throwable ? (Throwable) detailMessage
49                        : null));
50    }
51
52    /**
53     * Constructs a new {@code AssertionError} with a message based on calling
54     * {@link String#valueOf(boolean)} with the specified boolean value.
55     *
56     * @param detailMessage
57     *            the value to be converted into the message.
58     */
59    public AssertionError(boolean detailMessage) {
60        this(String.valueOf(detailMessage));
61    }
62
63    /**
64     * Constructs a new {@code AssertionError} with a message based on calling
65     * {@link String#valueOf(char)} with the specified character value.
66     *
67     * @param detailMessage
68     *            the value to be converted into the message.
69     */
70    public AssertionError(char detailMessage) {
71        this(String.valueOf(detailMessage));
72    }
73
74    /**
75     * Constructs a new {@code AssertionError} with a message based on calling
76     * {@link String#valueOf(int)} with the specified integer value.
77     *
78     * @param detailMessage
79     *            the value to be converted into the message.
80     */
81    public AssertionError(int detailMessage) {
82        this(Integer.toString(detailMessage));
83    }
84
85    /**
86     * Constructs a new {@code AssertionError} with a message based on calling
87     * {@link String#valueOf(long)} with the specified long value.
88     *
89     * @param detailMessage
90     *            the value to be converted into the message.
91     */
92    public AssertionError(long detailMessage) {
93        this(Long.toString(detailMessage));
94    }
95
96    /**
97     * Constructs a new {@code AssertionError} with a message based on calling
98     * {@link String#valueOf(float)} with the specified float value.
99     *
100     * @param detailMessage
101     *            the value to be converted into the message.
102     */
103    public AssertionError(float detailMessage) {
104        this(Float.toString(detailMessage));
105    }
106
107    /**
108     * Constructs a new {@code AssertionError} with a message based on calling
109     * {@link String#valueOf(double)} with the specified double value.
110     *
111     * @param detailMessage
112     *            the value to be converted into the message.
113     */
114    public AssertionError(double detailMessage) {
115        this(Double.toString(detailMessage));
116    }
117}
118