// Copyright (c) 2003-present, Jodd Team (http://jodd.org)
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
package jodd.format;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class FormatTest {
@Test
public void testByte() {
assertEquals("0b010001", Printf.str("%#08b", 0x11));
byte b = Byte.MAX_VALUE;
assertEquals("127", Printf.str("%i", b));
assertEquals("127", Printf.str("%u", b));
assertEquals("7f", Printf.str("%x", b));
assertEquals("7F", Printf.str("%X", b));
assertEquals("0x7f", Printf.str("%#x", b));
assertEquals("0X7F", Printf.str("%#X", b));
assertEquals("1111111", Printf.str("%b", b));
assertEquals("0b1111111", Printf.str("%#b", b));
assertEquals("0B1111111", Printf.str("%#B", b));
assertEquals("01111111", Printf.str("%08b", b));
assertEquals("0b01111111", Printf.str("%#010b", b));
assertEquals("0B01111111", Printf.str("%#010B", b));
assertEquals("177", Printf.str("%o", b));
b = -1;
assertEquals("-1", Printf.str("%i", b));
assertEquals("ff", Printf.str("%x", Integer.valueOf(-1).byteValue()));
assertEquals("255", Printf.str("%u", b));
assertEquals("ff", Printf.str("%x", b));
assertEquals("FF", Printf.str("%X", b));
assertEquals("0xff", Printf.str("%#x", b));
assertEquals("0XFF", Printf.str("%#X", b));
assertEquals("11111111", Printf.str("%b", b));
assertEquals("0b11111111", Printf.str("%#b", b));
assertEquals("0B11111111", Printf.str("%#B", b));
assertEquals("11111111", Printf.str("%08b", b));
assertEquals("0b11111111", Printf.str("%#08b", b));
assertEquals("0B11111111", Printf.str("%#08B", b));
assertEquals("377", Printf.str("%o", b));
b = Byte.MIN_VALUE;
assertEquals("-128", Printf.str("%i", b));
assertEquals("128", Printf.str("%u", b));
assertEquals("80", Printf.str("%x", b));
assertEquals("80", Printf.str("%X", b));
assertEquals("10000000", Printf.str("%b", b));
assertEquals("0b10000000", Printf.str("%#b", b));
assertEquals("0B10000000", Printf.str("%#B", b));
assertEquals("10000000", Printf.str("%08b", b));
assertEquals("0b10000000", Printf.str("%#08b", b));
assertEquals("0B10000000", Printf.str("%#08B", b));
assertEquals("200", Printf.str("%o", b));
}
@Test
public void testShort() {
short s = Short.MAX_VALUE;
assertEquals("32767", Printf.str("%i", s));
assertEquals("32767", Printf.str("%u", s));
assertEquals("7fff", Printf.str("%x", s));
assertEquals("7FFF", Printf.str("%X", s));
assertEquals("0x7fff", Printf.str("%#x", s));
assertEquals("0X7FFF", Printf.str("%#X", s));
assertEquals("111111111111111", Printf.str("%b", s));
assertEquals("0b111111111111111", Printf.str("%#b", s));
assertEquals("0B111111111111111", Printf.str("%#B", s));
assertEquals("77777", Printf.str("%o", s));
s = -1;
assertEquals("-1", Printf.str("%i", s));
assertEquals("65535", Printf.str("%u", s));
assertEquals("ffff", Printf.str("%x", s));
assertEquals("FFFF", Printf.str("%X", s));
assertEquals("0xffff", Printf.str("%#x", s));
assertEquals("0XFFFF", Printf.str("%#X", s));
assertEquals("1111111111111111", Printf.str("%b", s));
assertEquals("0b1111111111111111", Printf.str("%#b", s));
assertEquals("0B1111111111111111", Printf.str("%#B", s));
assertEquals("177777", Printf.str("%o", s));
assertEquals("ffff", Printf.str("%x", Integer.valueOf(-1).shortValue()));
s = Short.MIN_VALUE;
assertEquals("-32768", Printf.str("%i", s));
assertEquals("32768", Printf.str("%u", s));
assertEquals("8000", Printf.str("%x", s));
assertEquals("8000", Printf.str("%X", s));
assertEquals("1000000000000000", Printf.str("%b", s));
assertEquals("0b1000000000000000", Printf.str("%#b", s));
assertEquals("0B1000000000000000", Printf.str("%#B", s));
assertEquals("100000", Printf.str("%o", s));
}
@Test
public void testIntLong() {
assertEquals("1", Printf.str("%d", 1));
assertEquals("17", Printf.str("%d", 17));
assertEquals("173", Printf.str("%d", 173));
assertEquals("173000000", Printf.str("%d", 173000000));
assertEquals("+173", Printf.str("%+i", 173));
assertEquals("+173", Printf.str("%+0i", 173));
assertEquals("173", Printf.str("%0i", 173));
assertEquals("+173", Printf.str("%+u", 173));
assertEquals("+173", Printf.str("%+0u", 173));
assertEquals("173", Printf.str("%0u", 173));
assertEquals("AD", Printf.str("%X", 173));
assertEquals("ad", Printf.str("%+x", 173));
assertEquals("7", Printf.str("%+0X", 7));
assertEquals("0X7", Printf.str("%#X", 7));
assertEquals("0x7", Printf.str("%#x", 7));
assertEquals("0XAD", Printf.str("%#X", 173));
assertEquals("255", Printf.str("%o", 173));
int i = -1;
assertEquals("-1", Printf.str("%,d", i));
assertEquals("-1", Printf.str("%,i", i));
assertEquals("4294967295", Printf.str("%u", i)); // 2^32 - 1
assertEquals("4,294,967,295", Printf.str("%,u", i));
assertEquals("ffffffff", Printf.str("%x", i));
assertEquals("ffff ffff", Printf.str("%,x", i));
i = 2147483647; // 2^31 - 1 (max int)
assertEquals(Integer.MAX_VALUE, i);
assertEquals("2147483647", Printf.str("%d", i));
assertEquals("2147483647", Printf.str("%i", i));
assertEquals("2147483647", Printf.str("%u", i));
assertEquals("2,147,483,647", Printf.str("%,d", i));
assertEquals("2,147,483,647", Printf.str("%,i", i));
assertEquals("2,147,483,647", Printf.str("%,u", i));
assertEquals("7fffffff", Printf.str("%x", i));
assertEquals("7fff ffff", Printf.str("%,x", i));
i++; // -2^31 (min int)
assertEquals(Integer.MIN_VALUE, i);
assertEquals("-2147483648", Printf.str("%d", i));
assertEquals("-2147483648", Printf.str("%i", i));
assertEquals("2147483648", Printf.str("%u", i));
assertEquals("-2,147,483,648", Printf.str("%,d", i));
assertEquals("-2,147,483,648", Printf.str("%,i", i));
assertEquals("2,147,483,648", Printf.str("%,u", i));
assertEquals("80000000", Printf.str("%x", i));
assertEquals("8000 0000", Printf.str("%,x", i));
long l = 2147483648L; // 2^31 (max int + 1)
assertEquals("2147483648", Printf.str("%d", l));
assertEquals("-2147483648", Printf.str("%i", l));
assertEquals("2147483648", Printf.str("%u", l));
assertEquals("2,147,483,648", Printf.str("%,d", l));
assertEquals("-2,147,483,648", Printf.str("%,i", l));
assertEquals("2,147,483,648", Printf.str("%,u", l));
assertEquals("80000000", Printf.str("%x", l));
assertEquals("8000 0000", Printf.str("%,x", l));
l = -2147483649L; // -2^31-1 (min int - 1)
assertEquals("-2147483649", Printf.str("%d", l));
assertEquals("2147483647", Printf.str("%i", l));
assertEquals("18446744071562067967", Printf.str("%u", l));
assertEquals("-2,147,483,649", Printf.str("%,d", l));
assertEquals("2,147,483,647", Printf.str("%,i", l));
assertEquals("18,446,744,071,562,067,967", Printf.str("%,u", l));
assertEquals("FFFFFFFF7FFFFFFF", Printf.str("%X", l));
assertEquals("FFFF FFFF 7FFF FFFF", Printf.str("%,X", l));
l = -1;
assertEquals("-1", Printf.str("%d", l));
assertEquals("-1", Printf.str("%i", l));
assertEquals("18446744073709551615", Printf.str("%u", l));
assertEquals("18,446,744,073,709,551,615", Printf.str("%,u", l));
assertEquals("FFFFFFFFFFFFFFFF", Printf.str("%X", l));
assertEquals("FFFF FFFF FFFF FFFF", Printf.str("%,X", l));
l = Long.MAX_VALUE;
assertEquals("9223372036854775807", Printf.str("%d", l));
assertEquals("9,223,372,036,854,775,807", Printf.str("%,d", l));
assertEquals("-1", Printf.str("%i", l));
assertEquals("9223372036854775807", Printf.str("%u", l));
assertEquals("9,223,372,036,854,775,807", Printf.str("%,u", l));
assertEquals("7FFFFFFFFFFFFFFF", Printf.str("%X", l));
assertEquals("7FFF FFFF FFFF FFFF", Printf.str("%,X", l));
l = Long.MIN_VALUE;
assertEquals("-9223372036854775808", Printf.str("%d", l));
assertEquals("-9,223,372,036,854,775,808", Printf.str("%,d", l));
assertEquals("0", Printf.str("%i", l));
assertEquals("9223372036854775808", Printf.str("%u", l));
assertEquals("9,223,372,036,854,775,808", Printf.str("%,u", l));
assertEquals("8000000000000000", Printf.str("%X", l));
assertEquals("8000 0000 0000 0000", Printf.str("%,X", l));
}
@Test
public void testChar() {
assertEquals("A", Printf.str("%c", 'A'));
assertEquals("c", Printf.str("%c", 'c'));
assertEquals("65", Printf.str("%d", 'A'));
assertEquals("41", Printf.str("%x", 'A'));
assertEquals("101", Printf.str("%o", 'A'));
assertEquals("0xdb00", Printf.str("%#x", '\udb00'));
assertEquals("A", Printf.str("%c", 65));
assertEquals("A", Printf.str("%c", (byte)65));
assertEquals("--- A ---", Printf.str("--- %c ---", 'A'));
assertEquals("A", Printf.str("%c", 65));
assertEquals("A", Printf.str("%c", (byte) 65));
assertEquals("A", Printf.str("%c", (short) 65));
assertEquals("A", Printf.str("%c", Integer.valueOf(65)));
assertEquals("A", Printf.str("%c", Integer.valueOf(65).byteValue()));
assertEquals("A", Printf.str("%c", Integer.valueOf(65).shortValue()));
assertEquals("A", Printf.str("%c", new Character('A')));
assertEquals("65", Printf.str("%d", new Character('A')));
assertEquals("41", Printf.str("%x", new Character('A')));
assertEquals("101", Printf.str("%o", new Character('A')));
}
@Test
public void testFormatedInt() {
assertEquals("0001", Printf.str("%04d", 1));
assertEquals("+001", Printf.str("%+04d", 1));
assertEquals("-001", Printf.str("%+04d", -1));
assertEquals("+0001", Printf.str("%+~04d", 1));
assertEquals("0001", Printf.str("%~04d", 1));
assertEquals("-0001", Printf.str("%+~04d", -1));
assertEquals(" 1", Printf.str("%4d", 1));
assertEquals(" +1", Printf.str("%+4d", 1));
assertEquals(" -1", Printf.str("%+4d", -1));
assertEquals("+1 ", Printf.str("%-+4d", 1));
assertEquals("-1 ", Printf.str("%-+4d", -1));
assertEquals("1", Printf.str("%,d", 1));
assertEquals("12", Printf.str("%,d", 12));
assertEquals("123", Printf.str("%,d", 123));
assertEquals("1,234", Printf.str("%,d", 1234));
assertEquals("12,345", Printf.str("%,d", 12345));
assertEquals("123,456", Printf.str("%,d", 123456));
}
@Test
public void testStrings() {
assertEquals("A", Printf.str("%c", 'A'));
assertEquals("str", Printf.str("%s", "str"));
assertEquals("% 1", Printf.str("%% %i", 1));
assertEquals("% % % 1", Printf.str("%% %% %% %i", 1));
assertEquals("1 %%", Printf.str("%i %%", 1));
assertEquals("q w", Printf.str("%s %s", new String[]{"q", "w"}));
assertEquals(" q w", Printf.str(" %s %s", new String[]{"q", "w"}));
assertEquals("q w ", Printf.str("%s %s ", new String[]{"q", "w"}));
assertEquals(" q w 1 2 3 ", Printf.str(" %s %s %s %s %s ", new String[]{"q", "w", "1", "2", "3"}));
assertEquals("q%w", Printf.str("%s%%%s", new String[]{"q", "w"}));
assertEquals("q%%", Printf.str("%s%%", new String[]{"q"}));
assertEquals("q%% ", Printf.str("%s%% ", new String[]{"q"}));
assertEquals("q %%", Printf.str("%s %%", new String[]{"q"}));
assertEquals("q %% ", Printf.str("%s %% ", new String[]{"q"}));
assertEquals("%q", Printf.str("%%%s", new String[]{"q"}));
assertEquals("% q", Printf.str("%% %s", new String[]{"q"}));
assertEquals("% q ", Printf.str("%% %s ", new String[]{"q"}));
assertEquals(" % q ", Printf.str(" %% %s ", new String[]{"q"}));
assertEquals("null", Printf.str("%s", (Object)null));
}
@Test
public void testFloats() {
assertEquals("1.700000", Printf.str("%f", 1.7));
assertEquals("1.7", Printf.str("%1.1f", 1.7));
assertEquals("1.7", Printf.str("%2.1f", 1.7));
assertEquals("1.7", Printf.str("%3.1f", 1.7));
assertEquals(" 1.7", Printf.str("%4.1f", 1.7));
assertEquals("1.70", Printf.str("%4.2f", 1.7));
assertEquals("1.80", Printf.str("%4.2f", 1.79999999999));
assertEquals("0", Printf.str("%1.0f", 0.4999));
assertEquals("1", Printf.str("%1.0f", 0.50));
assertEquals("1", Printf.str("%1.0f", 0.51));
assertEquals("1.01", Printf.str("%3.2f", 1.0051));
assertEquals("1.01", Printf.str("%3.2f", 1.0099));
assertEquals("17.3", Printf.str("%1.1f", 17.3));
assertEquals("17.3", Printf.str("%2.1f", 17.3));
assertEquals("17.3", Printf.str("%3.1f", 17.3));
assertEquals("17.3", Printf.str("%4.1f", 17.3));
assertEquals("17.30", Printf.str("%4.2f", 17.3));
assertEquals(" 17.3", Printf.str("%5.1f", 17.3));
assertEquals("17.30", Printf.str("%5.2f", 17.3));
assertEquals("1.100000E+002", Printf.str("%E", 1.1e2));
assertEquals("110", Printf.str("%G", 1.1e2));
assertEquals("1.100000E+013", Printf.str("%E", 1.1e13));
assertEquals("1.1E+013", Printf.str("%G", 1.1e13));
assertEquals("1.100000e+010", Printf.str("%e", 1.1e10));
assertEquals("1.1e+010", Printf.str("%g", 1.1e10));
assertEquals("1.1000e+010", Printf.str("%.4e", 1.1e10));
assertEquals("1.1e+010", Printf.str("%.4g", 1.1e10));
assertEquals("1.0010e+012", Printf.str("%.4e", 100.1e10));
assertEquals("1.001e+012", Printf.str("%.4g", 100.1e10));
assertEquals("1.0010e+012", Printf.str("%6.4e", 100.1e10));
assertEquals("1.001e+012", Printf.str("%g", 100.1e10));
}
@Test
public void testBoolean() {
assertEquals("true", Printf.str("%l", true));
assertEquals("false", Printf.str("%l", false));
assertEquals("TRUE", Printf.str("%L", true));
assertEquals("FALSE", Printf.str("%L", false));
assertEquals("true", Printf.str("%l", 123));
assertEquals("false", Printf.str("%l", 0));
assertEquals("TRUE", Printf.str("%L", 123));
assertEquals("FALSE", Printf.str("%L", 0));
assertEquals("true", Printf.str("%l", 123L));
assertEquals("false", Printf.str("%l", 0L));
assertEquals("TRUE", Printf.str("%L", 123L));
assertEquals("FALSE", Printf.str("%L", 0L));
}
@Test
public void testIntRanges() {
int i;
i = 0;
assertEquals(Integer.toString(i), Printf.str("%d", i));
assertEquals(Integer.toString(i), Printf.str("%i", i));
assertEquals(Integer.toString(i), Printf.str("%x", i));
assertEquals(Integer.toString(i), Printf.str("%u", i));
assertEquals(Integer.toString(i), Printf.str("%o", i));
assertEquals(Integer.toString(i), Printf.str("%b", i));
i = 1;
long v = 1;
assertEquals(Integer.toString(i), Printf.str("%d", i));
assertEquals(Integer.toString(i), Printf.str("%i", i));
assertEquals(Long.toString(v, 16), Printf.str("%x", i));
assertEquals(Long.toString(v), Printf.str("%u", i));
assertEquals(Long.toString(v, 8), Printf.str("%o", i));
assertEquals(Long.toString(v, 2), Printf.str("%b", i));
i = Integer.MAX_VALUE;
v = (1L << 31) - 1;
assertEquals(Integer.toString(i), Printf.str("%d", i));
assertEquals(Integer.toString(i), Printf.str("%i", i));
assertEquals(Long.toString(v, 16), Printf.str("%x", i));
assertEquals(Long.toString(v), Printf.str("%u", i));
assertEquals(Long.toString(v, 8), Printf.str("%o", i));
assertEquals(Long.toString(v, 2), Printf.str("%b", i));
i = Integer.MIN_VALUE;
v = (1L << 31);
assertEquals(Integer.toString(i), Printf.str("%d", i));
assertEquals(Integer.toString(i), Printf.str("%i", i));
assertEquals(Long.toString(v, 16), Printf.str("%x", i));
assertEquals(Long.toString(v), Printf.str("%u", i));
assertEquals(Long.toString(v, 8), Printf.str("%o", i));
assertEquals(Long.toString(v, 2), Printf.str("%b", i));
i = -1;
v = (1L << 32) - 1;
assertEquals(Integer.toString(i), Printf.str("%d", i));
assertEquals(Integer.toString(i), Printf.str("%i", i));
assertEquals(Long.toString(v, 16), Printf.str("%x", i));
assertEquals(Long.toString(v), Printf.str("%u", i));
assertEquals(Long.toString(v, 8), Printf.str("%o", i));
assertEquals(Long.toString(v, 2), Printf.str("%b", i));
}
@Test
public void testLongRanges() {
long l;
l = 0;
assertEquals(Long.toString(l), Printf.str("%d", l));
assertEquals(Long.toString(l), Printf.str("%i", l));
assertEquals(Long.toString(l), Printf.str("%x", l));
assertEquals(Long.toString(l), Printf.str("%u", l));
assertEquals(Long.toString(l), Printf.str("%o", l));
assertEquals(Long.toString(l), Printf.str("%b", l));
l = 1;
assertEquals(Long.toString(l), Printf.str("%d", l));
assertEquals(Long.toString(l), Printf.str("%i", l));
assertEquals(Long.toString(l, 16), Printf.str("%x", l));
assertEquals(Long.toString(l), Printf.str("%u", l));
assertEquals(Long.toString(l, 8), Printf.str("%o", l));
assertEquals(Long.toString(l, 2), Printf.str("%b", l));
l = Integer.MAX_VALUE;
long v = (1L << 31) - 1;
assertEquals(Long.toString(l), Printf.str("%d", l));
assertEquals(Long.toString(l), Printf.str("%i", l));
assertEquals(Long.toString(v, 16), Printf.str("%x", l));
assertEquals(Long.toString(v), Printf.str("%u", l));
assertEquals(Long.toString(v, 8), Printf.str("%o", l));
assertEquals(Long.toString(v, 2), Printf.str("%b", l));
l = Integer.MIN_VALUE;
assertEquals(Long.toString(l), Printf.str("%d", l));
assertEquals(Long.toString(l), Printf.str("%i", l));
assertEquals(Long.toHexString(l), Printf.str("%x", l));
assertEquals("18446744071562067968", Printf.str("%u", l));
assertEquals(Long.toOctalString(l), Printf.str("%o", l));
assertEquals(Long.toBinaryString(l), Printf.str("%b", l));
l = -1;
assertEquals(Long.toString(l), Printf.str("%d", l));
assertEquals(Long.toString(l), Printf.str("%i", l));
assertEquals(Long.toHexString(l), Printf.str("%x", l));
assertEquals("18446744073709551615", Printf.str("%u", l));
assertEquals(Long.toOctalString(l), Printf.str("%o", l));
assertEquals(Long.toBinaryString(l), Printf.str("%b", l));
l = ((long) Integer.MAX_VALUE) + 1;
v = (1L << 31);
assertEquals(Long.toString(l), Printf.str("%d", l));
assertEquals(Long.toString(Integer.MIN_VALUE), Printf.str("%i", l));
assertEquals(Long.toString(v, 16), Printf.str("%x", l));
assertEquals(Long.toString(v), Printf.str("%u", l));
assertEquals(Long.toString(v, 8), Printf.str("%o", l));
assertEquals(Long.toString(v, 2), Printf.str("%b", l));
l = ((long) Integer.MIN_VALUE) - 1;
assertEquals(Long.toString(l), Printf.str("%d", l));
assertEquals(Long.toString(Integer.MAX_VALUE), Printf.str("%i", l));
assertEquals(Long.toHexString(l), Printf.str("%x", l));
assertEquals("18446744071562067967", Printf.str("%u", l));
assertEquals(Long.toOctalString(l), Printf.str("%o", l));
assertEquals(Long.toBinaryString(l), Printf.str("%b", l));
l = Long.MAX_VALUE;
assertEquals(Long.toString(l), Printf.str("%d", l));
assertEquals(Long.toString(-1), Printf.str("%i", l));
assertEquals(Long.toHexString(l), Printf.str("%x", l));
assertEquals("9223372036854775807", Printf.str("%u", l));
assertEquals(Long.toOctalString(l), Printf.str("%o", l));
assertEquals(Long.toBinaryString(l), Printf.str("%b", l));
l = Long.MIN_VALUE;
assertEquals(Long.toString(l), Printf.str("%d", l));
assertEquals(Long.toString(0), Printf.str("%i", l));
assertEquals(Long.toHexString(l), Printf.str("%x", l));
assertEquals("9223372036854775808", Printf.str("%u", l));
assertEquals(Long.toOctalString(l), Printf.str("%o", l));
assertEquals(Long.toBinaryString(l), Printf.str("%b", l));
}
@Test
public void testBinary() {
assertEquals("1", Printf.str("%b", 1));
assertEquals("11", Printf.str("%b", 3));
assertEquals("1101", Printf.str("%b", 13));
assertEquals("11111111111111111111111111110011", Printf.str("%b", -13));
assertEquals("11111111 11111111 11111111 11110011", Printf.str("%,b", -13));
assertEquals("1111111111111111111111111111111111111111111111111111111111110011", Printf.str("%b", -13L));
assertEquals("11111111 11111111 11111111 11111111 11111111 11111111 11111111 11110011", Printf.str("%,b", -13L));
assertEquals("0b1", Printf.str("%#b", 1));
assertEquals("0b11", Printf.str("%#b", 3));
assertEquals("0b1101", Printf.str("%#b", 13));
assertEquals("0b11111111111111111111111111110011", Printf.str("%#b", -13));
assertEquals("0b11111111 11111111 11111111 11110011", Printf.str("%,#b", -13));
assertEquals("0b1111111111111111111111111111111111111111111111111111111111110011", Printf.str("%#b", -13L));
assertEquals("0b11111111 11111111 11111111 11111111 11111111 11111111 11111111 11110011", Printf.str("%,#b", -13L));
assertEquals("0B1", Printf.str("%#B", 1));
assertEquals("0B11", Printf.str("%#B", 3));
assertEquals("0B1101", Printf.str("%#B", 13));
assertEquals("0B11111111111111111111111111110011", Printf.str("%#B", -13));
assertEquals("0B11111111 11111111 11111111 11110011", Printf.str("%,#B", -13));
assertEquals("0B1111111111111111111111111111111111111111111111111111111111110011", Printf.str("%#B", -13L));
assertEquals("0B11111111 11111111 11111111 11111111 11111111 11111111 11111111 11110011", Printf.str("%,#B", -13L));
}
@Test
public void testSuccessive() {
String fmt = "...%i...%i...";
PrintfFormat pf = new PrintfFormat();
fmt = pf.reinit(fmt).form(1);
fmt = pf.reinit(fmt).form(2);
assertEquals("...1...2...", fmt);
}
@Test
public void testNumbers() {
String result = Printf.str("%i %3.2f %X", Integer.valueOf(173), Double.valueOf(1.73), Long.valueOf(10));
assertEquals("173 1.73 A", result);
}
@Test
public void testDoublesRound() {
assertEquals(Printf.str("%1.0f", 0.50), "1");
assertEquals(Printf.str("%2.1f", 0.1499), "0.1");
assertEquals(Printf.str("%2.1f", 0.15), "0.2");
assertEquals(Printf.str("%1.0f", 0.51), "1");
assertEquals(Printf.str("%2.1f", 0.1501), "0.2");
assertEquals(Printf.str("%3.2f", 1.0099), "1.01");
}
@Test
public void testObject() {
assertTrue(Printf.str("%p", new Object()).length() > 4);
assertTrue(Printf.str("%p", new Integer(1)).length() > 4);
}
@Test
public void testMultipleObject() {
assertEquals("173, hej true", Printf.str("%i, %s %l", 173, "hej", true));
}
@Test
public void testAlternateChar() {
assertEquals("\\u41", Printf.str("%#c", 'A'));
assertEquals("\\u1a34", Printf.str("%#c", '\u1A34'));
assertEquals("\\uff00", Printf.str("%#c", '\uFF00'));
assertEquals("\\u1A34", Printf.str("%#C", '\u1A34'));
assertEquals("\\uFF00", Printf.str("%#C", '\uFF00'));
assertEquals("A", Printf.str("%c", 'A'));
assertEquals("\u1234", Printf.str("%c", '\u1234'));
assertEquals("\uFF00", Printf.str("%c", '\uFF00'));
}
}