public void Test_format_Ljava_lang_ObjectLjava_lang_StringBufferLjava_text_FieldPosition()
        {
            // Test for method java.lang.StringBuffer
            // java.text.IBM.ICU.Text.MessageFormat.format(java.lang.Object [],
            // java.lang.StringBuffer, java.text.FieldPosition)
            IBM.ICU.Text.MessageFormat format = new IBM.ICU.Text.MessageFormat("{1,number,integer}");
            StringBuilder buffer = new StringBuilder();

            format.Format(new Object[] { "0", (double)(53.863d) }, buffer,
                          new FieldPosition(0));
            NUnit.Framework.Assert.AreEqual("54", buffer.ToString(), "Wrong result");
            format.ApplyPattern("{0,choice,0#zero|1#one '{1,choice,2#two {2,time}}'}");
            DateTime date     = DateTime.Now;
            String   expected = "one two "
                                + IBM.ICU.Text.DateFormat.GetTimeInstance().Format(date);
            String result = format.FormatObject(new Object[] { (double )(1.6d),
                                                               ((int)(3)), date });

            NUnit.Framework.Assert.IsTrue(expected.Equals(result), "Choice not recursive:\n" + expected + "\n" + result);
        }
        public void Test_ConstructorLjava_lang_String()
        {
            // Test for method java.text.MessageFormat(java.lang.String)
            IBM.ICU.Text.MessageFormat format = new IBM.ICU.Text.MessageFormat(
                "abc {4,time} def {3,date} ghi {2,number} jkl {1,choice,0#low|1#high} mnop {0}");
            NUnit.Framework.Assert.IsTrue((Object)format.GetType() == (Object)typeof(IBM.ICU.Text.MessageFormat), "Not a IBM.ICU.Text.MessageFormat");
            ILOG.J2CsMapping.Formatting.Format[] formats = format.GetFormats();
            NUnit.Framework.Assert.IsNotNull(formats, "null formats");
            NUnit.Framework.Assert.IsTrue(formats.Length >= 5, "Wrong format count: " + formats.Length);
            NUnit.Framework.Assert.IsTrue(formats[0].Equals(IBM.ICU.Text.DateFormat.GetTimeInstance()), "Wrong time format");
            NUnit.Framework.Assert.IsTrue(formats[1].Equals(IBM.ICU.Text.DateFormat.GetDateInstance()), "Wrong date format");
            NUnit.Framework.Assert.IsTrue(formats[2].Equals(IBM.ICU.Text.NumberFormat.GetInstance()), "Wrong number format");
            NUnit.Framework.Assert.IsTrue(formats[3].Equals(new ChoiceFormat("0.0#low|1.0#high")), "Wrong choice format");
            NUnit.Framework.Assert.IsNull(formats[4], "Wrong string format");

            DateTime      date   = DateTime.Now;
            FieldPosition pos    = new FieldPosition(-1);
            StringBuilder buffer = new StringBuilder();

            format.Format(new Object[] { "123", (double )(1.6d), (double )(7.2d),
                                         date, date }, buffer, pos);
            String result = buffer.ToString();

            buffer.Length = 0;
            buffer.Append("abc ");
            buffer.Append(IBM.ICU.Text.DateFormat.GetTimeInstance().Format(date));
            buffer.Append(" def ");
            buffer.Append(IBM.ICU.Text.DateFormat.GetDateInstance().Format(date));
            buffer.Append(" ghi ");
            buffer.Append(IBM.ICU.Text.NumberFormat.GetInstance().Format((double)(7.2d)));
            buffer.Append(" jkl high mnop 123");
            NUnit.Framework.Assert.IsTrue(result.Equals(buffer.ToString()), "Wrong answer:\n" + result + "\n" + buffer);

            NUnit.Framework.Assert.AreEqual("Test message", new IBM.ICU.Text.MessageFormat(
                                                "Test message").FormatObject(new Object[0]), "Simple string");

            result = new IBM.ICU.Text.MessageFormat("Don't").FormatObject(new Object[0]);
            NUnit.Framework.Assert.IsTrue("Dont".Equals(result), "Should not throw IllegalArgumentException: " + result);

            try
            {
                new IBM.ICU.Text.MessageFormat("Invalid {1,foobar} format descriptor!");
                NUnit.Framework.Assert.Fail("Expected test_ConstructorLjava_lang_String to throw IAE.");
            }
            catch (ArgumentException ex)
            {
                // expected
            }

            try
            {
                new IBM.ICU.Text.MessageFormat(
                    "Invalid {1,date,invalid-spec} format descriptor!");
            }
            catch (ArgumentException ex_0)
            {
                // expected
            }

            //CheckSerialization(new IBM.ICU.Text.MessageFormat(""));
            //CheckSerialization(new IBM.ICU.Text.MessageFormat("noargs"));
            //CheckSerialization(new IBM.ICU.Text.MessageFormat("{0}"));
            //CheckSerialization(new IBM.ICU.Text.MessageFormat("a{0}"));
            //CheckSerialization(new IBM.ICU.Text.MessageFormat("{0}b"));
            //CheckSerialization(new IBM.ICU.Text.MessageFormat("a{0}b"));

            // Regression for HARMONY-65
            try
            {
                new IBM.ICU.Text.MessageFormat("{0,number,integer");
                NUnit.Framework.Assert.Fail("Assert 0: Failed to detect unmatched brackets.");
            }
            catch (ArgumentException e)
            {
                // expected
            }
        }