public void FragmentRoot_MultiString_ReadOnly() { using (var site = new RootSiteDataProvider_MultiStringView(m_cache)) { site.StyleSheet = FixtureStyleSheet; site.WritingSystemFactory = m_wsManager; using (var helper = new SimpleRootSiteDataProviderTestsHelper(site)) { const string engExpected = "This is the English sentence."; const string frExpected = "This is the French sentence."; string expected = engExpected + Environment.NewLine + frExpected; IList <KeyValuePair <int, string> > vkvp = new List <KeyValuePair <int, string> >(); vkvp.Add(m_wsEng, engExpected); vkvp.Add(m_wsFr, frExpected); site.ShowForm(vkvp, new SimpleRootSiteDataProvider_MultiStringViewVc.DisplayOptions { ReadOnlyView = true, LiteralStringLabels = false }); Assert.IsTrue(site.ReadOnlyView, "site should now be read-only"); var dataProvider = new SimpleRootSiteDataProvider(site); var doc = dataProvider.DocumentRange; Assert.NotNull(doc, "DocumentRange shouldn't be null"); Assert.IsInstanceOf <bool>(doc.GetAttributeValue(TextPatternIdentifiers.IsReadOnlyAttribute.Id)); Assert.IsTrue((bool)doc.GetAttributeValue(TextPatternIdentifiers.IsReadOnlyAttribute.Id)); Assert.AreEqual(expected, doc.GetText(-1)); var firstChild = dataProvider.Navigate(NavigateDirection.FirstChild); Assert.IsNull(firstChild, "FragmentRoot (ReadOnly view) should not have a custom edit control."); } } }
public void StringPropertyCollectorEnv_MultiStringView_WithLabels() { using (var site = new RootSiteDataProvider_MultiStringView(m_cache)) { site.StyleSheet = FixtureStyleSheet; site.WritingSystemFactory = m_wsManager; using (new SimpleRootSiteDataProviderTestsHelper(site)) { const string engExpected = "This is the English sentence."; const string frExpected = "This is the French sentence."; string expected = engExpected + Environment.NewLine + frExpected; IList <KeyValuePair <int, string> > vkvp = new List <KeyValuePair <int, string> >(); vkvp.Add(m_wsEng, engExpected); vkvp.Add(m_wsFr, frExpected); site.ShowForm(vkvp, new SimpleRootSiteDataProvider_MultiStringViewVc.DisplayOptions { ReadOnlyView = false, LiteralStringLabels = true }); var editableSelections = site.CollectEditableStringPropSelections(); Assert.AreEqual(2, editableSelections.Count); var sel1 = editableSelections[0]; Assert.IsNotNull(sel1, "sel1"); Assert.IsTrue(sel1.IsEditable, "sel1.IsEditable"); var sel2 = editableSelections[1]; Assert.IsNotNull(sel2, "sel2"); Assert.IsTrue(sel2.IsEditable, "sel2.IsEditable"); } } }
public void StringPropertyCollectorEnv_MultiStringView_TwoEditableFields() { using (var site = new RootSiteDataProvider_MultiStringView(m_cache)) { site.StyleSheet = FixtureStyleSheet; site.WritingSystemFactory = m_wsManager; using (var helper = new SimpleRootSiteDataProviderTestsHelper(site)) { const string engExpected = "This is the English sentence."; const string frExpected = "This is the French sentence."; string expected = engExpected + Environment.NewLine + frExpected; IList <KeyValuePair <int, string> > vkvp = new List <KeyValuePair <int, string> >(); vkvp.Add(m_wsEng, engExpected); vkvp.Add(m_wsFr, frExpected); site.ShowForm(vkvp, new SimpleRootSiteDataProvider_MultiStringViewVc.DisplayOptions { ReadOnlyView = false, LiteralStringLabels = false }); var editableSelections = site.CollectEditableStringPropSelections(); Assert.IsNotNull(editableSelections); Assert.AreEqual(2, editableSelections.Count); var sli1 = CollectorEnvServices.MakeLocationInfo(site.RootBox, editableSelections[0]); Assert.AreEqual(0, sli1.m_location.Length); Assert.AreEqual(SimpleRootSiteDataProvider_MultiStringViewVc.kflidMultiString, sli1.m_tag); Assert.AreEqual(m_wsEng, sli1.m_ws); Assert.AreEqual(0, sli1.m_ichMin, "m_ichMin"); Assert.AreEqual(0, sli1.m_ichLim, "m_ichLim"); Assert.AreEqual(0, sli1.m_cpropPrev); var sli2 = CollectorEnvServices.MakeLocationInfo(site.RootBox, editableSelections[1]); Assert.AreEqual(SimpleRootSiteDataProvider_MultiStringViewVc.kflidMultiString, sli2.m_tag); Assert.AreEqual(m_wsFr, sli2.m_ws); Assert.AreEqual(0, sli2.m_ichMin, "m_ichMin"); Assert.AreEqual(0, sli2.m_ichLim, "m_ichLim"); Assert.AreEqual(1, sli2.m_cpropPrev); // Verify we can actually use these to make valid selections. var sel1 = editableSelections[0]; Assert.IsNotNull(sel1); Assert.IsTrue(sel1.IsEditable, "sel1.IsEditable"); var sel2 = editableSelections[1]; Assert.IsNotNull(sel2); Assert.IsTrue(sel2.IsEditable, "sel2.IsEditable"); } } }
public void FragmentRoot_MultiString_TwoEditControls() { using (var site = new RootSiteDataProvider_MultiStringView(m_cache)) { site.StyleSheet = FixtureStyleSheet; site.WritingSystemFactory = m_wsManager; using (var helper = new SimpleRootSiteDataProviderTestsHelper(site)) { const string engExpected = "This is the English sentence."; const string frExpected = "This is the French sentence."; string expected = engExpected + Environment.NewLine + frExpected; IList <KeyValuePair <int, string> > vkvp = new List <KeyValuePair <int, string> >(); vkvp.Add(m_wsEng, engExpected); vkvp.Add(m_wsFr, frExpected); site.ShowForm(vkvp, new SimpleRootSiteDataProvider_MultiStringViewVc.DisplayOptions { ReadOnlyView = false, LiteralStringLabels = false }); Assert.IsFalse(site.ReadOnlyView, "site should not be read-only"); var dataProvider = new SimpleRootSiteDataProvider(site, site.CreateUIAutomationEditControls); var doc = dataProvider.DocumentRange; Assert.NotNull(doc, "DocumentRange shouldn't be null"); Assert.IsInstanceOf <bool>(doc.GetAttributeValue(TextPatternIdentifiers.IsReadOnlyAttribute.Id)); Assert.IsFalse((bool)doc.GetAttributeValue(TextPatternIdentifiers.IsReadOnlyAttribute.Id)); Assert.AreEqual(expected, doc.GetText(-1)); var firstChild = dataProvider.Navigate(NavigateDirection.FirstChild); Assert.NotNull(firstChild, "FragmentRoot should have a custom edit control."); Assert.IsInstanceOf <SimpleRootSiteEditControl>(firstChild); Assert.IsInstanceOf <ITextProvider>(firstChild); var lastChild = dataProvider.Navigate(NavigateDirection.LastChild); Assert.AreNotSame(firstChild, lastChild); var engTextProvider = (ITextProvider)firstChild; Assert.AreEqual(engExpected, engTextProvider.DocumentRange.GetText(-1)); var frTextProvider = (ITextProvider)lastChild; Assert.AreEqual(frExpected, frTextProvider.DocumentRange.GetText(-1)); // make sure the bounding rectangle of the child is contained in the parent's bounding rectangle. var rsBoundintRect = helper.GetRootSiteScreenRect(); Assert.IsTrue( rsBoundintRect.Contains(firstChild.BoundingRectangle), "Edit control BoundingRectangle should be contained within the root fragment bounding rectangle"); Assert.IsTrue( rsBoundintRect.Contains(lastChild.BoundingRectangle), "Edit control BoundingRectangle should be contained within the root fragment bounding rectangle"); Assert.AreEqual(firstChild.BoundingRectangle.Left, lastChild.BoundingRectangle.Left, 0); Rect intersection = Rect.Intersect(firstChild.BoundingRectangle, lastChild.BoundingRectangle); Assert.AreEqual(0, intersection.Height * intersection.Width, 0, "Sibling edit control BoundingRectangles should not intersect with each other"); // make sure we've only created two EditControl children. var nextSibling = firstChild.Navigate(NavigateDirection.NextSibling); Assert.AreSame(lastChild, nextSibling, "Navigate.NextSibling"); Assert.IsNull(firstChild.Navigate(NavigateDirection.PreviousSibling)); var previousSibling = lastChild.Navigate(NavigateDirection.PreviousSibling); Assert.AreSame(firstChild, previousSibling); Assert.IsNull(lastChild.Navigate(NavigateDirection.NextSibling)); } } }