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); }
/// ------------------------------------------------------------------------------------ /// <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); }
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(); }
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(); }
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); }
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(); }