
org.catools.media.extensions.verify.interfaces.CImageComparisionVerifier Maven / Gradle / Ivy
package org.catools.media.extensions.verify.interfaces;
import org.catools.common.extensions.verify.CVerificationBuilder;
import org.catools.common.extensions.verify.CVerificationQueue;
import org.catools.common.extensions.verify.interfaces.CObjectVerifier;
import org.catools.common.io.CFile;
import org.catools.common.io.CResource;
import org.catools.common.tests.CTest;
import org.catools.media.extensions.states.interfaces.CImageComparisionState;
import org.catools.media.extensions.verify.CImageComparisionVerification;
import org.catools.media.extensions.wait.interfaces.CImageComparisionWaiter;
import org.catools.media.utils.CImageComparisionUtil;
import org.catools.media.utils.CImageUtil;
import java.awt.image.BufferedImage;
import java.io.File;
import static org.catools.media.enums.CImageComparisonType.GRAY_FLOAT_32;
import static org.catools.media.utils.CImageComparisionUtil.toBufferedImageList;
/**
* CBufferedImageVerifier is an interface for BufferedImage verification related methods.
* We need this interface to have possibility of adding verification to any exists objects with the minimum change in the code.
* In the meantime adding verification method in one place can be extend cross all other objects:
* Please Note that we should extend manually {@link CImageComparisionVerification} for each new added verification here
*/
public interface CImageComparisionVerifier extends CObjectVerifier {
/**
* Verify that actual and expected are equal
*
* @param testInstance instance of test related to this verification
* @param expected value to compare
* @param diffFileName the file name for diff image which should be generated in case if images did not match
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEquals(CTest testInstance, final BufferedImage expected, final String diffFileName, final String message, final Object... params) {
verifyEquals(testInstance.verify, expected, diffFileName, message, params);
}
/**
* Verify that actual and expected are equal
*
* @param testInstance instance of test related to this verification
* @param expected value to compare
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEquals(CTest testInstance, final CFile expected, final String message, final Object... params) {
verifyEquals(testInstance.verify, expected, message, params);
}
/**
* Verify that actual and expected are equal
*
* @param testInstance instance of test related to this verification
* @param expected value to compare
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEquals(CTest testInstance, final CResource expected, final String message, final Object... params) {
verifyEquals(testInstance.verify, expected, message, params);
}
/**
* Verify that actual and expected are equal
*
* @param verificationQueue verification queue builder for verification
* @param expected value to compare
* @param diffFileName the file name for diff image which should be generated in case if images did not match
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEquals(CVerificationQueue verificationQueue, final BufferedImage expected, final String diffFileName, final String message, final Object... params) {
_verify(verificationQueue,
expected,
false,
(a, b) -> _toState(a).isEqual(b),
(a, b) -> CImageUtil.generateDiffFile(verificationQueue.getLogger(), (BufferedImage) a, b, diffFileName, GRAY_FLOAT_32),
getDefaultWaitInSeconds(),
getDefaultWaitIntervalInMilliSeconds(),
message,
params);
}
/**
* Verify that actual and expected are equal
*
* @param verificationQueue verification queue builder for verification
* @param expected value to compare
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEquals(CVerificationQueue verificationQueue, final CFile expected, final String message, final Object... params) {
verifyEquals(verificationQueue, CImageUtil.readImageOrNull(expected), expected.getName(), message, params);
}
/**
* Verify that actual and expected are equal
*
* @param verificationQueue verification queue builder for verification
* @param expected value to compare
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEquals(CVerificationQueue verificationQueue, final CResource expected, final String message, final Object... params) {
verifyEquals(verificationQueue, CImageUtil.readImageOrNull(expected), expected.getResourceName(), message, params);
}
/**
* Verify that actual and expected are equal
*
* @param testInstance instance of test related to this verification
* @param expected value to compare
* @param diffFileName the file name for diff image which should be generated in case if images did not match
* @param waitInSeconds maximum wait time
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEquals(CTest testInstance, final BufferedImage expected, final String diffFileName, final int waitInSeconds, final String message, final Object... params) {
verifyEquals(testInstance.verify, expected, diffFileName, waitInSeconds, getDefaultWaitIntervalInMilliSeconds(), message, params);
}
/**
* Verify that actual and expected are equal
*
* @param testInstance instance of test related to this verification
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEquals(CTest testInstance, final CFile expected, final int waitInSeconds, final String message, final Object... params) {
verifyEquals(testInstance.verify, expected, waitInSeconds, getDefaultWaitIntervalInMilliSeconds(), message, params);
}
/**
* Verify that actual and expected are equal
*
* @param testInstance instance of test related to this verification
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEquals(CTest testInstance, final CResource expected, final int waitInSeconds, final String message, final Object... params) {
verifyEquals(testInstance.verify, expected, waitInSeconds, getDefaultWaitIntervalInMilliSeconds(), message, params);
}
/**
* Verify that actual and expected are equal
*
* @param verificationQueue verification queue builder for verification
* @param expected value to compare
* @param diffFileName the file name for diff image which should be generated in case if images did not match
* @param waitInSeconds maximum wait time
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEquals(CVerificationQueue verificationQueue,
final BufferedImage expected,
final String diffFileName,
final int waitInSeconds,
final String message,
final Object... params) {
verifyEquals(verificationQueue, expected, diffFileName, waitInSeconds, getDefaultWaitIntervalInMilliSeconds(), message, params);
}
/**
* Verify that actual and expected are equal
*
* @param verificationQueue verification queue builder for verification
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEquals(CVerificationQueue verificationQueue, final CFile expected, final int waitInSeconds, final String message, final Object... params) {
verifyEquals(verificationQueue, expected, waitInSeconds, getDefaultWaitIntervalInMilliSeconds(), message, params);
}
/**
* Verify that actual and expected are equal
*
* @param verificationQueue verification queue builder for verification
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEquals(CVerificationQueue verificationQueue, final CResource expected, final int waitInSeconds, final String message, final Object... params) {
verifyEquals(verificationQueue, expected, waitInSeconds, getDefaultWaitIntervalInMilliSeconds(), message, params);
}
/**
* Verify that actual and expected are equal
*
* @param testInstance instance of test related to this verification
* @param expected value to compare
* @param diffFileName the file name for diff image which should be generated in case if images did not match
* @param waitInSeconds maximum wait time
* @param intervalInMilliSeconds interval between retries in milliseconds
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEquals(CTest testInstance,
final BufferedImage expected,
final String diffFileName,
final int waitInSeconds,
final int intervalInMilliSeconds,
final String message,
final Object... params) {
verifyEquals(testInstance.verify, expected, diffFileName, waitInSeconds, intervalInMilliSeconds, message, params);
}
/**
* Verify that actual and expected are equal
*
* @param testInstance instance of test related to this verification
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param intervalInMilliSeconds interval between retries in milliseconds
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEquals(CTest testInstance, final CFile expected, final int waitInSeconds, final int intervalInMilliSeconds, final String message, final Object... params) {
verifyEquals(testInstance.verify, expected, waitInSeconds, intervalInMilliSeconds, message, params);
}
/**
* Verify that actual and expected are equal
*
* @param testInstance instance of test related to this verification
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param intervalInMilliSeconds interval between retries in milliseconds
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEquals(CTest testInstance,
final CResource expected,
final int waitInSeconds,
final int intervalInMilliSeconds,
final String message,
final Object... params) {
verifyEquals(testInstance.verify, expected, waitInSeconds, intervalInMilliSeconds, message, params);
}
/**
* Verify that actual and expected are equal
*
* @param verificationQueue verification queue builder for verification
* @param expected value to compare
* @param diffFileName the file name for diff image which should be generated in case if images did not match
* @param waitInSeconds maximum wait time
* @param intervalInMilliSeconds interval between retries in milliseconds
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEquals(CVerificationQueue verificationQueue,
final BufferedImage expected,
final String diffFileName,
final int waitInSeconds,
final int intervalInMilliSeconds,
final String message,
final Object... params) {
_verify(verificationQueue,
expected,
false,
(a, b) -> _toState(a).isEqual(b),
(a, b) -> CImageUtil.generateDiffFile(verificationQueue.getLogger(), (BufferedImage) a, b, diffFileName, GRAY_FLOAT_32),
waitInSeconds,
intervalInMilliSeconds,
message,
params);
}
/**
* Verify that actual and expected are equal
*
* @param verificationQueue verification queue builder for verification
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param intervalInMilliSeconds interval between retries in milliseconds
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEquals(CVerificationQueue verificationQueue,
final CFile expected,
final int waitInSeconds,
final int intervalInMilliSeconds,
final String message,
final Object... params) {
verifyEquals(verificationQueue, CImageUtil.readImageOrNull(expected), expected.getName(), waitInSeconds, intervalInMilliSeconds, message, params);
}
/**
* Verify that actual and expected are equal
*
* @param verificationQueue verification queue builder for verification
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param intervalInMilliSeconds interval between retries in milliseconds
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEquals(CVerificationQueue verificationQueue,
final CResource expected,
final int waitInSeconds,
final int intervalInMilliSeconds,
final String message,
final Object... params) {
verifyEquals(verificationQueue, CImageUtil.readImageOrNull(expected), expected.getResourceName(), waitInSeconds, intervalInMilliSeconds, message, params);
}
/**
* Verify that actual and expected are not equal
*
* @param testInstance instance of test related to this verification
* @param expected value to compare
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyNotEquals(CTest testInstance, final CFile expected, final String message, final Object... params) {
verifyNotEquals(testInstance.verify, expected, message, params);
}
/**
* Verify that actual and expected are not equal
*
* @param testInstance instance of test related to this verification
* @param expected value to compare
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyNotEquals(CTest testInstance, final CResource expected, final String message, final Object... params) {
verifyNotEquals(testInstance.verify, expected, message, params);
}
/**
* Verify that actual and expected are not equal
*
* @param verificationQueue verification queue builder for verification
* @param expected value to compare
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyNotEquals(CVerificationQueue verificationQueue, final CFile expected, final String message, final Object... params) {
_verify(verificationQueue, expected, false, (a, b) -> _toState(a).isNotEqual(b), message, params);
}
/**
* Verify that actual and expected are not equal
*
* @param verificationQueue verification queue builder for verification
* @param expected value to compare
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyNotEquals(CVerificationQueue verificationQueue, final CResource expected, final String message, final Object... params) {
_verify(verificationQueue, expected, false, (a, b) -> _toState(a).isNotEqual(b), message, params);
}
/**
* Verify that actual and expected are not equal
*
* @param testInstance instance of test related to this verification
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyNotEquals(CTest testInstance, final CFile expected, final int waitInSeconds, final String message, final Object... params) {
verifyNotEquals(testInstance.verify, expected, waitInSeconds, getDefaultWaitIntervalInMilliSeconds(), message, params);
}
/**
* Verify that actual and expected are not equal
*
* @param testInstance instance of test related to this verification
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyNotEquals(CTest testInstance, final CResource expected, final int waitInSeconds, final String message, final Object... params) {
verifyNotEquals(testInstance.verify, expected, waitInSeconds, getDefaultWaitIntervalInMilliSeconds(), message, params);
}
/**
* Verify that actual and expected are not equal
*
* @param verificationQueue verification queue builder for verification
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyNotEquals(CVerificationQueue verificationQueue, final CFile expected, final int waitInSeconds, final String message, final Object... params) {
verifyNotEquals(verificationQueue, expected, waitInSeconds, getDefaultWaitIntervalInMilliSeconds(), message, params);
}
/**
* Verify that actual and expected are not equal
*
* @param verificationQueue verification queue builder for verification
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyNotEquals(CVerificationQueue verificationQueue, final CResource expected, final int waitInSeconds, final String message, final Object... params) {
verifyNotEquals(verificationQueue, expected, waitInSeconds, getDefaultWaitIntervalInMilliSeconds(), message, params);
}
/**
* Verify that actual and expected are not equal
*
* @param testInstance instance of test related to this verification
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param intervalInMilliSeconds interval between retries in milliseconds
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyNotEquals(CTest testInstance,
final CFile expected,
final int waitInSeconds,
final int intervalInMilliSeconds,
final String message,
final Object... params) {
verifyNotEquals(testInstance.verify, expected, waitInSeconds, intervalInMilliSeconds, message, params);
}
/**
* Verify that actual and expected are not equal
*
* @param testInstance instance of test related to this verification
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param intervalInMilliSeconds interval between retries in milliseconds
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyNotEquals(CTest testInstance,
final CResource expected,
final int waitInSeconds,
final int intervalInMilliSeconds,
final String message,
final Object... params) {
verifyNotEquals(testInstance.verify, expected, waitInSeconds, intervalInMilliSeconds, message, params);
}
/**
* Verify that actual and expected are not equal
*
* @param verificationQueue verification queue builder for verification
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param intervalInMilliSeconds interval between retries in milliseconds
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyNotEquals(CVerificationQueue verificationQueue,
final CFile expected,
final int waitInSeconds,
final int intervalInMilliSeconds,
final String message,
final Object... params) {
_verify(verificationQueue, expected, false, (a, b) -> _toState(a).isNotEqual(b), waitInSeconds, intervalInMilliSeconds, message, params);
}
/**
* Verify that actual and expected are not equal
*
* @param verificationQueue verification queue builder for verification
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param intervalInMilliSeconds interval between retries in milliseconds
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyNotEquals(CVerificationQueue verificationQueue,
final CResource expected,
final int waitInSeconds,
final int intervalInMilliSeconds,
final String message,
final Object... params) {
_verify(verificationQueue, expected, false, (a, b) -> _toState(a).isNotEqual(b), waitInSeconds, intervalInMilliSeconds, message, params);
}
/**
* Verify that actual and expected are equal
*
* @param testInstance instance of test related to this verification
* @param diffFileNamePrefix the file name for diff image which should be generated in case if images did not match. Please Note that we add index to the end to avoid duplicate file name.
* @param expected value to compare
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEqualsAny(CTest testInstance, final Iterable expected, final String diffFileNamePrefix, final String message, final Object... params) {
verifyEqualsAny(testInstance.verify, expected, diffFileNamePrefix, message, params);
}
/**
* Verify that actual and expected are equal
*
* @param verificationQueue verification queue builder for verification
* @param diffFileNamePrefix the file name for diff image which should be generated in case if images did not match. Please Note that we add index to the end to avoid duplicate file name.
* @param expected value to compare
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEqualsAny(CVerificationQueue verificationQueue, final Iterable expected, final String diffFileNamePrefix, final String message, final Object... params) {
verifyEqualsAny(verificationQueue, expected, diffFileNamePrefix, getDefaultWaitInSeconds(), getDefaultWaitIntervalInMilliSeconds(), message, params);
}
/**
* Verify that actual and expected are equal
*
* @param testInstance instance of test related to this verification
* @param diffFileNamePrefix the file name for diff image which should be generated in case if images did not match. Please Note that we add index to the end to avoid duplicate file name.
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEqualsAny(CTest testInstance,
final Iterable expected,
final String diffFileNamePrefix,
final int waitInSeconds,
final String message,
final Object... params) {
verifyEqualsAny(testInstance.verify, expected, diffFileNamePrefix, waitInSeconds, getDefaultWaitIntervalInMilliSeconds(), message, params);
}
/**
* Verify that actual and expected are equal
*
* @param verificationQueue verification queue builder for verification
* @param diffFileNamePrefix the file name for diff image which should be generated in case if images did not match. Please Note that we add index to the end to avoid duplicate file name.
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEqualsAny(CVerificationQueue verificationQueue,
final Iterable expected,
final String diffFileNamePrefix,
final int waitInSeconds,
final String message,
final Object... params) {
verifyEqualsAny(verificationQueue, expected, diffFileNamePrefix, waitInSeconds, getDefaultWaitIntervalInMilliSeconds(), message, params);
}
/**
* Verify that actual and expected are equal
*
* @param testInstance instance of test related to this verification
* @param diffFileNamePrefix the file name for diff image which should be generated in case if images did not match. Please Note that we add index to the end to avoid duplicate file name.
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param intervalInMilliSeconds interval between retries in milliseconds
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEqualsAny(CTest testInstance,
final Iterable expected,
final String diffFileNamePrefix,
final int waitInSeconds,
final int intervalInMilliSeconds,
final String message,
final Object... params) {
verifyEqualsAny(testInstance.verify, expected, diffFileNamePrefix, waitInSeconds, intervalInMilliSeconds, message, params);
}
/**
* Verify that actual and expected are equal
*
* @param verificationQueue verification queue builder for verification
* @param diffFileNamePrefix the file name for diff image which should be generated in case if images did not match. Please Note that we add index to the end to avoid duplicate file name.
* @param expected value to compare
* @param waitInSeconds maximum wait time
* @param intervalInMilliSeconds interval between retries in milliseconds
* @param message information about the propose of this verification
* @param params parameters in case if message is a format {@link String#format}
* @caller {@link CVerificationBuilder} so we can do chain calls
*/
default void verifyEqualsAny(CVerificationQueue verificationQueue,
final Iterable expected,
final String diffFileNamePrefix,
final int waitInSeconds,
final int intervalInMilliSeconds,
final String message,
final Object... params) {
BufferedImage actual = getValue();
if (toWaiter(actual).waitEqualsAny(expected, waitInSeconds, intervalInMilliSeconds)) {
// If we have match then we just print that verification is passed
_verify(verificationQueue, expected, false, (a, e) -> true, message, params);
}
// If we do not have match then we will try to print diff for future debugging
// We print diff for each source we have
int counter = 0;
for (BufferedImage exp : toBufferedImageList(expected)) {
CImageUtil.generateDiffFile(verificationQueue.getLogger(), actual, exp, diffFileNamePrefix + "_" + ++counter, GRAY_FLOAT_32);
}
_verify(verificationQueue, expected, false, (a, e) -> false, 0, 0, message, params);
}
private CImageComparisionWaiter toWaiter(Object o) {
if (o instanceof File) {
return () -> CImageUtil.readImageOrNull((File) o);
}
if (o instanceof CResource) {
return () -> CImageUtil.readImageOrNull((CResource) o);
}
if (o == null) {
return () -> null;
}
return () -> (BufferedImage) o;
}
default CImageComparisionState _toState(Object o) {
return new CImageComparisionState() {
@Override
public boolean isEqual(BufferedImage expected) {
if (expected == null) {
return false;
}
return CImageComparisionUtil.getDiffs(getValue(), expected, GRAY_FLOAT_32).isEmpty();
}
@Override
public BufferedImage getValue() {
if (o instanceof CFile) {
return CImageUtil.readImageOrNull((File) o);
}
if (o instanceof CResource) {
return CImageUtil.readImageOrNull((CResource) o);
}
if (o == null) {
return null;
}
return (BufferedImage) o;
}
};
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy