Пример #1
0
        public void TestHelloWithQuote()
        {
            // Apostrophe starts quoted literal text.
            MessageNode       msg    = MessagePatternUtil.BuildMessageNode("Hel'{o!");
            ExpectMessageNode expect = new ExpectMessageNode().ExpectTextThatContains("Hel{o");

            expect.CheckMatches(msg);
            // Terminating the quote should yield the same result.
            msg = MessagePatternUtil.BuildMessageNode("Hel'{'o!");
            expect.CheckMatches(msg);
            // Double apostrophe inside quoted literal text still encodes a single apostrophe.
            msg    = MessagePatternUtil.BuildMessageNode("a'{bc''de'f");
            expect = new ExpectMessageNode().ExpectTextThatContains("a{bc'def");
            expect.CheckMatches(msg);
        }
Пример #2
0
        public void TestComplexArgs()
        {
            MessageNode msg = MessagePatternUtil.BuildMessageNode(
                "I don't {a,plural,other{w'{'on't #'#'}} and " +
                "{b,select,other{shan't'}'}} '{'''know'''}' and " +
                "{c,choice,0#can't'|'}" +
                "{z,number,#'#'###.00'}'}.");
            ExpectMessageNode expect = new ExpectMessageNode().
                                       ExpectTextThatContains("I don't ").
                                       ExpectPluralArg("a").
                                       ExpectVariant("other").
                                       ExpectTextThatContains("w{on't ").ExpectReplaceNumber().
                                       ExpectTextThatContains("#").FinishVariant().
                                       finishComplexArg().
                                       ExpectTextThatContains(" and ").
                                       ExpectSelectArg("b").
                                       ExpectVariant("other").ExpectTextThatContains("shan't}").FinishVariant().
                                       finishComplexArg().
                                       ExpectTextThatContains(" {'know'} and ").
                                       ExpectChoiceArg("c").
                                       ExpectVariant("#", 0).ExpectTextThatContains("can't|").FinishVariant().
                                       finishComplexArg().
                                       ExpectSimpleArg("z", "number", "#'#'###.00'}'").
                                       ExpectTextThatContains(".");

            expect.CheckMatches(msg);
        }
Пример #3
0
        public void TestSimpleArg()
        {
            MessageNode       msg    = MessagePatternUtil.BuildMessageNode("a'{bc''de'f{0,number,g'hi''jk'l#}");
            ExpectMessageNode expect = new ExpectMessageNode().
                                       ExpectTextThatContains("a{bc'def").ExpectSimpleArg(0, "number", "g'hi''jk'l#");

            expect.CheckMatches(msg);
        }
Пример #4
0
        public void TestHelloWithApos()
        {
            // Literal ASCII apostrophe.
            MessageNode       msg    = MessagePatternUtil.BuildMessageNode("Hel'lo!");
            ExpectMessageNode expect = new ExpectMessageNode().ExpectTextThatContains("Hel'lo");

            expect.CheckMatches(msg);
        }
Пример #5
0
        public void TestHello()
        {
            // No syntax.
            MessageNode       msg    = MessagePatternUtil.BuildMessageNode("Hello!");
            ExpectMessageNode expect = new ExpectMessageNode().ExpectTextThatContains("Hello");

            expect.CheckMatches(msg);
        }
Пример #6
0
        public void TestPluralArg()
        {
            // Plural with only keywords.
            MessageNode msg = MessagePatternUtil.BuildMessageNode(
                "abc{num_people, plural, offset:17 few{fff} other {oooo}}xyz");
            ExpectMessageNode expect = new ExpectMessageNode().
                                       ExpectTextThatContains("abc").
                                       ExpectPluralArg("num_people").
                                       ExpectOffset(17).
                                       ExpectVariant("few").ExpectTextThatContains("fff").FinishVariant().
                                       ExpectVariant("other").ExpectTextThatContains("oooo").FinishVariant().
                                       finishComplexArg().
                                       ExpectTextThatContains("xyz");

            expect.CheckMatches(msg);
            // Plural with explicit-value selectors.
            msg = MessagePatternUtil.BuildMessageNode(
                "abc{ num , plural , offset: 2 =1 {1} =-1 {-1} =3.14 {3.14} other {oo} }xyz");
            expect = new ExpectMessageNode().
                     ExpectTextThatContains("abc").
                     ExpectPluralArg("num").
                     ExpectOffset(2).
                     ExpectVariant("=1", 1).ExpectTextThatContains("1").FinishVariant().
                     ExpectVariant("=-1", -1).ExpectTextThatContains("-1").FinishVariant().
                     ExpectVariant("=3.14", 3.14).ExpectTextThatContains("3.14").FinishVariant().
                     ExpectVariant("other").ExpectTextThatContains("oo").FinishVariant().
                     finishComplexArg().
                     ExpectTextThatContains("xyz");
            expect.CheckMatches(msg);
            // Plural with number replacement.
            msg = MessagePatternUtil.BuildMessageNode(
                "a_{0,plural,other{num=#'#'=#'#'={1,number,##}!}}_z");
            expect = new ExpectMessageNode().
                     ExpectTextThatContains("a_").
                     ExpectPluralArg(0).
                     ExpectVariant("other").
                     ExpectTextThatContains("num=").ExpectReplaceNumber().
                     ExpectTextThatContains("#=").ExpectReplaceNumber().
                     ExpectTextThatContains("#=").ExpectSimpleArg(1, "number", "##").
                     ExpectTextThatContains("!").FinishVariant().
                     finishComplexArg().
                     ExpectTextThatContains("_z");
            expect.CheckMatches(msg);
            // Plural with explicit offset:0.
            msg = MessagePatternUtil.BuildMessageNode(
                "a_{0,plural,offset:0 other{num=#!}}_z");
            expect = new ExpectMessageNode().
                     ExpectTextThatContains("a_").
                     ExpectPluralArg(0).
                     ExpectOffset(0).
                     ExpectVariant("other").
                     ExpectTextThatContains("num=").ExpectReplaceNumber().
                     ExpectTextThatContains("!").FinishVariant().
                     finishComplexArg().
                     ExpectTextThatContains("_z");
            expect.CheckMatches(msg);
        }
Пример #7
0
        public void TestSelectArg()
        {
            MessageNode msg = MessagePatternUtil.BuildMessageNode(
                "abc{2, number}ghi{3, select, xx {xxx} other {ooo}} xyz");
            ExpectMessageNode expect = new ExpectMessageNode().
                                       ExpectTextThatContains("abc").ExpectSimpleArg(2, "number").
                                       ExpectTextThatContains("ghi").
                                       ExpectSelectArg(3).
                                       ExpectVariant("xx").ExpectTextThatContains("xxx").FinishVariant().
                                       ExpectVariant("other").ExpectTextThatContains("ooo").FinishVariant().
                                       finishComplexArg().
                                       ExpectTextThatContains(" xyz");

            expect.CheckMatches(msg);
        }
Пример #8
0
        public void TestChoiceArg()
        {
            MessageNode msg = MessagePatternUtil.BuildMessageNode(
                "a_{0,choice,-∞ #-inf|  5≤ five | 99 # ninety'|'nine  }_z");
            ExpectMessageNode expect = new ExpectMessageNode().
                                       ExpectTextThatContains("a_").
                                       ExpectChoiceArg(0).
                                       ExpectVariant("#", double.NegativeInfinity).
                                       ExpectTextThatContains("-inf").FinishVariant().
                                       ExpectVariant("≤", 5).ExpectTextThatContains(" five ").FinishVariant().
                                       ExpectVariant("#", 99).ExpectTextThatContains(" ninety|nine  ").FinishVariant().
                                       finishComplexArg().
                                       ExpectTextThatContains("_z");

            expect.CheckMatches(msg);
        }
Пример #9
0
        public void TestSelectOrdinalArg()
        {
            MessageNode msg = MessagePatternUtil.BuildMessageNode(
                "abc{num, selectordinal, offset:17 =0{null} few{fff} other {oooo}}xyz");
            ExpectMessageNode expect = new ExpectMessageNode().
                                       ExpectTextThatContains("abc").
                                       ExpectSelectOrdinalArg("num").
                                       ExpectOffset(17).
                                       ExpectVariant("=0", 0).ExpectTextThatContains("null").FinishVariant().
                                       ExpectVariant("few").ExpectTextThatContains("fff").FinishVariant().
                                       ExpectVariant("other").ExpectTextThatContains("oooo").FinishVariant().
                                       finishComplexArg().
                                       ExpectTextThatContains("xyz");

            expect.CheckMatches(msg);
        }
Пример #10
0
        public void TestNoneArg()
        {
            // Numbered argument.
            MessageNode       msg    = MessagePatternUtil.BuildMessageNode("abc{0}def");
            ExpectMessageNode expect = new ExpectMessageNode().
                                       ExpectTextThatContains("abc").ExpectNoneArg(0).ExpectTextThatContains("def");

            expect.CheckMatches(msg);
            // Named argument.
            msg    = MessagePatternUtil.BuildMessageNode("abc{ arg }def");
            expect = new ExpectMessageNode().
                     ExpectTextThatContains("abc").ExpectNoneArg("arg").ExpectTextThatContains("def");
            expect.CheckMatches(msg);
            // Numbered and named arguments.
            msg    = MessagePatternUtil.BuildMessageNode("abc{1}def{arg}ghi");
            expect = new ExpectMessageNode().
                     ExpectTextThatContains("abc").ExpectNoneArg(1).ExpectTextThatContains("def").
                     ExpectNoneArg("arg").ExpectTextThatContains("ghi");
            expect.CheckMatches(msg);
        }