// Path: src/test/java/com/hubspot/jackson/datatype/protobuf/util/ObjectMapperHelper.java
// public static ObjectMapper camelCase() {
//   return DEFAULT;
// }


import static com.hubspot.jackson.datatype.protobuf.util.ObjectMapperHelper.camelCase;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.entry;
import static org.assertj.core.api.Assertions.fail;
import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import org.junit.Test;
import com.fasterxml.jackson.databind.JsonNode;
import com.google.protobuf.ListValue;
import com.google.protobuf.NullValue;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import com.hubspot.jackson.datatype.protobuf.util.BuiltInProtobufs.HasValue;
        ListValue list = ListValue.newBuilder().addValues(nested).build();
        assertThat(map.size()).isEqualTo(6);
        assertThat(map.get("null")).isEqualTo(Value.newBuilder().setNullValue(NullValue.NULL_VALUE).build());
        assertThat(map.get("number")).isEqualTo(Value.newBuilder().setNumberValue(1.5).build());
        assertThat(map.get("string")).isEqualTo(Value.newBuilder().setStringValue("test").build());
        assertThat(map.get("boolean")).isEqualTo(Value.newBuilder().setBoolValue(true).build());
        assertThat(map.get("struct")).isEqualTo(Value.newBuilder().setStructValue(nestedStruct).build());
        assertThat(map.get("list")).isEqualTo(Value.newBuilder().setListValue(list).build());
        break;
      default:
        fail("Unexpected value kind: " + value.getKindCase());
    }
  }

  @Test
  public void itReadsMixedListValue() throws IOException {
    String json = "{\"value\":[null,1.5,\"test\",true,{\"key\":\"nested\"},[\"nested\"]]}";
    HasValue message = camelCase().readValue(json, HasValue.class);
    assertThat(message.hasValue()).isTrue();
    Value value = message.getValue();
    switch (value.getKindCase()) {
      case LIST_VALUE:
        ListValue list = value.getListValue();
        Value nested = Value.newBuilder().setStringValue("nested").build();
        Struct struct = Struct.newBuilder().putFields("key", nested).build();
        ListValue nestedList = ListValue.newBuilder().addValues(nested).build();
        assertThat(list.getValuesCount()).isEqualTo(6);
        assertThat(list.getValues(0)).isEqualTo(Value.newBuilder().setNullValue(NullValue.NULL_VALUE).build());
        assertThat(list.getValues(1)).isEqualTo(Value.newBuilder().setNumberValue(1.5).build());
        assertThat(list.getValues(2)).isEqualTo(Value.newBuilder().setStringValue("test").build());
// Path: src/test/java/com/hubspot/jackson/datatype/protobuf/util/ObjectMapperHelper.java
// public static ObjectMapper camelCase() {
//   return DEFAULT;
// }


// Path: src/test/java/com/hubspot/jackson/datatype/protobuf/builtin/ValueTest.java
import static com.hubspot.jackson.datatype.protobuf.util.ObjectMapperHelper.camelCase;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.entry;
import static org.assertj.core.api.Assertions.fail;
import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import org.junit.Test;
import com.fasterxml.jackson.databind.JsonNode;
import com.google.protobuf.ListValue;
import com.google.protobuf.NullValue;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import com.hubspot.jackson.datatype.protobuf.util.BuiltInProtobufs.HasValue;

        ListValue list = ListValue.newBuilder().addValues(nested).build();
        assertThat(map.size()).isEqualTo(6);
        assertThat(map.get("null")).isEqualTo(Value.newBuilder().setNullValue(NullValue.NULL_VALUE).build());
        assertThat(map.get("number")).isEqualTo(Value.newBuilder().setNumberValue(1.5).build());
        assertThat(map.get("string")).isEqualTo(Value.newBuilder().setStringValue("test").build());
        assertThat(map.get("boolean")).isEqualTo(Value.newBuilder().setBoolValue(true).build());
        assertThat(map.get("struct")).isEqualTo(Value.newBuilder().setStructValue(nestedStruct).build());
        assertThat(map.get("list")).isEqualTo(Value.newBuilder().setListValue(list).build());
        break;
      default:
        fail("Unexpected value kind: " + value.getKindCase());
    }
  }

  @Test
  public void itReadsMixedListValue() throws IOException {
    String json = "{\"value\":[null,1.5,\"test\",true,{\"key\":\"nested\"},[\"nested\"]]}";
    HasValue message = camelCase().readValue(json, HasValue.class);
    assertThat(message.hasValue()).isTrue();
    Value value = message.getValue();
    switch (value.getKindCase()) {
      case LIST_VALUE:
        ListValue list = value.getListValue();
        Value nested = Value.newBuilder().setStringValue("nested").build();
        Struct struct = Struct.newBuilder().putFields("key", nested).build();
        ListValue nestedList = ListValue.newBuilder().addValues(nested).build();
        assertThat(list.getValuesCount()).isEqualTo(6);
        assertThat(list.getValues(0)).isEqualTo(Value.newBuilder().setNullValue(NullValue.NULL_VALUE).build());
        assertThat(list.getValues(1)).isEqualTo(Value.newBuilder().setNumberValue(1.5).build());
        assertThat(list.getValues(2)).isEqualTo(Value.newBuilder().setStringValue("test").build());
        assertThat(list.getValues(3)).isEqualTo(Value.newBuilder().setBoolValue(true).build());