// Path: RosettaCore/src/main/java/com/hubspot/rosetta/Rosetta.java
// public enum Rosetta {
//   INSTANCE;
// 
//   private static final List<Module> MODULES = new CopyOnWriteArrayList<Module>(defaultModules());
//   private static final AtomicReference<ObjectMapper> MAPPER = new AtomicReference<ObjectMapper>(cloneAndCustomize(new ObjectMapper()));
// 
//   public static ObjectMapper getMapper() {
//     return INSTANCE.get();
//   }
// 
//   /**
//    * @deprecated To customize the ObjectMapper, use {@link com.hubspot.rosetta.jdbi.RosettaObjectMapperOverride}.
//    */
//   @Deprecated
//   public static void addModule(Module module) {
//     INSTANCE.add(module);
//   }
// 
//   /**
//    * @deprecated To customize the ObjectMapper, use {@link com.hubspot.rosetta.jdbi.RosettaObjectMapperOverride}.
//    */
//   @Deprecated
//   public static void setMapper(ObjectMapper mapper) {
//     INSTANCE.set(mapper);
//   }
// 
//   public static ObjectMapper cloneAndCustomize(ObjectMapper mapper) {
//     mapper = mapper.copy();
// 
//     // ObjectMapper#registerModules doesn't exist in 2.1.x
//     for (Module module : MODULES) {
//       mapper.registerModule(module);
//     }
// 
//     return mapper;
//   }
// 
//   private ObjectMapper get() {
//     return MAPPER.get();
//   }
// 
//   private void set(ObjectMapper mapper) {
//     MAPPER.set(cloneAndCustomize(mapper));
//   }
// 
//   private void add(Module module) {
//     MODULES.add(module);
//     MAPPER.get().registerModule(module);
//   }
// 
//   private static List<Module> defaultModules() {
//     List<Module> defaultModules = new ArrayList<Module>();
//     defaultModules.add(new RosettaModule());
// 
//     for (Module module : ServiceLoader.load(AutoDiscoveredModule.class)) {
//       defaultModules.add(module);
//     }
// 
//     for (Module module : ServiceLoader.load(Module.class)) {
//       defaultModules.add(module);
//     }
// 
//     return defaultModules;
//   }
// }
// 
// Path: RosettaCore/src/test/java/com/hubspot/rosetta/beans/RosettaNamingBean.java
// @RosettaNaming(LowerCaseWithUnderscoresStrategy.class)
// public class RosettaNamingBean {
//   private String stringProperty;
// 
//   public String getStringProperty() {
//     return stringProperty;
//   }
// 
//   public void setStringProperty(String stringProperty) {
//     this.stringProperty = stringProperty;
//   }
// }


import com.fasterxml.jackson.core.JsonProcessingException;
import com.hubspot.rosetta.Rosetta;
import com.hubspot.rosetta.beans.RosettaNamingBean;
import org.junit.Test;
import java.io.IOException;
import static org.assertj.core.api.Assertions.assertThat;
package com.hubspot.rosetta.annotations;




public class RosettaNamingTest {
  private static final String JSON = "{\"string_property\":\"value\"}";

  @Test
  public void itWritesUnderscoreJson() throws JsonProcessingException {
    RosettaNamingBean bean = new RosettaNamingBean();
    bean.setStringProperty("value");

// Path: RosettaCore/src/main/java/com/hubspot/rosetta/Rosetta.java
// public enum Rosetta {
//   INSTANCE;
// 
//   private static final List<Module> MODULES = new CopyOnWriteArrayList<Module>(defaultModules());
//   private static final AtomicReference<ObjectMapper> MAPPER = new AtomicReference<ObjectMapper>(cloneAndCustomize(new ObjectMapper()));
// 
//   public static ObjectMapper getMapper() {
//     return INSTANCE.get();
//   }
// 
//   /**
//    * @deprecated To customize the ObjectMapper, use {@link com.hubspot.rosetta.jdbi.RosettaObjectMapperOverride}.
//    */
//   @Deprecated
//   public static void addModule(Module module) {
//     INSTANCE.add(module);
//   }
// 
//   /**
//    * @deprecated To customize the ObjectMapper, use {@link com.hubspot.rosetta.jdbi.RosettaObjectMapperOverride}.
//    */
//   @Deprecated
//   public static void setMapper(ObjectMapper mapper) {
//     INSTANCE.set(mapper);
//   }
// 
//   public static ObjectMapper cloneAndCustomize(ObjectMapper mapper) {
//     mapper = mapper.copy();
// 
//     // ObjectMapper#registerModules doesn't exist in 2.1.x
//     for (Module module : MODULES) {
//       mapper.registerModule(module);
//     }
// 
//     return mapper;
//   }
// 
//   private ObjectMapper get() {
//     return MAPPER.get();
//   }
// 
//   private void set(ObjectMapper mapper) {
//     MAPPER.set(cloneAndCustomize(mapper));
//   }
// 
//   private void add(Module module) {
//     MODULES.add(module);
//     MAPPER.get().registerModule(module);
//   }
// 
//   private static List<Module> defaultModules() {
//     List<Module> defaultModules = new ArrayList<Module>();
//     defaultModules.add(new RosettaModule());
// 
//     for (Module module : ServiceLoader.load(AutoDiscoveredModule.class)) {
//       defaultModules.add(module);
//     }
// 
//     for (Module module : ServiceLoader.load(Module.class)) {
//       defaultModules.add(module);
//     }
// 
//     return defaultModules;
//   }
// }
// 
// Path: RosettaCore/src/test/java/com/hubspot/rosetta/beans/RosettaNamingBean.java
// @RosettaNaming(LowerCaseWithUnderscoresStrategy.class)
// public class RosettaNamingBean {
//   private String stringProperty;
// 
//   public String getStringProperty() {
//     return stringProperty;
//   }
// 
//   public void setStringProperty(String stringProperty) {
//     this.stringProperty = stringProperty;
//   }
// }


// Path: RosettaCore/src/test/java/com/hubspot/rosetta/annotations/RosettaNamingTest.java
import com.fasterxml.jackson.core.JsonProcessingException;
import com.hubspot.rosetta.Rosetta;
import com.hubspot.rosetta.beans.RosettaNamingBean;
import org.junit.Test;
import java.io.IOException;
import static org.assertj.core.api.Assertions.assertThat;

package com.hubspot.rosetta.annotations;




public class RosettaNamingTest {
  private static final String JSON = "{\"string_property\":\"value\"}";

  @Test
  public void itWritesUnderscoreJson() throws JsonProcessingException {
    RosettaNamingBean bean = new RosettaNamingBean();
    bean.setStringProperty("value");

    assertThat(Rosetta.getMapper().writeValueAsString(bean)).isEqualTo(JSON);