### Question:
Utils { public static Number normalizeNumber(Number value) { if (value == null) { return null; } double doubleValue = value.doubleValue(); if (Double.isNaN(doubleValue) || Double.isInfinite(doubleValue)) { return Double.valueOf(doubleValue); } else if (value.intValue() == doubleValue) { return value.intValue(); } else if (value.longValue() == doubleValue) { return value.longValue(); } else { return Double.valueOf(doubleValue); } }  static Object getSubdocumentValue(Document document, String key); static Object getSubdocumentValueCollectionAware(Document document, String key); static String getDatabaseNameFromFullName(String fullName); static String getCollectionNameFromFullName(String fullName); static boolean isTrue(Object value); static Number normalizeNumber(Number value); static void markOkay(Document result); static String join(List<?> values, String delimiter); static void changeSubdocumentValue(Object document, String key, Object newValue); static void validateFieldNames(Document document); static Object removeSubdocumentValue(Object document, String key); static String describeType(Object value); static String joinTail(List<String> pathFragments); static String firstFragment(String input); static List<String> splitPath(String input); static String getShorterPathIfPrefix(String path1, String path2); static List<String> collectCommonPathFragments(String path1, String path2); static String getHostName(); static void copySubdocumentValue(Document input, Document result, String key); static final String PATH_DELIMITER; }### Answer:
@Test void testNormalizeNumber() throws Exception { assertThat(Utils.normalizeNumber(null)).isNull(); assertThat(Utils.normalizeNumber(0)).isEqualTo(0); assertThat(Utils.normalizeNumber(1.0)).isEqualTo(1); assertThat(Utils.normalizeNumber(-1.0)).isEqualTo(-1); assertThat(Utils.normalizeNumber(10000000000.0)).isEqualTo(10000000000L); assertThat(Utils.normalizeNumber(3.5)).isEqualTo(3.5); assertThat(Utils.normalizeNumber(3.5F)).isEqualTo(3.5); }