001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.juneau.bct.assertions;
018
019import java.io.*;
020import java.util.function.*;
021
022
023/**
024 * Used for assertion calls against booleans.
025 *
026 * <h5 class='section'>Test Methods:</h5>
027 * <p>
028 * <ul class='javatree'>
029 *    <li class='jc'>{@link FluentBooleanAssertion}
030 *    <ul class='javatreec'>
031 *       <li class='jm'>{@link FluentBooleanAssertion#isTrue() isTrue()}
032 *       <li class='jm'>{@link FluentBooleanAssertion#isFalse() isFalse()}
033 *    </ul>
034 *    <li class='jc'>{@link FluentComparableAssertion}
035 *    <ul class='javatreec'>
036 *       <li class='jm'>{@link FluentComparableAssertion#isGt(Comparable) isGt(Comparable)}
037 *       <li class='jm'>{@link FluentComparableAssertion#isGte(Comparable) isGte(Comparable)}
038 *       <li class='jm'>{@link FluentComparableAssertion#isLt(Comparable) isLt(Comparable)}
039 *       <li class='jm'>{@link FluentComparableAssertion#isLte(Comparable) isLte(Comparable)}
040 *       <li class='jm'>{@link FluentComparableAssertion#isBetween(Comparable,Comparable) isBetween(Comparable,Comparable)}
041  *   </ul>
042 *    <li class='jc'>{@link FluentObjectAssertion}
043 *    <ul class='javatreec'>
044 *       <li class='jm'>{@link FluentObjectAssertion#isExists() isExists()}
045 *       <li class='jm'>{@link FluentObjectAssertion#is(Object) is(Object)}
046 *       <li class='jm'>{@link FluentObjectAssertion#is(Predicate) is(Predicate)}
047 *       <li class='jm'>{@link FluentObjectAssertion#isNot(Object) isNot(Object)}
048 *       <li class='jm'>{@link FluentObjectAssertion#isAny(Object...) isAny(Object...)}
049 *       <li class='jm'>{@link FluentObjectAssertion#isNotAny(Object...) isNotAny(Object...)}
050 *       <li class='jm'>{@link FluentObjectAssertion#isNull() isNull()}
051 *       <li class='jm'>{@link FluentObjectAssertion#isNotNull() isNotNull()}
052 *       <li class='jm'>{@link FluentObjectAssertion#isString(String) isString(String)}
053 *       <li class='jm'>{@link FluentObjectAssertion#isSame(Object) isSame(Object)}
054 *       <li class='jm'>{@link FluentObjectAssertion#isType(Class) isType(Class)}
055 *       <li class='jm'>{@link FluentObjectAssertion#isExactType(Class) isExactType(Class)}
056 *    </ul>
057 * </ul>
058 *
059 * <h5 class='section'>Transform Methods:</h5>
060 * <p>
061 * <ul class='javatree'>
062 *    <li class='jc'>{@link FluentObjectAssertion}
063 *    <ul class='javatreec'>
064 *       <li class='jm'>{@link FluentObjectAssertion#asString() asString()}
065 *       <li class='jm'>{@link FluentObjectAssertion#asString(ThrowingFunction) asString(ThrowingFunction)}
066 *       <li class='jm'>{@link FluentObjectAssertion#asTransformed(UnaryOperator) asTransformed(UnaryOperator)}
067 *       <li class='jm'>{@link FluentObjectAssertion#asAny() asAny()}
068 * </ul>
069 * </ul>
070 *
071 * <h5 class='section'>Configuration Methods:</h5>
072 * <p>
073 * <ul class='javatree'>
074 *    <li class='jc'>{@link Assertion}
075 *    <ul class='javatreec'>
076 *       <li class='jm'>{@link Assertion#setMsg(String, Object...) setMsg(String, Object...)}
077 *       <li class='jm'>{@link Assertion#setOut(PrintStream) setOut(PrintStream)}
078 *       <li class='jm'>{@link Assertion#setSilent() setSilent()}
079 *       <li class='jm'>{@link Assertion#setStdOut() setStdOut()}
080 *       <li class='jm'>{@link Assertion#setThrowable(Class) setThrowable(Class)}
081 *    </ul>
082 * </ul>
083 *
084 * <h5 class='section'>See Also:</h5><ul>
085 *    <li class='link'><a class="doclink" href="https://juneau.apache.org/docs/topics/JuneauEcosystemOverview">Juneau Ecosystem</a>
086 * </ul>
087 */
088@SuppressWarnings({
089   "java:S110" // Inheritance depth acceptable for BooleanAssertion hierarchy
090})
091public class BooleanAssertion extends FluentBooleanAssertion<BooleanAssertion> {
092
093   /**
094    * Static creator.
095    *
096    * @param value
097    *    The object being tested.
098    *    <br>Can be <jk>null</jk> (assertions such as {@code isNull()} then operate on the absence of a value).
099    * @return A new assertion object.
100    */
101   public static BooleanAssertion create(Boolean value) {
102      return new BooleanAssertion(value);
103   }
104
105   /**
106    * Constructor.
107    *
108    * @param value
109    *    The object being tested.
110    *    <br>Can be <jk>null</jk> (assertions such as {@code isNull()} then operate on the absence of a value).
111    */
112   public BooleanAssertion(Boolean value) {
113      super(value, null);
114   }
115
116   @Override /* Overridden from Assertion */
117   public BooleanAssertion setMsg(String msg, Object...args) {
118      super.setMsg(msg, args);
119      return this;
120   }
121
122   @Override /* Overridden from Assertion */
123   public BooleanAssertion setOut(PrintStream value) {
124      super.setOut(value);
125      return this;
126   }
127
128   @Override /* Overridden from Assertion */
129   public BooleanAssertion setSilent() {
130      super.setSilent();
131      return this;
132   }
133
134   @Override /* Overridden from Assertion */
135   public BooleanAssertion setStdOut() {
136      super.setStdOut();
137      return this;
138   }
139
140   @Override /* Overridden from Assertion */
141   public BooleanAssertion setThrowable(Class<? extends RuntimeException> value) {
142      super.setThrowable(value);
143      return this;
144   }
145}