All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.catools.media.extensions.states.interfaces.CImageComparisionState Maven / Gradle / Ivy

package org.catools.media.extensions.states.interfaces;

import org.catools.common.collections.CList;
import org.catools.common.extensions.states.interfaces.CObjectState;
import org.catools.common.io.CResource;
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;

/**
 * CImageComparisionState is an interface to define state of BufferedImage in relation to one or
 * more File, Resource or BufferedImage.
 */
public interface CImageComparisionState extends CObjectState {
  /**
   * Check if actual and expected are equal, after converting content to BufferedImage.
   *
   * @param expected value to compare
   * @return execution result
   */
  default boolean isEqual(final CResource expected) {
    return CImageComparisionUtil.getDiffs(
            get(), CImageUtil.readImageOrNull(expected), GRAY_FLOAT_32)
        .isEmpty();
  }

  /**
   * Check if actual and expected are not equal, after converting content to BufferedImage.
   *
   * @param expected value to compare
   * @return execution result
   */
  default boolean isNotEqual(final CResource expected) {
    return CImageComparisionUtil.getDiffs(
            get(), CImageUtil.readImageOrNull(expected), GRAY_FLOAT_32)
        .isNotEmpty();
  }

  /**
   * Check if actual and expected are equal, after converting content to BufferedImage
   *
   * @param expected value to compare
   * @return execution result
   */
  default boolean isEqual(final File expected) {
    return CImageComparisionUtil.getDiffs(
            get(), CImageUtil.readImageOrNull(expected), GRAY_FLOAT_32)
        .isEmpty();
  }

  /**
   * Check if actual and expected are not equal, after converting content to BufferedImage
   *
   * @param expected value to compare
   * @return execution result
   */
  default boolean isNotEqual(final File expected) {
    return CImageComparisionUtil.getDiffs(
            get(), CImageUtil.readImageOrNull(expected), GRAY_FLOAT_32)
        .isNotEmpty();
  }

  /**
   * Check if actual value equals to any expected values, after converting content to BufferedImage.
   *
   * @param expected values to compare, return false if no value provided. all {@code null} value in
   *     expected list ignores.
   * @return execution result
   */
  default boolean equalsAny(final Iterable expected) {
    for (BufferedImage bufferedImage : toBufferedImageList(expected)) {
      if (bufferedImage == null) {
        continue;
      }
      if (CImageComparisionUtil.getDiffs(get(), bufferedImage, GRAY_FLOAT_32).isEmpty()) {
        return true;
      }
    }
    return false;
  }

  /**
   * Check if actual value equals to none of expected values, after converting content to
   * BufferedImage.
   *
   * @param expected value to compare
   * @return execution result
   */
  default boolean equalsNone(final Iterable expected) {
    CList bufferedImages = toBufferedImageList(expected);
    for (BufferedImage bufferedImage : bufferedImages) {
      if (bufferedImage == null) {
        continue;
      }
      if (CImageComparisionUtil.getDiffs(get(), bufferedImage, GRAY_FLOAT_32).isNotEmpty()) {
        return false;
      }
    }
    return bufferedImages.isNotEmpty();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy