/* * Copyright 2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.glowroot.common.util; import java.util.Locale; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; public class FormattingTest { @Test public void testFormattingInEnglishLocale() { testFormattingInLocale(new Locale("en"), ',', '.'); } @Test public void testFormattingInUkraineLocale() { // unicode 160 is non-breaking space testFormattingInLocale(new Locale("uk"), (char) 160, ','); } @Test public void testFormattingBytesInEnglishLocale() { testFormattingBytesInLocale(new Locale("en"), '.'); } @Test public void testFormattingBytesInUkraineLocale() { testFormattingBytesInLocale(new Locale("uk"), ','); } public void testFormattingBytesInLocale(Locale locale, char ds) { assertThat(Formatting.formatBytes(0, locale)).isEqualTo("0"); assertThat(Formatting.formatBytes(1, locale)).isEqualTo("1 byte"); assertThat(Formatting.formatBytes(2, locale)).isEqualTo("2 bytes"); assertThat(Formatting.formatBytes(10, locale)).isEqualTo("10 bytes"); assertThat(Formatting.formatBytes(100, locale)).isEqualTo("100 bytes"); assertThat(Formatting.formatBytes(1023, locale)).isEqualTo("1023 bytes"); assertThat(Formatting.formatBytes(1024, locale)).isEqualTo("1" + ds + "0 KB"); assertThat(Formatting.formatBytes(1500, locale)).isEqualTo("1" + ds + "5 KB"); assertThat(Formatting.formatBytes(2047, locale)).isEqualTo("2" + ds + "0 KB"); assertThat(Formatting.formatBytes(1024 * 1024, locale)).isEqualTo("1" + ds + "0 MB"); assertThat(Formatting.formatBytes(1024 * 1024 * 1024, locale)).isEqualTo("1" + ds + "0 GB"); } private static void testFormattingInLocale(Locale locale, char ts, char ds) { assertThat(Formatting.displaySixDigitsOfPrecision(3, locale)) .isEqualTo("3"); assertThat(Formatting.displaySixDigitsOfPrecision(333333, locale)) .isEqualTo("333" + ts + "333"); assertThat(Formatting.displaySixDigitsOfPrecision(3333333, locale)) .isEqualTo("3" + ts + "333" + ts + "333"); assertThat(Formatting.displaySixDigitsOfPrecision(3.3, locale)) .isEqualTo("3" + ds + "3"); assertThat(Formatting.displaySixDigitsOfPrecision(3333.3, locale)) .isEqualTo("3" + ts + "333" + ds + "3"); assertThat(Formatting.displaySixDigitsOfPrecision(3333333.3, locale)) .isEqualTo("3" + ts + "333" + ts + "333"); assertThat(Formatting.displaySixDigitsOfPrecision(3.33333, locale)) .isEqualTo("3" + ds + "33333"); assertThat(Formatting.displaySixDigitsOfPrecision(3.333333, locale)) .isEqualTo("3" + ds + "33333"); assertThat(Formatting.displaySixDigitsOfPrecision(3.3333333, locale)) .isEqualTo("3" + ds + "33333"); assertThat(Formatting.displaySixDigitsOfPrecision(0.333333, locale)) .isEqualTo("0" + ds + "333333"); assertThat(Formatting.displaySixDigitsOfPrecision(0.3333333, locale)) .isEqualTo("0" + ds + "333333"); assertThat(Formatting.displaySixDigitsOfPrecision(0.33333333, locale)) .isEqualTo("0" + ds + "333333"); assertThat(Formatting.displaySixDigitsOfPrecision(0.0333333, locale)) .isEqualTo("0" + ds + "0333333"); assertThat(Formatting.displaySixDigitsOfPrecision(0.03333333, locale)) .isEqualTo("0" + ds + "0333333"); assertThat(Formatting.displaySixDigitsOfPrecision(0.033333333, locale)) .isEqualTo("0" + ds + "0333333"); assertThat(Formatting.displaySixDigitsOfPrecision(0.000000333333, locale)) .isEqualTo("0" + ds + "000000333333"); assertThat(Formatting.displaySixDigitsOfPrecision(0.0000003333333, locale)) .isEqualTo("0" + ds + "000000333333"); assertThat(Formatting.displaySixDigitsOfPrecision(0.00000033333333, locale)) .isEqualTo("0" + ds + "000000333333"); } }