// Path: core/src/test/java/io/t28/json2java/core/Assertions.java
// @Nonnull
// @CheckReturnValue
// public static JsonValueAssert assertThat(@Nullable JsonValue actual) {
//     return new JsonValueAssert(actual);
// }


import static io.t28.json2java.core.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import org.jooq.lambda.tuple.Tuple;
import org.jooq.lambda.tuple.Tuple3;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import javax.annotation.Nonnull;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
                    Tuple.tuple(ValueType.NULL, null, JsonNull.class),
                    Tuple.tuple(ValueType.BOOLEAN, true, JsonBoolean.class),
                    Tuple.tuple(ValueType.INT, 42, JsonNumber.class),
                    Tuple.tuple(ValueType.LONG, 42L, JsonNumber.class),
                    Tuple.tuple(ValueType.FLOAT, 4.2f, JsonNumber.class),
                    Tuple.tuple(ValueType.DOUBLE, 4.2d, JsonNumber.class),
                    Tuple.tuple(ValueType.BIG_INTEGER, BigInteger.ONE, JsonNumber.class),
                    Tuple.tuple(ValueType.BIG_DECIMAL, BigDecimal.ONE, JsonNumber.class),
                    Tuple.tuple(ValueType.STRING, "foo", JsonString.class),
                    Tuple.tuple(ValueType.ARRAY, Collections.emptyList(), JsonArray.class),
                    Tuple.tuple(ValueType.OBJECT, Collections.emptyMap(), JsonObject.class)
            );
        }

        private final ValueType underTest;
        private final Object value;
        private final Class expected;

        public NormalWrapTest(@Nonnull Tuple3<ValueType, Object, Class> fixture) {
            this.underTest = fixture.v1();
            this.value = fixture.v2();
            this.expected = fixture.v3();
        }

        @Test
        public void wrap() throws Exception {
            // exercise
            final JsonValue actual = underTest.wrap(value);

            // verify
// Path: core/src/test/java/io/t28/json2java/core/Assertions.java
// @Nonnull
// @CheckReturnValue
// public static JsonValueAssert assertThat(@Nullable JsonValue actual) {
//     return new JsonValueAssert(actual);
// }


// Path: core/src/test/java/io/t28/json2java/core/json/ValueTypeTest.java
import static io.t28.json2java.core.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import org.jooq.lambda.tuple.Tuple;
import org.jooq.lambda.tuple.Tuple3;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import javax.annotation.Nonnull;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;

                    Tuple.tuple(ValueType.NULL, null, JsonNull.class),
                    Tuple.tuple(ValueType.BOOLEAN, true, JsonBoolean.class),
                    Tuple.tuple(ValueType.INT, 42, JsonNumber.class),
                    Tuple.tuple(ValueType.LONG, 42L, JsonNumber.class),
                    Tuple.tuple(ValueType.FLOAT, 4.2f, JsonNumber.class),
                    Tuple.tuple(ValueType.DOUBLE, 4.2d, JsonNumber.class),
                    Tuple.tuple(ValueType.BIG_INTEGER, BigInteger.ONE, JsonNumber.class),
                    Tuple.tuple(ValueType.BIG_DECIMAL, BigDecimal.ONE, JsonNumber.class),
                    Tuple.tuple(ValueType.STRING, "foo", JsonString.class),
                    Tuple.tuple(ValueType.ARRAY, Collections.emptyList(), JsonArray.class),
                    Tuple.tuple(ValueType.OBJECT, Collections.emptyMap(), JsonObject.class)
            );
        }

        private final ValueType underTest;
        private final Object value;
        private final Class expected;

        public NormalWrapTest(@Nonnull Tuple3<ValueType, Object, Class> fixture) {
            this.underTest = fixture.v1();
            this.value = fixture.v2();
            this.expected = fixture.v3();
        }

        @Test
        public void wrap() throws Exception {
            // exercise
            final JsonValue actual = underTest.wrap(value);

            // verify
            assertThat(actual)