public void InitializeTest()
        {
            // Arrange.
            const string ProcessName = "TestProcess";

            var dtm = Mock.Create<IDynamicTypeManager>();
            Mock.Arrange(() => dtm.GetEditableRootType(ProcessName)).Returns(typeof(TestEdit));

            var mapping = new DataTriggerFieldMapping(TestsHelper.ExtractPropertyName(() => new TestEdit().Text), true, (s, d) => null);

            var updater = new SimpleFieldUpdater { DynamicTypeManager = dtm };

            // Act.
            updater.Initialize(ProcessName, mapping);

            // Assert.
            Assert.AreEqual(TestsHelper.ExtractPropertyName(() => new TestEdit().Text), updater.FieldName);
            Assert.IsTrue(updater.IsKey);
            Assert.AreSame(mapping.ValueCalculator, updater.ValueCalculator);
            Assert.AreSame(typeof(string), updater.PropertyType);

            // Exceptions.
            var invalidMapping1 = new DataTriggerFieldMapping("InvalidField", false, (s, d) => null);
            var invalidMapping2 = new DataTriggerFieldMapping(TestsHelper.ExtractPropertyName(() => new TestEdit().ReadOnly), false, (s, d) => null);

            TestsHelper.VerifyThrow<ArgumentNullException>(() => updater.Initialize(ProcessName, null));
            TestsHelper.VerifyThrow<InvalidOperationException>(() => updater.Initialize(ProcessName, invalidMapping1));
            TestsHelper.VerifyThrow<InvalidOperationException>(() => updater.Initialize(ProcessName, invalidMapping2));
        }
        public void InitializeLocalizedFieldTest()
        {
            // Arrange.
            const string ProcessName = "TestProcess";

            var dtm = Mock.Create<IDynamicTypeManager>();
            Mock.Arrange(() => dtm.GetEditableRootType(ProcessName)).Returns(typeof(TestEdit));

            var mapping = new DataTriggerFieldMapping(TestsHelper.ExtractPropertyName(() => new TestEdit().Localized), true, (s, d) => null);

            var updater = new SimpleFieldUpdater { DynamicTypeManager = dtm };

            // Act.
            updater.Initialize(ProcessName, mapping);

            // Assert.
            Assert.AreEqual(TestsHelper.ExtractPropertyName(() => new TestEdit().Localized), updater.FieldName);
            Assert.IsTrue(updater.IsKey);
            Assert.AreSame(mapping.ValueCalculator, updater.ValueCalculator);
            Assert.AreSame(typeof(string), updater.PropertyType);

            Assert.IsTrue(updater.AllowLocalizedData);
            Assert.AreEqual(3, updater.SupportedLocalizations.Count);
            Assert.IsTrue(updater.SupportedLocalizations.Any(l => Equals(l.CultureName, "en-US")));
            Assert.IsTrue(updater.SupportedLocalizations.Any(l => Equals(l.CultureName, "es-ES")));
            Assert.IsTrue(updater.SupportedLocalizations.Any(l => Equals(l.CultureName, "fr-FR")));
        }