/*
* Copyright 2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package jdave;
import java.util.Collection;
import java.util.Iterator;
import jdave.containment.NotContainment;
import jdave.contract.NotContract;
import jdave.equality.NotEqualsEqualityCheck;
/**
* @author Pekka Enberg
*/
public class Not<A> extends ContainmentSupport {
public A be;
public Not(final Specification<A> specification) {
be = specification.be;
}
@Override
protected <T> IContainment<T> newAllContainment(final Collection<T> elements) {
return new NotContainment<T>(super.newAllContainment(elements));
}
@Override
protected <T> IContainment<T> newAllContainment(final Iterable<T> elements) {
return new NotContainment<T>(super.newAllContainment(elements));
}
@Override
protected <T> IContainment<T> newAllContainment(final Iterator<T> elements) {
return new NotContainment<T>(super.newAllContainment(elements));
}
@Override
protected <T> IContainment<T> newAnyContainment(final Collection<T> elements) {
return new NotContainment<T>(super.newAnyContainment(elements));
}
@Override
protected <T> IContainment<T> newAnyContainment(final Iterable<T> elements) {
return new NotContainment<T>(super.newAnyContainment(elements));
}
@Override
protected <T> IContainment<T> newAnyContainment(final Iterator<T> elements) {
return new NotContainment<T>(super.newAnyContainment(elements));
}
@Override
protected <T> IContainment<T> newExactContainment(final Collection<T> elements) {
return new NotContainment<T>(super.newExactContainment(elements));
}
@Override
protected <T> IContainment<T> newExactContainment(final Iterable<T> elements) {
return new NotContainment<T>(super.newExactContainment(elements));
}
@Override
protected <T> IContainment<T> newExactContainment(final Iterator<T> elements) {
return new NotContainment<T>(super.newExactContainment(elements));
}
@Override
protected <T> IContainment<T> newInOrderContainment(final Collection<T> elements) {
return new NotContainment<T>(super.newInOrderContainment(elements));
}
@Override
protected <T> IContainment<T> newInOrderContainment(final Iterable<T> elements) {
return new NotContainment<T>(super.newInOrderContainment(elements));
}
@Override
protected <T> IContainment<T> newInOrderContainment(final Iterator<T> elements) {
return new NotContainment<T>(super.newInOrderContainment(elements));
}
@Override
protected <T> IContainment<T> newInPartialOrderContainment(final Collection<T> elements) {
return new NotContainment<T>(super.newInPartialOrderContainment(elements));
}
@Override
protected <T> IContainment<T> newInPartialOrderContainment(final Iterable<T> elements) {
return new NotContainment<T>(super.newInPartialOrderContainment(elements));
}
@Override
protected <T> IContainment<T> newInPartialOrderContainment(final Iterator<T> elements) {
return new NotContainment<T>(super.newInPartialOrderContainment(elements));
}
@Override
protected <T> IContainment<T> newObjectContainment(final T object) {
return new NotContainment<T>(super.newObjectContainment(object));
}
public <E extends Throwable> ExpectedNoThrow<E> raise(final Class<E> expected) {
return new ExpectedNoThrow<E>(new ExpectedException<E>(expected));
}
/**
* No exception is expected from <code>Block</code>.
* <p>
*
* @see Specification#specify(Block, ExpectedNoThrow)
*/
public ExpectedNoThrow<Throwable> raiseAnyException() {
return raise(Throwable.class);
}
public <E extends Throwable> ExpectedNoThrow<E> raise(final Class<E> expectedType,
final String expectedMessage) {
return new ExpectedNoThrow<E>(new ExpectedExceptionWithMessage<E>(expectedType,
expectedMessage));
}
public <E extends Throwable> ExpectedNoThrow<E> raiseExactly(final Class<E> expected) {
return new ExpectedNoThrow<E>(new ExactExpectedException<E>(expected));
}
public IEqualityCheck equal(final Object obj) {
return new NotEqualsEqualityCheck(obj);
}
public IEqualityCheck equal(final Number expectedNumber, final double delta) {
return new NotDeltaEqualityCheck(expectedNumber, delta);
}
public IContract satisfy(final IContract contract) {
return new NotContract(contract);
}
}