org.evosuite.utils.TriBoolean Maven / Gradle / Ivy
/**
* Copyright (C) 2010-2018 Gordon Fraser, Andrea Arcuri and EvoSuite
* contributors
*
* This file is part of EvoSuite.
*
* EvoSuite is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation, either version 3.0 of the License, or
* (at your option) any later version.
*
* EvoSuite is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with EvoSuite. If not, see .
*/
package org.evosuite.utils;
public enum TriBoolean {
True, False, Maybe;
/**
* fromBoolean
*
* @param value a boolean.
* @return a {@link org.evosuite.utils.TriBoolean} object.
*/
public static TriBoolean fromBoolean(boolean value) {
return value ? True : False;
}
/**
* and
*
* @param other a {@link org.evosuite.utils.TriBoolean} object.
* @return a {@link org.evosuite.utils.TriBoolean} object.
*/
public TriBoolean and(TriBoolean other) {
if (this == False || other == False) return False;
if (this == Maybe || other == Maybe) return Maybe;
return True;
}
/**
* and
*
* @param other a boolean.
* @return a {@link org.evosuite.utils.TriBoolean} object.
*/
public TriBoolean and(boolean other) {
return and(fromBoolean(other));
}
/**
* or
*
* @param other a {@link org.evosuite.utils.TriBoolean} object.
* @return a {@link org.evosuite.utils.TriBoolean} object.
*/
public TriBoolean or(TriBoolean other) {
if (this == True || other == True) return True;
if (this == Maybe || other == Maybe) return Maybe;
return False;
}
/**
* or
*
* @param other a boolean.
* @return a {@link org.evosuite.utils.TriBoolean} object.
*/
public TriBoolean or(boolean other) {
return or(fromBoolean(other));
}
/**
* negated
*
* @return a {@link org.evosuite.utils.TriBoolean} object.
*/
public TriBoolean negated() {
return (this == Maybe) ? Maybe : fromBoolean(this == False);
}
/**
* andNot
*
* @param other a {@link org.evosuite.utils.TriBoolean} object.
* @return a {@link org.evosuite.utils.TriBoolean} object.
*/
public TriBoolean andNot(TriBoolean other) {
return and(other.negated());
}
/**
* andNot
*
* @param other a boolean.
* @return a {@link org.evosuite.utils.TriBoolean} object.
*/
public TriBoolean andNot(boolean other) {
return andNot(fromBoolean(other));
}
/**
* orNot
*
* @param other a {@link org.evosuite.utils.TriBoolean} object.
* @return a {@link org.evosuite.utils.TriBoolean} object.
*/
public TriBoolean orNot(TriBoolean other) {
return or(other.negated());
}
/**
* orNot
*
* @param other a boolean.
* @return a {@link org.evosuite.utils.TriBoolean} object.
*/
public TriBoolean orNot(boolean other) {
return orNot(fromBoolean(other));
}
/**
* notAnd
*
* @param other a {@link org.evosuite.utils.TriBoolean} object.
* @return a {@link org.evosuite.utils.TriBoolean} object.
*/
public TriBoolean notAnd(TriBoolean other) {
return and(other).negated();
}
/**
* notAnd
*
* @param other a boolean.
* @return a {@link org.evosuite.utils.TriBoolean} object.
*/
public TriBoolean notAnd(boolean other) {
return notAnd(fromBoolean(other));
}
/**
* notOr
*
* @param other a {@link org.evosuite.utils.TriBoolean} object.
* @return a {@link org.evosuite.utils.TriBoolean} object.
*/
public TriBoolean notOr(TriBoolean other) {
return or(other).negated();
}
/**
* notOr
*
* @param other a boolean.
* @return a {@link org.evosuite.utils.TriBoolean} object.
*/
public TriBoolean notOr(boolean other) {
return notOr(fromBoolean(other));
}
/**
* isPossiblyTrue
*
* @return a boolean.
*/
public boolean isPossiblyTrue() {
return this == True || this == Maybe;
}
/**
* isPossiblyFalse
*
* @return a boolean.
*/
public boolean isPossiblyFalse() {
return this == False || this == Maybe;
}
/**
* isCertainlyTrue
*
* @return a boolean.
*/
public boolean isCertainlyTrue() {
return this == True;
}
/**
* isCertainlyFalse
*
* @return a boolean.
*/
public boolean isCertainlyFalse() {
return this == False;
}
}