//*****************************************************************************
//
//  Copyright (C) 2004, International Business Machines
//  Corporation and others.  All Rights Reserved.
//
//  file name:  icuio.txt
//  encoding:   US-ASCII
//  tab size:   4 (not used)
//  indentation:4
//
//  created on: 2004Apr06
//  created by: George Rhoten
//
//  ICU resource bundle source file with test data for data-driven ICU I/O tests.
//
//*****************************************************************************

icuio {
    Info {
        Description { "Test data for ICU I/O" }
        LongDescription {
            "Test data for data-driven conversion tests in icu/source/test/iotest/iotest.cpp\n"
            "Run iotest printf\n"

            "argumentType:\n"
            "\td: double\n"
            "\t1: int8_t (hexadecimal)\n"
            "\t2: int16_t (hexadecimal)\n"
            "\t4: int32_t (hexadecimal)\n"
            "\t8: int64_t (hexadecimal)\n"
            "\ts: char * string\n"
            "\tS: UChar * string\n"
        }
    }
    TestData {
        printf {
            Headers { "format", "result", "argumentType", "argument" }
            Cases {
                {
                    "%e", "1.200000e+000", "d", "1.2"
                }
                {
                    "%e", "1.234568e+006", "d", "1234567.89"
                }
                {
                    "%E", "1.234568E+006", "d", "1234567.89"
                }
                {
                    "%10e", "1.234568e+000", "d", "1.23456789"
                }
                {
                    "%10.4e", "1.2346e+000", "d", "1.23456789"
                }
                {
                    "%-10e", "1.234568e+000", "d", "1.23456789"
                }
                {
                    "%10e", "1.234568e+002", "d", "123.456789"
                }
                {
                    "%-10e", "1.234568e+002", "d", "123.456789"
                }
                {
                    "%-+12.1e", "+1.2e+000   ", "d", "1.234"
                }
                {
                    "%-+12.1e", "-1.2e+000   ", "d", "-1.234"
                }
                {
                    "%- 12.10e", " 1.2340000000e+000", "d", "1.234"
                }
                {
                    "%- 12.1e", "-1.2e+000   ", "d", "-1.234"
                }
                {
                    "%+12.1e", "   +1.2e+000", "d", "1.234"
                }
                {
                    "%+12.1e", "   -1.2e+000", "d", "-1.234"
                }
                {
                    "% 12.1e", "    1.2e+000", "d", "1.234"
                }
                {
                    "% 12.1e", "   -1.2e+000", "d", "-1.234"
                }
                {
                    "%12.1e", "    1.2e+000", "d", "1.234"
                }
                {
                    "%12.1e", "   -1.2e+000", "d", "-1.234"
                }
                {
                    "%.2e", "1.23e+000", "d", "1.234"
                }
                {
                    "%.2e", "-1.23e+000", "d", "-1.234"
                }
                {
                    "%3e", "1.234000e+000", "d", "1.234"
                }
                {
                    "%3e", "-1.234000e+000", "d", "-1.234"
                }
                {
                    "%g", "12345.7", "d", "12345.6789"
                }
                {
                    "%g", "123457", "d", "123456.789"
                }
                {
                    "%g", "1.23457e+006", "d", "1234567.89"
                }
                {
                    "%G", "12345.7", "d", "12345.6789"
                }
                {
                    "%G", "123457", "d", "123456.789"
                }
                {
                    "%G", "1.23457E+006", "d", "1234567.89"
                }
                {
                    "%.0f", "-12", "d", "-12.34"
                }
                {
                    "%.0e", "-1e+001", "d", "-12.34"
                }
                {
                    "%.0g", "-1e+001", "d", "-12.34"
                }
                {
                    "%hd", "-30002", "2", "8ace"
                }
                {
                    "%ho", "105316", "2", "8ace"
                }
                {
                    "%hx", "8ace", "2", "8ace"
                }
                {
                    "%lx", "8ace1234", "4", "8ace1234"
                }
                {
                    "%llx", "123456789abcdef0", "8", "123456789abcdef0"
                }
                {
                    "%lu", "2328760884", "4", "8ace1234"
                }
                // %llu doesn't work yet.
                {
                    "%ld", "-1966206412", "4", "8ace1234"
                }
                {
                    "%lld", "1311768467463790320", "8", "123456789abcdef0"
                }
                {// Ignore the + sign argument
                    "%+u", "2328760884", "4", "8ace1234"
                }
            }
        }
        printfPrecision {
            Headers { "format", "result", "argumentType", "argument", "precision" }
            Cases {
                {
                    "%+1.*e", "+1.2346e+000", "d", "1.2345678", :int{4}
                }
                {
                    "%+2.*e", "+1.234568e+000", "d", "1.2345678", :int{6}
                }
                {
                    "%*d", "12345678", "4", "BC614E", :int{7}
                }
                {
                    "%*d", "12345678", "4", "BC614E", :int{8}
                }
                {
                    "%*d", " 12345678", "4", "BC614E", :int{9}
                }
            }
        }
        scanf {
            Headers { "format", "argument", "argumentType", "result" }
            Cases {
                {
                    "%e", "1.200000e+000", "d", "1.2"
                }
                {
                    "%*e%e", "1.200000e+000 4.825000e+000", "d", "4.825"
                }
                {
                    "%C", "1234", "2", "31"
                }
                {
                    "%*C%C", "1234", "2", "32"
                }
                {
                    "%S", "1234 5678", "S", "1234"
                }
                {
                    "%*S%S", "1234 5678", "S", "5678"
                }
                {
                    "%hd", "1234 5678", "2", "4D2"
                }
                {
                    "%*hd%hd", "1234 5678", "2", "162E"
                }
                {
                    "%d", "1234 5678", "4", "4D2"
                }
                {
                    "%ld", "1234 5678", "4", "4D2"
                }
                {
                    "%lld", "1311768467463790320", "8", "123456789abcdef0"
                }
                {
                    "%3d", "1234 5678", "4", "7B"
                }
                {
                    "%4d", "123", "4", "7B"
                }
                {
                    "%40d", "123", "4", "7B"
                }
                {
                    "%*d%d", "1234 5678", "4", "162E"
                }
                {
                    "%x", "abcd ef01", "4", "abcd"
                }
                {
                    "%3x", "abcd ef01", "4", "abc"
                }
                {
                    "%*hx%hx", "abcd ef01", "2", "ef01"
                }
                {// Extra 9 on the end
                    "%ho", "1046539", "2", "89AB"
                }
                {// Don't read the 0 at the end
                    "%3ho", "7700", "2", "1F8"
                }
                {
                    "%llo", "1777777777777777777777", "8", "FFFFFFFFFFFFFFFF"
                }
                {
                    "%lx", "abcdef01", "4", "abcdef01"
                }
                {
                    "%x", "0x7abcdef0", "4", "7abcdef0"
                }
                {
                    "%llx", "123456789abcdef0", "8", "123456789abcdef0"
                }
                {
                    "%[abce]", "abcd ef01", "S", "abc"
                }
                {
                    "%*[abce]%[de\\ ]", "abcd ef01", "S", "d e"
                }
                {
                    "%[a\U00010000]", "a\U00010000\U00010001b", "S", "a\U00010000"
                }
                {
                    "%S", "a\U00010000b", "S", "a\U00010000b"
                }
            }
        }
    }
}
