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

hope.kola.contract.assertj.bridge.AssertThat Maven / Gradle / Ivy

There is a newer version: 1.1.2-RELEASE
Show newest version
package hope.kola.contract.assertj.bridge;

import com.squareup.javapoet.ClassName;
import com.squareup.javapoet.CodeBlock;
import hope.kola.contract.api.ObjectFactory;
import hope.kola.contract.assertj.model.AssertSegment;
import hope.kola.contract.assertj.model.PrimitiveType;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.assertj.core.data.Offset;

public abstract class AssertThat implements ObjectFactory {

  protected List segments = new ArrayList<>();

  public abstract PrimitiveType primitiveType();

  /**
   * get all the segments
   *
   * @return list of the {@link AssertSegment}
   */
  public List segments() {
    return segments;
  }

  /**
   * Build the entire segment to one piece of code
   *
   * @return {@link CodeBlock.Builder } code block
   */
  public CodeBlock.Builder code() {
    // $T.$T.$T
    final String temp = StringUtils.repeat("$L", ".", segments.size());
    return CodeBlock.builder().add(temp, segments.stream().map(it -> it.code().build()).toArray());
  }

  public ClassName assertJClass() {
    throw new IllegalArgumentException("Please overwrite this assertJClass");
  }

  protected AssertSegment segment(final String match) {
    AssertSegment segment = new AssertSegment(match);
    segments.add(segment);
    return segment;
  }

  public Offset offset(final Long value) {
    return Offset.offset(value);
  }

  public Offset strictOffset(final Long value) {
    return Offset.strictOffset(value);
  }

  public Offset offset(final Integer value) {
    return Offset.offset(value);
  }

  public Offset strictOffset(final Integer value) {
    return Offset.strictOffset(value);
  }

  public Offset offset(final Float value) {
    return Offset.offset(value);
  }

  public Offset strictOffset(final Float value) {
    return Offset.strictOffset(value);
  }

  public Offset offset(final Double value) {
    return Offset.offset(value);
  }

  public Offset strictOffset(final Double value) {
    return Offset.strictOffset(value);
  }

  public Offset offset(final BigDecimal value) {
    return Offset.offset(value);
  }

  public Offset strictOffset(final BigDecimal value) {
    return Offset.strictOffset(value);
  }

  public Offset offset(final BigInteger value) {
    return Offset.offset(value);
  }

  public Offset strictOffset(final BigInteger value) {
    return Offset.strictOffset(value);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy