public void ProvideValue_Returns_Text_For_MsgId()
        {
            var msgId  = "msgid";
            var text   = "translation";
            var target = new GettextExtension(msgId);

            GettextExtension.Localizer = Substitute.For <ILocalizer>();
            GettextExtension.Localizer.Catalog.GetString(Arg.Is(msgId)).Returns(text);

            Assert.Equal(text, target.ProvideValue(_serviceProvider));
        }
        public void ProvideValue_Returns_Text_For_MsgId_With_Params()
        {
            var msgId   = "msgid";
            var text    = "translation";
            var @params = new object[] { "foo", 42 };
            var target  = new GettextExtension(msgId, @params);

            GettextExtension.Localizer = Substitute.For <ILocalizer>();
            GettextExtension.Localizer.Catalog.GetString(Arg.Is(msgId), Arg.Is(@params)).Returns(text);

            Assert.Equal(text, target.ProvideValue(_serviceProvider));
        }
        public void ProvideValue_Returns_Text_For_MsgId_With_Glib_Style_Context()
        {
            var msgId  = "test|msgid";
            var text   = "translation";
            var target = new GettextExtension("some|test|msgid");

            GettextExtension.Localizer = Substitute.For <ILocalizer>();
            var context = "some";

            GettextExtension.Localizer.Catalog.GetParticularString(Arg.Is(context), Arg.Is(msgId)).Returns(text);

            Assert.Equal(text, target.ProvideValue(_serviceProvider));
        }
        public void ValueTarget_Is_Updated_On_Localizer_CultureTracker_CultureChanged()
        {
            var msgId   = "msgid";
            var text    = "translation";
            var @params = new object[] { "foo", 42 };
            var target  = new GettextExtension(msgId, @params);

            GettextExtension.Localizer = Substitute.For <ILocalizer>();
            GettextExtension.Localizer.CultureTracker.Returns(new CultureTracker());

            target.ProvideValue(_serviceProvider);

            GettextExtension.Localizer.Catalog.GetString(Arg.Is(msgId), Arg.Is(@params)).Returns(text);
            GettextExtension.Localizer.CultureTracker.CurrentCulture = new CultureInfo("da-DK");

            Assert.Equal(text, _valueTarget.Text);
        }
        ValueTarget_Is_Not_Updated_On_Localizer_CultureTracker_CultureChanged_When_ValueTarget_Has_Been_Unloaded()
        {
            var msgId   = "msgID";
            var text    = "text";
            var oldText = "old text";

            _valueTarget.Text = oldText;
            var @params = new object[] { "foo", 42 };
            var target  = new GettextExtension(msgId, @params);

            GettextExtension.Localizer = Substitute.For <ILocalizer>();

            target.ProvideValue(_serviceProvider);
            _valueTarget.RaiseEvent(new RoutedEventArgs(FrameworkElement.UnloadedEvent));

            GettextExtension.Localizer.Catalog.GetString(Arg.Is(msgId), Arg.Is(@params)).Returns(text);
            GettextExtension.Localizer.CultureTracker.CultureChanged +=
                Raise.Event <EventHandler <CultureEventArgs> >(new CultureEventArgs(new CultureInfo("en-US")));

            Assert.Equal(oldText, _valueTarget.Text);
        }
        public void Is_A_MarkupExtension()
        {
            var target = new GettextExtension("some msgid");

            Assert.IsAssignableFrom <MarkupExtension>(target);
        }