Пример #1
0
        public void TestLoad_ObjectSequenceFilterWithSubItems()
        {
            CheckDisposed();

            // Set up a filter
            CmFilter filter = new CmFilter();

            Cache.LangProject.FiltersOC.Add(filter);
            filter.ClassId = ScrScriptureNote.kClassId;
            // We will filter ScrScriptureNotes on the Categories field.
            filter.ColumnInfo = ScrScriptureNote.kclsidScrScriptureNoteString + "," +
                                ((int)ScrScriptureNote.ScrScriptureNoteTags.kflidCategories).ToString();
            filter.ShowPrompt = 1;
            CmRow row = new CmRow();

            filter.RowsOS.Append(row);
            CmCell cell = new CmCell();

            row.CellsOS.Append(cell);
            // Now specify the matching criteria for this filter cell
            ITsStrBldr bldr = TsStrBldrClass.Create();

            bldr.Replace(0, 0, "Matches  +subitems",
                         SIL.FieldWorks.Common.FwUtils.StyleUtils.CharStyleTextProps(null, Cache.DefaultUserWs));
            StringUtils.InsertOrcIntoPara(m_inMemoryCache.m_categoryDiscourse.Guid,
                                          FwObjDataTypes.kodtNameGuidHot, bldr, 8, 8, Cache.DefaultUserWs);
            cell.Contents.UnderlyingTsString = bldr.GetString();

            // Set up mocked ChooserDlg to expect to be called with the default category of Discourse (from
            // filter cell criteria defined above) but return Grammar category.
            m_mockedChooserDlg.ExpectAndReturn("GetPossibility", m_inMemoryCache.m_categoryGrammar.Hvo,
                                               new object[] { m_scr.NoteCategoriesOA, m_inMemoryCache.m_categoryDiscourse.Hvo });

            // Construct a handler to apply the above filter.
            filter.UserView            = m_userView;
            filter.PossibilitySupplier = (ICmPossibilitySupplier)m_mockedChooserDlg.MockInstance;
            FilteredSequenceHandler handler = new FilteredSequenceHandler(Cache,
                                                                          ScrBookAnnotations.kClassId, -42, filter, null, m_userView);

            // Now test the Load method
            // CacheVecProp() should be called with an array of HVOs representing all the Grammar notes,
            // including those that refer to sub-items of the main Grammar category.
            m_mockedDataAccess.Expect("CacheVecProp",
                                      new object[] { m_annotationsGen.Hvo, -94, new int[] { m_note2a.Hvo, m_note2b.Hvo, m_note3.Hvo }, 3 });
            handler.Load(m_annotationsGen.Hvo, -94, -1, (IVwCacheDa)m_mockedDataAccess.MockInstance);
            m_mockedDataAccess.Verify();
            m_mockedChooserDlg.Verify();

            // Make sure the newly-selected object (i.e., the Grammar category) has been stored as the
            // filter criteria (for next time).
            StringUtils.InsertOrcIntoPara(m_inMemoryCache.m_categoryGrammar.Guid,
                                          FwObjDataTypes.kodtNameGuidHot, bldr, 8, 9, Cache.DefaultUserWs);
            AssertEx.AreTsStringsEqual(bldr.GetString(), cell.Contents.UnderlyingTsString);
        }
Пример #2
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Implement CreateTestData, called by InMemoryFdoTestBase set up.
        /// </summary>
        /// ------------------------------------------------------------------------------------
        protected override void CreateTestData()
        {
            // Set up a filter, with a CmCell we can test on.
            m_inMemoryCache.InitializeAnnotationDefs();
            m_inMemoryCache.InitializeAnnotationCategories();

            CmFilter filter = new CmFilter();

            Cache.LangProject.FiltersOC.Add(filter);
            CmRow row = new CmRow();

            filter.RowsOS.Append(row);
            m_cell = new DummyCmCell();
            row.CellsOS.Append(m_cell);
        }
Пример #3
0
        public void TestLoad_AtomicObjectFilter()
        {
            CheckDisposed();

            // Set up a filter
            CmFilter filter = new CmFilter();

            Cache.LangProject.FiltersOC.Add(filter);
            filter.ClassId = ScrScriptureNote.kClassId;
            // We will filter ScrScriptureNotes on the AnnotationType field (which is actually a
            // field of the base class CmAnnotation).
            filter.ColumnInfo = ScrScriptureNote.kclsidScrScriptureNoteString + "," +
                                ((int)CmAnnotation.CmAnnotationTags.kflidAnnotationType).ToString();
            filter.ShowPrompt = 0;
            CmRow row = new CmRow();

            filter.RowsOS.Append(row);
            CmCell cell = new CmCell();

            row.CellsOS.Append(cell);
            // Now specify the matching criteria for this filter cell
            ITsStrBldr bldr = TsStrBldrClass.Create();

            bldr.Replace(0, 0, "Matches ",
                         SIL.FieldWorks.Common.FwUtils.StyleUtils.CharStyleTextProps(null, Cache.DefaultUserWs));
            StringUtils.InsertOrcIntoPara(m_inMemoryCache.m_translatorNoteDefn.Guid,
                                          FwObjDataTypes.kodtNameGuidHot, bldr, bldr.Length,
                                          bldr.Length, Cache.DefaultUserWs);
            cell.Contents.UnderlyingTsString = bldr.GetString();

            // Construct a handler to apply the above filter.
            filter.UserView = m_userView;
            FilteredSequenceHandler handler = new FilteredSequenceHandler(Cache,
                                                                          ScrBookAnnotations.kClassId, -42, filter, null, m_userView);

            // CacheVecProp() should be called with an array of HVOs representing only the translator notes.
            m_mockedDataAccess.Expect("CacheVecProp",
                                      new object[] { m_annotationsGen.Hvo, -94, new int[] { m_note2b.Hvo, m_note3.Hvo }, 2 });

            // Now test the Load method
            handler.Load(m_annotationsGen.Hvo, -94, -1, (IVwCacheDa)m_mockedDataAccess.MockInstance);
            m_mockedDataAccess.Verify();
        }
Пример #4
0
        public void TestLoad_IntFilter()
        {
            CheckDisposed();

            // Set up a filter
            CmFilter filter = new CmFilter();

            Cache.LangProject.FiltersOC.Add(filter);
            filter.ClassId = ScrScriptureNote.kClassId;
            // We will filter ScrScriptureNotes on the ResolutionStatus field.
            filter.ColumnInfo = ScrScriptureNote.kclsidScrScriptureNoteString + "," +
                                ((int)ScrScriptureNote.ScrScriptureNoteTags.kflidResolutionStatus).ToString();
            filter.ShowPrompt = 0;
            CmRow row = new CmRow();

            filter.RowsOS.Append(row);
            CmCell cell = new CmCell();

            row.CellsOS.Append(cell);
            // Now specify the matching criteria for this filter cell
            ITsStrFactory factory = TsStrFactoryClass.Create();

            cell.Contents.UnderlyingTsString = factory.MakeString("= 0", Cache.DefaultUserWs);

            // Construct a handler to apply the above filter.
            filter.UserView = m_userView;
            FilteredSequenceHandler handler = new FilteredSequenceHandler(Cache,
                                                                          ScrBookAnnotations.kClassId, -42, filter, null, m_userView);

            // CacheVecProp() should be called with an array of HVOs representing only the open notes.
            m_mockedDataAccess.Expect("CacheVecProp",
                                      new object[] { m_annotationsGen.Hvo, -94, new int[] { m_note1.Hvo, m_note2b.Hvo }, 2 });

            // Now test the Load method
            handler.Load(m_annotationsGen.Hvo, -94, -1, (IVwCacheDa)m_mockedDataAccess.MockInstance);
            m_mockedDataAccess.Verify();
        }
Пример #5
0
		public void TestLoad_ObjectSequenceFilterWithSubItems()
		{
			CheckDisposed();

			// Set up a filter
			CmFilter filter = new CmFilter();
			Cache.LangProject.FiltersOC.Add(filter);
			filter.ClassId = ScrScriptureNote.kClassId;
			// We will filter ScrScriptureNotes on the Categories field.
			filter.ColumnInfo = ScrScriptureNote.kclsidScrScriptureNoteString + "," +
				((int)ScrScriptureNote.ScrScriptureNoteTags.kflidCategories).ToString();
			filter.ShowPrompt = 1;
			CmRow row = new CmRow();
			filter.RowsOS.Append(row);
			CmCell cell = new CmCell();
			row.CellsOS.Append(cell);
			// Now specify the matching criteria for this filter cell
			ITsStrBldr bldr = TsStrBldrClass.Create();
			bldr.Replace(0, 0, "Matches  +subitems",
				SIL.FieldWorks.Common.FwUtils.StyleUtils.CharStyleTextProps(null, Cache.DefaultUserWs));
			StringUtils.InsertOrcIntoPara(m_inMemoryCache.m_categoryDiscourse.Guid,
				FwObjDataTypes.kodtNameGuidHot, bldr, 8, 8, Cache.DefaultUserWs);
			cell.Contents.UnderlyingTsString = bldr.GetString();

			// Set up mocked ChooserDlg to expect to be called with the default category of Discourse (from
			// filter cell criteria defined above) but return Grammar category.
			m_mockedChooserDlg.ExpectAndReturn("GetPossibility", m_inMemoryCache.m_categoryGrammar.Hvo,
				new object[] {m_scr.NoteCategoriesOA, m_inMemoryCache.m_categoryDiscourse.Hvo});

			// Construct a handler to apply the above filter.
			filter.UserView = m_userView;
			filter.PossibilitySupplier = (ICmPossibilitySupplier)m_mockedChooserDlg.MockInstance;
			FilteredSequenceHandler handler = new FilteredSequenceHandler(Cache,
				ScrBookAnnotations.kClassId, -42, filter, null, m_userView);

			// Now test the Load method
			// CacheVecProp() should be called with an array of HVOs representing all the Grammar notes,
			// including those that refer to sub-items of the main Grammar category.
			m_mockedDataAccess.Expect("CacheVecProp",
				new object[] {m_annotationsGen.Hvo, -94, new int[] {m_note2a.Hvo, m_note2b.Hvo, m_note3.Hvo}, 3});
			handler.Load(m_annotationsGen.Hvo, -94, -1, (IVwCacheDa)m_mockedDataAccess.MockInstance);
			m_mockedDataAccess.Verify();
			m_mockedChooserDlg.Verify();

			// Make sure the newly-selected object (i.e., the Grammar category) has been stored as the
			// filter criteria (for next time).
			StringUtils.InsertOrcIntoPara(m_inMemoryCache.m_categoryGrammar.Guid,
				FwObjDataTypes.kodtNameGuidHot, bldr, 8, 9, Cache.DefaultUserWs);
			AssertEx.AreTsStringsEqual(bldr.GetString(), cell.Contents.UnderlyingTsString);
		}
Пример #6
0
		public void TestLoad_AtomicObjectFilter()
		{
			CheckDisposed();

			// Set up a filter
			CmFilter filter = new CmFilter();
			Cache.LangProject.FiltersOC.Add(filter);
			filter.ClassId = ScrScriptureNote.kClassId;
			// We will filter ScrScriptureNotes on the AnnotationType field (which is actually a
			// field of the base class CmAnnotation).
			filter.ColumnInfo = ScrScriptureNote.kclsidScrScriptureNoteString + "," +
				((int)CmAnnotation.CmAnnotationTags.kflidAnnotationType).ToString();
			filter.ShowPrompt = 0;
			CmRow row = new CmRow();
			filter.RowsOS.Append(row);
			CmCell cell = new CmCell();
			row.CellsOS.Append(cell);
			// Now specify the matching criteria for this filter cell
			ITsStrBldr bldr = TsStrBldrClass.Create();
			bldr.Replace(0, 0, "Matches ",
				SIL.FieldWorks.Common.FwUtils.StyleUtils.CharStyleTextProps(null, Cache.DefaultUserWs));
			StringUtils.InsertOrcIntoPara(m_inMemoryCache.m_translatorNoteDefn.Guid,
				FwObjDataTypes.kodtNameGuidHot,	bldr, bldr.Length,
				bldr.Length, Cache.DefaultUserWs);
			cell.Contents.UnderlyingTsString = bldr.GetString();

			// Construct a handler to apply the above filter.
			filter.UserView = m_userView;
			FilteredSequenceHandler handler = new FilteredSequenceHandler(Cache,
				ScrBookAnnotations.kClassId, -42, filter, null, m_userView);
			// CacheVecProp() should be called with an array of HVOs representing only the translator notes.
			m_mockedDataAccess.Expect("CacheVecProp",
				new object[] {m_annotationsGen.Hvo, -94, new int[] {m_note2b.Hvo, m_note3.Hvo}, 2});

			// Now test the Load method
			handler.Load(m_annotationsGen.Hvo, -94, -1, (IVwCacheDa)m_mockedDataAccess.MockInstance);
			m_mockedDataAccess.Verify();
		}
Пример #7
0
		public void TestLoad_IntFilter()
		{
			CheckDisposed();

			// Set up a filter
			CmFilter filter = new CmFilter();
			Cache.LangProject.FiltersOC.Add(filter);
			filter.ClassId = ScrScriptureNote.kClassId;
			// We will filter ScrScriptureNotes on the ResolutionStatus field.
			filter.ColumnInfo = ScrScriptureNote.kclsidScrScriptureNoteString + "," +
				((int)ScrScriptureNote.ScrScriptureNoteTags.kflidResolutionStatus).ToString();
			filter.ShowPrompt = 0;
			CmRow row = new CmRow();
			filter.RowsOS.Append(row);
			CmCell cell = new CmCell();
			row.CellsOS.Append(cell);
			// Now specify the matching criteria for this filter cell
			ITsStrFactory factory = TsStrFactoryClass.Create();
			cell.Contents.UnderlyingTsString = factory.MakeString("= 0", Cache.DefaultUserWs);

			// Construct a handler to apply the above filter.
			filter.UserView = m_userView;
			FilteredSequenceHandler handler = new FilteredSequenceHandler(Cache,
				ScrBookAnnotations.kClassId, -42, filter, null, m_userView);
			// CacheVecProp() should be called with an array of HVOs representing only the open notes.
			m_mockedDataAccess.Expect("CacheVecProp",
				new object[] { m_annotationsGen.Hvo, -94, new int[] { m_note1.Hvo, m_note2b.Hvo }, 2 });

			// Now test the Load method
			handler.Load(m_annotationsGen.Hvo, -94, -1, (IVwCacheDa)m_mockedDataAccess.MockInstance);
			m_mockedDataAccess.Verify();
		}
Пример #8
0
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Implement CreateTestData, called by InMemoryFdoTestBase set up.
		/// </summary>
		/// ------------------------------------------------------------------------------------
		protected override void CreateTestData()
		{
			// Set up a filter, with a CmCell we can test on.
			m_inMemoryCache.InitializeAnnotationDefs();
			m_inMemoryCache.InitializeAnnotationCategories();

			CmFilter filter = new CmFilter();
			Cache.LangProject.FiltersOC.Add(filter);
			CmRow row = new CmRow();
			filter.RowsOS.Append(row);
			m_cell = new DummyCmCell();
			row.CellsOS.Append(m_cell);
		}