// Path: pojo/src/main/java/com/spotify/hamcrest/pojo/IsPojo.java
// public static <A> IsPojo<A> pojo(final Class<A> cls) {
//   return builder(cls).build();
// }


import java.math.BigInteger;
import org.hamcrest.StringDescription;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static com.spotify.hamcrest.pojo.IsPojo.pojo;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.both;
import static org.hamcrest.Matchers.hasProperty;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.startsWith;
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.Is.isA;
import static org.hamcrest.core.IsAnything.anything;

    assertThat(new SomeClass(), is(sut));
  }

  @Test
  public void testDescriptionFormatting() throws Exception {

    final IsPojo<SomeClass> sut = pojo(SomeClass.class)
        .where("baz", is(pojo(SomeClass.class).where("foo", is(42))))
        .where("foo", is(42))
        .withProperty("bar", is("bar"));

    final StringDescription description = new StringDescription();
    sut.describeTo(description);

    assertThat(description.toString(), is(
        "SomeClass {\n"
        + "  baz(): is SomeClass {\n"
        + "    foo(): is <42>\n"
        + "  }\n"
        + "  foo(): is <42>\n"
        + "  getBar(): is \"bar\"\n"
        + "}"
    ));
  }

  @Test
  public void testMismatchFormatting() throws Exception {
    final IsPojo<SomeClass> sut = pojo(SomeClass.class)
        .where("baz", is(
// Path: pojo/src/main/java/com/spotify/hamcrest/pojo/IsPojo.java
// public static <A> IsPojo<A> pojo(final Class<A> cls) {
//   return builder(cls).build();
// }


// Path: pojo/src/test/java/com/spotify/hamcrest/pojo/IsPojoTest.java
import java.math.BigInteger;
import org.hamcrest.StringDescription;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static com.spotify.hamcrest.pojo.IsPojo.pojo;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.both;
import static org.hamcrest.Matchers.hasProperty;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.startsWith;
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.Is.isA;
import static org.hamcrest.core.IsAnything.anything;


    assertThat(new SomeClass(), is(sut));
  }

  @Test
  public void testDescriptionFormatting() throws Exception {

    final IsPojo<SomeClass> sut = pojo(SomeClass.class)
        .where("baz", is(pojo(SomeClass.class).where("foo", is(42))))
        .where("foo", is(42))
        .withProperty("bar", is("bar"));

    final StringDescription description = new StringDescription();
    sut.describeTo(description);

    assertThat(description.toString(), is(
        "SomeClass {\n"
        + "  baz(): is SomeClass {\n"
        + "    foo(): is <42>\n"
        + "  }\n"
        + "  foo(): is <42>\n"
        + "  getBar(): is \"bar\"\n"
        + "}"
    ));
  }

  @Test
  public void testMismatchFormatting() throws Exception {
    final IsPojo<SomeClass> sut = pojo(SomeClass.class)
        .where("baz", is(
            pojo(SomeClass.class)