001// *************************************************************************************************************************** 002// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file * 003// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file * 004// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance * 005// * with the License. You may obtain a copy of the License at * 006// * * 007// * http://www.apache.org/licenses/LICENSE-2.0 * 008// * * 009// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an * 010// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the * 011// * specific language governing permissions and limitations under the License. * 012// *************************************************************************************************************************** 013package org.apache.juneau.assertions; 014 015import java.io.*; 016import java.util.*; 017import java.util.function.*; 018 019import org.apache.juneau.internal.*; 020import org.apache.juneau.serializer.*; 021 022/** 023 * Used for assertion calls against Java beans. 024 * 025 * <h5 class='section'>Example:</h5> 026 * <p class='bjava'> 027 * <jc>// Validates the specified list contains 3 beans with the specified values for the 'foo' property.</jc> 028 * <jsm>assertBeanList</jsm>(<jv>myBeanList</jv>) 029 * .asProperty(<js>"foo"</js>) 030 * .is(<js>"bar"</js>,<js>"baz"</js>,<js>"qux"</js>); 031 * </p> 032 * 033 * 034 * <h5 class='section'>Test Methods:</h5> 035 * <p> 036 * <ul class='javatree'> 037 * <li class='jc'>{@link FluentListAssertion} 038 * <ul class='javatreec'> 039 * <li class='jm'>{@link FluentListAssertion#isHas(Object...) isHas(Object...)} 040 * <li class='jm'>{@link FluentListAssertion#isEach(Predicate...) isEach(Predicate...)} 041 * </ul> 042 * <li class='jc'>{@link FluentCollectionAssertion} 043 * <ul class='javatreec'> 044 * <li class='jm'>{@link FluentCollectionAssertion#isEmpty() isEmpty()} 045 * <li class='jm'>{@link FluentCollectionAssertion#isNotEmpty() isNotEmpty()} 046 * <li class='jm'>{@link FluentCollectionAssertion#isContains(Object) isContains(Object)} 047 * <li class='jm'>{@link FluentCollectionAssertion#isNotContains(Object) isNotContains(Object)} 048 * <li class='jm'>{@link FluentCollectionAssertion#isAny(Predicate) isAny(Predicate)} 049 * <li class='jm'>{@link FluentCollectionAssertion#isAll(Predicate) isAll(Predicate)} 050 * <li class='jm'>{@link FluentCollectionAssertion#isSize(int size) isSize(int size)} 051 * </ul> 052 * <li class='jc'>{@link FluentObjectAssertion} 053 * <ul class='javatreec'> 054 * <li class='jm'>{@link FluentObjectAssertion#isExists() isExists()} 055 * <li class='jm'>{@link FluentObjectAssertion#is(Object) is(Object)} 056 * <li class='jm'>{@link FluentObjectAssertion#is(Predicate) is(Predicate)} 057 * <li class='jm'>{@link FluentObjectAssertion#isNot(Object) isNot(Object)} 058 * <li class='jm'>{@link FluentObjectAssertion#isAny(Object...) isAny(Object...)} 059 * <li class='jm'>{@link FluentObjectAssertion#isNotAny(Object...) isNotAny(Object...)} 060 * <li class='jm'>{@link FluentObjectAssertion#isNull() isNull()} 061 * <li class='jm'>{@link FluentObjectAssertion#isNotNull() isNotNull()} 062 * <li class='jm'>{@link FluentObjectAssertion#isString(String) isString(String)} 063 * <li class='jm'>{@link FluentObjectAssertion#isJson(String) isJson(String)} 064 * <li class='jm'>{@link FluentObjectAssertion#isSame(Object) isSame(Object)} 065 * <li class='jm'>{@link FluentObjectAssertion#isSameJsonAs(Object) isSameJsonAs(Object)} 066 * <li class='jm'>{@link FluentObjectAssertion#isSameSortedJsonAs(Object) isSameSortedJsonAs(Object)} 067 * <li class='jm'>{@link FluentObjectAssertion#isSameSerializedAs(Object, WriterSerializer) isSameSerializedAs(Object, WriterSerializer)} 068 * <li class='jm'>{@link FluentObjectAssertion#isType(Class) isType(Class)} 069 * <li class='jm'>{@link FluentObjectAssertion#isExactType(Class) isExactType(Class)} 070 * </ul> 071 * </ul> 072 * 073 * <h5 class='section'>Transform Methods:</h5> 074 * <p> 075 * <ul class='javatree'> 076 * <li class='jc'>{@link FluentBeanListAssertion} 077 * <ul class='javatreec'> 078 * <li class='jm'>{@link FluentBeanListAssertion#asPropertyMaps(String...) asPropertyMaps(String...)} 079 * <li class='jm'>{@link FluentBeanListAssertion#asProperty(String) asProperty(String)} 080 * </ul> 081 * <li class='jc'>{@link FluentListAssertion} 082 * <ul class='javatreec'> 083 * <li class='jm'>{@link FluentListAssertion#asStrings() asStrings()} 084 * <li class='jm'>{@link FluentListAssertion#asStrings(Function) asStrings(Function)} 085 * <li class='jm'>{@link FluentListAssertion#asCdl() asCdl()} 086 * <li class='jm'>{@link FluentListAssertion#asCdl(Function) asCdl(Function)} 087 * <li class='jm'>{@link FluentListAssertion#asItem(int) item(int)} 088 * <li class='jm'>{@link FluentListAssertion#asSorted() sorted()} 089 * <li class='jm'>{@link FluentListAssertion#asSorted(Comparator) sorted(Comparator)} 090 * </ul> 091 * <li class='jc'>{@link FluentCollectionAssertion} 092 * <ul class='javatreec'> 093 * <li class='jm'>{@link FluentCollectionAssertion#asStrings() asStrings()} 094 * <li class='jm'>{@link FluentCollectionAssertion#asSize() size()} 095 * </ul> 096 * <li class='jc'>{@link FluentObjectAssertion} 097 * <ul class='javatreec'> 098 * <li class='jm'>{@link FluentObjectAssertion#asString() asString()} 099 * <li class='jm'>{@link FluentObjectAssertion#asString(WriterSerializer) asString(WriterSerializer)} 100 * <li class='jm'>{@link FluentObjectAssertion#asString(Function) asString(Function)} 101 * <li class='jm'>{@link FluentObjectAssertion#asJson() asJson()} 102 * <li class='jm'>{@link FluentObjectAssertion#asJsonSorted() asJsonSorted()} 103 * <li class='jm'>{@link FluentObjectAssertion#asTransformed(Function) asApplied(Function)} 104 * <li class='jm'>{@link FluentObjectAssertion#asAny() asAny()} 105 * </ul> 106 * </ul> 107 * 108 * <h5 class='section'>Configuration Methods:</h5> 109 * <p> 110 * <ul class='javatree'> 111 * <li class='jc'>{@link Assertion} 112 * <ul class='javatreec'> 113 * <li class='jm'>{@link Assertion#setMsg(String, Object...) setMsg(String, Object...)} 114 * <li class='jm'>{@link Assertion#setOut(PrintStream) setOut(PrintStream)} 115 * <li class='jm'>{@link Assertion#setSilent() setSilent()} 116 * <li class='jm'>{@link Assertion#setStdOut() setStdOut()} 117 * <li class='jm'>{@link Assertion#setThrowable(Class) setThrowable(Class)} 118 * </ul> 119 * </ul> 120 * 121 * <h5 class='section'>See Also:</h5><ul> 122 * <li class='link'><a class="doclink" href="../../../../index.html#ja.Overview">Overview > juneau-assertions > Overview</a> 123 * </ul> 124 * 125 * @param <E> The bean type. 126 */ 127@FluentSetters(returns="BeanListAssertion<E>") 128public class BeanListAssertion<E> extends FluentBeanListAssertion<E,BeanListAssertion<E>> { 129 130 //----------------------------------------------------------------------------------------------------------------- 131 // Static 132 //----------------------------------------------------------------------------------------------------------------- 133 134 /** 135 * Static creator. 136 * 137 * @param <E> The element type. 138 * @param value 139 * The object being tested. 140 * <br>Can be <jk>null</jk>. 141 * @return A new assertion object. 142 */ 143 public static <E> BeanListAssertion<E> create(List<E> value) { 144 return new BeanListAssertion<>(value); 145 } 146 147 //----------------------------------------------------------------------------------------------------------------- 148 // Instance 149 //----------------------------------------------------------------------------------------------------------------- 150 151 /** 152 * Constructor. 153 * 154 * @param value 155 * The object being tested. 156 * <br>Can be <jk>null</jk>. 157 */ 158 public BeanListAssertion(List<E> value) { 159 super(value, null); 160 } 161 162 //----------------------------------------------------------------------------------------------------------------- 163 // Fluent setters 164 //----------------------------------------------------------------------------------------------------------------- 165 166 // <FluentSetters> 167 168 @Override /* GENERATED - org.apache.juneau.assertions.Assertion */ 169 public BeanListAssertion<E> setMsg(String msg, Object...args) { 170 super.setMsg(msg, args); 171 return this; 172 } 173 174 @Override /* GENERATED - org.apache.juneau.assertions.Assertion */ 175 public BeanListAssertion<E> setOut(PrintStream value) { 176 super.setOut(value); 177 return this; 178 } 179 180 @Override /* GENERATED - org.apache.juneau.assertions.Assertion */ 181 public BeanListAssertion<E> setSilent() { 182 super.setSilent(); 183 return this; 184 } 185 186 @Override /* GENERATED - org.apache.juneau.assertions.Assertion */ 187 public BeanListAssertion<E> setStdOut() { 188 super.setStdOut(); 189 return this; 190 } 191 192 @Override /* GENERATED - org.apache.juneau.assertions.Assertion */ 193 public BeanListAssertion<E> setThrowable(Class<? extends java.lang.RuntimeException> value) { 194 super.setThrowable(value); 195 return this; 196 } 197 198 // </FluentSetters> 199}