// Path: src/main/java/com/exmertec/dummie/Dummie.java
// public static <T> DummyBuilder<T> prepare(Class<T> type) {
//     return new DummyBuilderFactory().prepare(type);
// }


import static com.exmertec.dummie.Dummie.prepare;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.MatcherAssert.assertThat;
import org.junit.Test;
        NestingData1 nestingData1 = prepare(NestingData1.class)
            .random("name")
            .build();

        assertThat(nestingData1, not(nullValue()));
        assertThat(nestingData1.getName(), not(nullValue()));
        assertThat(nestingData1.getName(), not(equalTo("name")));
        assertThat(nestingData1.getNestingData2s(), not(nullValue()));
        assertThat(nestingData1.getNestingData2s().getData(), not(nullValue()));
    }

    @Test
    public void should_prepare_class_and_not_set_random_with_wrong_field_name() throws Exception {
        NestingData1 nestingData1 = prepare(NestingData1.class)
            .override(String.class, "abc")
            .random("name1")
            .build();

        assertThat(nestingData1, not(nullValue()));
        assertThat(nestingData1.getName(), equalTo("abc"));
        assertThat(nestingData1.getNestingData2s(), not(nullValue()));
        assertThat(nestingData1.getNestingData2s().getData(), not(nullValue()));
    }

    @Test
    public void should_return_different_value_when_set_random() throws Exception {
        NestingData3 nestingData3 = prepare(NestingData3.class)
            .random(String.class)
            .build();

// Path: src/main/java/com/exmertec/dummie/Dummie.java
// public static <T> DummyBuilder<T> prepare(Class<T> type) {
//     return new DummyBuilderFactory().prepare(type);
// }


// Path: src/test/java/com/exmertec/dummie/RandomTest.java
import static com.exmertec.dummie.Dummie.prepare;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.MatcherAssert.assertThat;
import org.junit.Test;

        NestingData1 nestingData1 = prepare(NestingData1.class)
            .random("name")
            .build();

        assertThat(nestingData1, not(nullValue()));
        assertThat(nestingData1.getName(), not(nullValue()));
        assertThat(nestingData1.getName(), not(equalTo("name")));
        assertThat(nestingData1.getNestingData2s(), not(nullValue()));
        assertThat(nestingData1.getNestingData2s().getData(), not(nullValue()));
    }

    @Test
    public void should_prepare_class_and_not_set_random_with_wrong_field_name() throws Exception {
        NestingData1 nestingData1 = prepare(NestingData1.class)
            .override(String.class, "abc")
            .random("name1")
            .build();

        assertThat(nestingData1, not(nullValue()));
        assertThat(nestingData1.getName(), equalTo("abc"));
        assertThat(nestingData1.getNestingData2s(), not(nullValue()));
        assertThat(nestingData1.getNestingData2s().getData(), not(nullValue()));
    }

    @Test
    public void should_return_different_value_when_set_random() throws Exception {
        NestingData3 nestingData3 = prepare(NestingData3.class)
            .random(String.class)
            .build();

        assertThat(nestingData3, not(nullValue()));