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

com.github.dakusui.thincrest.TestFluents Maven / Gradle / Ivy

package com.github.dakusui.thincrest;

import com.github.dakusui.pcond.fluent.Fluents;
import com.github.dakusui.pcond.fluent.Statement;

import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

import static java.util.stream.Collectors.toList;

public enum TestFluents {
  ;

  /**
   * Fluent version of {@link TestAssertions#assertThat(Object, Predicate)}.
   *
   * @param statement A statement to be verified
   * @param        The type of the value to be verified which a given statement holds.
   */
  public static  void assertStatement(Statement statement) {
    TestAssertions.assertThat(statement.statementValue(), statement.statementPredicate());
  }

  /**
   * Fluent version of {@link TestAssertions#assertThat(Object, Predicate)}.
   * Use this method when you need to verify multiple values.
   *
   * You can use {@link TestFluents#assertStatement(Statement)}, if you have only one statement to be verified, for readability's sake.
   *
   * @param statements Statements to be verified
   * @see TestFluents#assertStatement(Statement)
   */
  public static void assertAll(Statement... statements) {
    List values = Arrays.stream(statements).map(Statement::statementValue).collect(toList());
    TestAssertions.assertThat(Fluents.DummyList.fromList(values), Fluents.createPredicateForAllOf(statements));
  }

  /**
   * Fluent version of {@link TestAssertions#assumeThat(Object, Predicate)}.
   *
   * @param statement A statement to be verified
   */
  public static  void assumeStatement(Statement statement) {
    TestAssertions.assumeThat(statement.statementValue(), statement.statementPredicate());
  }

  /**
   * Fluent version of {@link TestAssertions#assumeThat(Object, Predicate)}.
   * Use this method when you need to verify multiple values.
   *
   * You can use {@link TestFluents#assumeStatement(Statement)}}, if you have only one statement to be verified, for readability's sake.
   *
   * @param statements Statements to be verified
   * @see TestFluents#assumeStatement(Statement)
   */
  public static void assumeAll(Statement... statements) {
    List values = Arrays.stream(statements).map(Statement::statementValue).collect(toList());
    TestAssertions.assumeThat(values, Fluents.createPredicateForAllOf(statements));
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy