Ejemplo n.º 1
0
        public void kcptGuidTests()
        {
            ICmPossibilityListFactory possFactory = Cache.ServiceLocator.GetInstance <ICmPossibilityListFactory>();
            ICmPossibilityList        possList;

            using (var undoHelper = new NonUndoableUnitOfWorkHelper(m_actionHandler))
            {
                possList = possFactory.Create();
                Cache.LanguageProject.TimeOfDayOA = possList;
                undoHelper.RollBack = false;
            }
            CheckChanges(1, 0, Cache.LanguageProject.Hvo, LangProjectTags.kflidTimeOfDay, 0, 1, 0);
            ClearChanges();

            using (var undoHelper = new NonUndoableUnitOfWorkHelper(m_actionHandler))
            {
                possList.ListVersion = Guid.NewGuid();
                undoHelper.RollBack  = false;
            }
            // Changing a prop on an unowned object does make one PC.
            CheckChanges(1, 0, possList.Hvo, CmPossibilityListTags.kflidListVersion, 0, 0, 0);
            ClearChanges();

            using (var undoHelper = new NonUndoableUnitOfWorkHelper(m_actionHandler))
            {
                possList.ListVersion = Guid.NewGuid();
                possList.ListVersion = Guid.NewGuid();
                undoHelper.RollBack  = false;
            }
            // Changing a prop twice in one UOW only makes one PC for the property.
            CheckChanges(1, 0, possList.Hvo, CmPossibilityListTags.kflidListVersion, 0, 0, 0);
            ClearChanges();

            // TODO: Delete unowned uv, as that should also not produce a PC.
        }
        public void AtomicOwningPropertyAccessorTest_SetAndChange()
        {
            // GJM -- 22 June 2010:
            // In order to implement FWR-133 Allow Custom Lists, ICmPossibilityListFactory needs
            // to be able to create unowned lists. Hence the 2 lines commented out below.
            ICmPossibilityListFactory possListFactory = Cache.ServiceLocator.GetInstance <ICmPossibilityListFactory>();
            ICmPossibilityList        possList1       = possListFactory.Create();

            //Assert.AreEqual((int)SpecialHVOValues.kHvoUninitializedObject, possList1.Hvo);

            Cache.LanguageProject.LocationsOA = possList1;
            Assert.AreEqual(possList1, Cache.LanguageProject.LocationsOA);
            Assert.AreNotEqual((int)SpecialHVOValues.kHvoObjectDeleted, possList1.Hvo);
            Assert.AreNotEqual((int)SpecialHVOValues.kHvoUninitializedObject, possList1.Hvo);
            Assert.AreEqual(Cache.LanguageProject, possList1.Owner);
            Assert.AreEqual(LangProjectTags.kflidLocations, possList1.OwningFlid);

            ICmPossibilityList possList2 = possListFactory.Create();

            //Assert.AreEqual((int)SpecialHVOValues.kHvoUninitializedObject, possList2.Hvo);
            Cache.LanguageProject.LocationsOA = possList2;
            Assert.AreEqual(possList2, Cache.LanguageProject.LocationsOA);
            Assert.AreNotEqual((int)SpecialHVOValues.kHvoObjectDeleted, possList2.Hvo);
            Assert.AreNotEqual((int)SpecialHVOValues.kHvoUninitializedObject, possList2.Hvo);
            Assert.AreEqual((int)SpecialHVOValues.kHvoObjectDeleted, possList1.Hvo);

            Cache.LanguageProject.LocationsOA = null;
            Assert.IsNull(Cache.LanguageProject.LocationsOA);
            Assert.AreEqual((int)SpecialHVOValues.kHvoObjectDeleted, possList2.Hvo);
        }
Ejemplo n.º 3
0
        public void MasterCategoryWithGuidNode_ValidatePosInReversalGuid()
        {
            string input =
                @"<eticPOSList xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:rdfs='http://www.w3.org/2000/01/rdf-schema#' xmlns:owl='http://www.w3.org/2002/07/owl#'>
				   <item type='category' id='Adjective' guid='30d07580-5052-4d91-bc24-469b8b2d7df9'>
					  <abbrev ws='en'>adj</abbrev>
					  <term ws='en'>Adjective</term>
					  <def ws='en'>An adjective is a part of speech whose members modify nouns. An adjective specifies the attributes of a noun referent. Note: this is one case among many. Adjectives are a class of modifiers.</def>
				   </item>
				   <item type='category' id='Adposition' guid='ae115ea8-2cd7-4501-8ae7-dc638e4f17c5'>
					  <abbrev ws='en'>adp</abbrev>
					  <term ws='en'>Adposition</term>
					  <def ws='en'>An adposition is a part of speech whose members are of a closed set and occur before or after a complement composed of a noun phrase, noun, pronoun, or clause that functions as a noun phrase and forms a single structure with the complement to express its grammatical and semantic relation to another unit within a clause.</def>
					  <item type='category' id='Postposition' guid='18f1b2b8-0ce3-4889-90e9-003fed6a969f'>
						 <abbrev ws='en'>post</abbrev>
						 <term ws='en'>Postposition</term>
						 <def ws='en'>A postposition is an adposition that occurs after its complement.</def>
						  <item type='category' id='PPchild' guid='82B1250A-E64F-4AD8-8B8C-5ABBC732087A'>
							 <abbrev ws='en'>ppc</abbrev>
							 <term ws='en'>PPchild</term>
							 <def ws='en'>An imaginary POS to test another code path.</def>
						  </item>
					  </item>
					</item>
				</eticPOSList>"                ;

            var mRevIndexFactory = Cache.ServiceLocator.GetInstance <IReversalIndexFactory>();
            var index            = mRevIndexFactory.Create();

            Cache.LangProject.LexDbOA.ReversalIndexesOC.Add(index);
            ICmPossibilityListFactory fact = Cache.ServiceLocator.GetInstance <ICmPossibilityListFactory>();

            index.PartsOfSpeechOA = fact.Create();
            var posList = index.PartsOfSpeechOA;
            var doc     = new XmlDocument();

            doc.LoadXml(input);
            var rootItem = doc.DocumentElement.ChildNodes[1];
            var mc       = MasterCategoryListDlg.MasterCategory.Create(new Set <IPartOfSpeech>(), rootItem, Cache);

            m_actionHandler.EndUndoTask();
            Assert.That(posList, Is.Not.Null, "Test requires default init of cache to create POS list");
            mc.AddToDatabase(Cache, posList, null, null);

            var childItem = rootItem.ChildNodes[3];
            var firstPos  = (IPartOfSpeech)posList.PossibilitiesOS[0];
            var mcChild   = MasterCategoryListDlg.MasterCategory.Create(new Set <IPartOfSpeech> {
                firstPos
            }, childItem, Cache);

            mcChild.AddToDatabase(Cache, posList, null, firstPos);

            Assert.That(firstPos.Guid, Is.Not.Null, "Item in the category should not be null Guid");
            Assert.That(firstPos.SubPossibilitiesOS[0].Guid, Is.Not.Null, "Sub-Item in the category should not be null Guid");
            Assert.IsFalse(firstPos.SubPossibilitiesOS[0].Guid == Guid.Empty, "Sub-Item in the category should not be Empty Guid");
        }
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// If a test overrides this, it should call this base implementation.
		/// </summary>
		/// ------------------------------------------------------------------------------------
		public override void FixtureSetup()
		{
			base.FixtureSetup();

			var servLoc = Cache.ServiceLocator;
			NonUndoableUnitOfWorkHelper.Do(m_actionHandler, ()=>
			{
				Cache.LanguageProject.PeopleOA = servLoc.GetInstance<ICmPossibilityListFactory>().Create();
				Cache.LanguageProject.PeopleOA.PossibilitiesOS.Add(servLoc.GetInstance<ICmPersonFactory>().Create());
			});
			m_possListFactory = servLoc.GetInstance<ICmPossibilityListFactory>();
		}
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// If a test overrides this, it should call this base implementation.
        /// </summary>
        /// ------------------------------------------------------------------------------------
        public override void FixtureSetup()
        {
            base.FixtureSetup();

            var servLoc = Cache.ServiceLocator;

            NonUndoableUnitOfWorkHelper.Do(m_actionHandler, () =>
            {
                Cache.LanguageProject.PeopleOA = servLoc.GetInstance <ICmPossibilityListFactory>().Create();
                Cache.LanguageProject.PeopleOA.PossibilitiesOS.Add(servLoc.GetInstance <ICmPersonFactory>().Create());
            });
            m_possListFactory = servLoc.GetInstance <ICmPossibilityListFactory>();
        }
Ejemplo n.º 6
0
		public override void FixtureSetup()
		{
			base.FixtureSetup();

			var servLoc = Cache.ServiceLocator;
			var mdc = servLoc.GetInstance<IFwMetaDataCacheManaged>();
			m_customCertifiedFlid = mdc.AddCustomField("WfiWordform", "Certified", CellarPropertyType.Boolean, 0);
			m_customITsStringFlid = mdc.AddCustomField("WfiWordform", "NewTsStringProp", CellarPropertyType.String, 0);
			m_customVernTsStringFlid = mdc.AddCustomField("WfiWordform", "NewVernStringProp", CellarPropertyType.String, 0, "helpId",
				WritingSystemServices.kwsVern, Guid.Empty);
			m_customMultiUnicodeFlid = mdc.AddCustomField("WfiWordform", "MultiUnicodeProp", CellarPropertyType.MultiUnicode, 0);
			m_customAtomicReferenceFlid = mdc.AddCustomField("WfiWordform", "NewAtomicRef", CellarPropertyType.ReferenceAtomic, CmPersonTags.kClassId);
			//m_customReferenceSequenceFlid = mdc.AddCustomField("WfiWordform", "NewRefSeq", CellarPropertyType.ReferenceSequence, CmPersonTags.kClassId);

			m_sda = servLoc.GetInstance<ISilDataAccessManaged>();
			m_possListFactory = servLoc.GetInstance<ICmPossibilityListFactory>();
			var lp = Cache.LanguageProject;
			NonUndoableUnitOfWorkHelper.Do(m_actionHandler, () =>
			{
				lp.PeopleOA = m_possListFactory.Create();
				var personFactory = servLoc.GetInstance<ICmPersonFactory>();
				var person1 = personFactory.Create();
				lp.PeopleOA.PossibilitiesOS.Add(person1);
				person1.DateOfBirth = new GenDate(GenDate.PrecisionType.Approximate, 1, 1, 3000, true);
				var person2 = personFactory.Create();
				lp.PeopleOA.PossibilitiesOS.Add(person2);

				lp.LocationsOA = m_possListFactory.Create();
				var location = servLoc.GetInstance<ICmLocationFactory>().Create();
				lp.LocationsOA.PossibilitiesOS.Add(location);
				lp.LocationsOA.IsSorted = true;

				person1.PlaceOfBirthRA = location;

				lp.EthnologueCode = "ZPI";

				lp.TranslatedScriptureOA = servLoc.GetInstance<IScriptureFactory>().Create();
			});
		}
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// If a test overrides this, it should call this base implementation.
        /// </summary>
        /// ------------------------------------------------------------------------------------
        public override void FixtureTeardown()
        {
            m_possListFactory = null;

            base.FixtureTeardown();
        }
Ejemplo n.º 8
0
		public override void FixtureTeardown()
		{
			m_sda = null;
			m_possListFactory = null;

			base.FixtureTeardown();
		}
        public override void FixtureSetup()
        {
            base.FixtureSetup();
            m_entryFactory       = Cache.ServiceLocator.GetInstance <ILexEntryFactory>();
            m_senseFactory       = Cache.ServiceLocator.GetInstance <ILexSenseFactory>();
            m_exampleFactory     = Cache.ServiceLocator.GetInstance <ILexExampleSentenceFactory>();
            m_lexEntryRefFactory = Cache.ServiceLocator.GetInstance <ILexEntryRefFactory>();
            m_lexRefTypeFactory  = Cache.ServiceLocator.GetInstance <ILexRefTypeFactory>();
            m_lexRefFactory      = Cache.ServiceLocator.GetInstance <ILexReferenceFactory>();
            m_possListFactory    = Cache.ServiceLocator.GetInstance <ICmPossibilityListFactory>();

            m_flidReferringSenses = Cache.MetaDataCacheAccessor.GetFieldId2(CmSemanticDomainTags.kClassId, "ReferringSenses",
                                                                            false);

            UndoableUnitOfWorkHelper.Do("do", "undo", Cache.ActionHandlerAccessor,
                                        () =>
            {
                m_domainBadWords    = Cache.ServiceLocator.GetInstance <ICmSemanticDomainFactory>().Create();
                m_domainTemperature = Cache.ServiceLocator.GetInstance <ICmSemanticDomainFactory>().Create();
                Cache.LangProject.SemanticDomainListOA.PossibilitiesOS.Add(m_domainBadWords);
                Cache.LangProject.SemanticDomainListOA.PossibilitiesOS.Add(m_domainTemperature);
                m_mainDict = Cache.LangProject.LexDbOA.PublicationTypesOA.PossibilitiesOS[0];
                m_blank    = MakeEntry("blank", "swear word", true);
                m_blank.SensesOS[0].SemanticDomainsRC.Add(m_domainBadWords);
                m_hot     = MakeEntry("hot", "high temperature", false);
                m_hotTemp = m_hot.SensesOS[0];
                m_hotTemp.SemanticDomainsRC.Add(m_domainTemperature);
                m_trouble = MakeSense(m_hot, "trouble");
                m_trouble.DoNotPublishInRC.Add(m_mainDict);
                m_trouble.PicturesOS.Add(Cache.ServiceLocator.GetInstance <ICmPictureFactory>().Create());
                m_desirable = MakeSense(m_hot, "desirable");
                m_fastCar   = MakeSense(m_desirable, "fast (car)");

                m_badHot  = MakeExample(m_hotTemp, "a hot pile of blank", true);
                m_goodHot = MakeExample(m_hotTemp, "a hot bath", false);

                m_water              = MakeEntry("water", "H2O", false);
                m_waterH2O           = m_water.SensesOS[0];
                m_hotWater           = MakeEntry("hot water", "trouble", false);
                m_hotWaterComponents = MakeEntryRef(m_hotWater, new ICmObject[] { m_trouble, m_waterH2O },
                                                    new[] { m_trouble, m_waterH2O },
                                                    LexEntryRefTags.krtComplexForm);

                m_blank2      = MakeEntry("blank", "vacant", false);
                m_blank3      = MakeEntry("blank", "erase", false);
                m_water2      = MakeEntry("water", "urinate", true);
                m_waterPrefix = MakeEntry("water", "aquatic", false);
                m_waterPrefix.LexemeFormOA.MorphTypeRA = Cache.ServiceLocator.GetInstance <IMoMorphTypeRepository>()
                                                         .GetObject(MoMorphTypeTags.kguidMorphPrefix);

                m_synonym       = MakeRefType("synonym", null, (int)LexRefTypeTags.MappingTypes.kmtSenseCollection);
                m_blip          = MakeEntry("blip", "rude word", true);
                m_bother        = MakeEntry("bother", "I'm annoyed by that", false);
                m_ouch          = MakeEntry("ouch", "that hurt", false);
                m_blipOuch      = MakeSense(m_blip.SensesOS[0], "rude ouch");
                m_blankSynonyms = MakeLexRef(m_synonym, new ICmObject[] { m_blank, m_ouch.SensesOS[0], m_blip.SensesOS[0], m_blipOuch, m_bother });

                m_problem         = MakeEntry("problem", "difficulty", false);
                m_problemSynonyms = MakeLexRef(m_synonym, new ICmObject[] { m_problem, m_trouble });

                m_body       = MakeEntry("body", "body", true);
                m_arm        = MakeEntry("arm", "arm", false);
                m_leg        = MakeEntry("leg", "leg", false);
                m_belly      = MakeEntry("belly", "belly", true);
                m_torso      = MakeEntry("torso", "torso", false);
                m_partWhole  = MakeRefType("partWhole", null, (int)LexRefTypeTags.MappingTypes.kmtEntryTree);
                m_bodyParts  = MakeLexRef(m_partWhole, new ICmObject[] { m_body, m_arm, m_leg.SensesOS[0], m_torso, m_belly });
                m_torsoParts = MakeLexRef(m_partWhole, new ICmObject[] { m_torso, m_arm, m_belly });

                m_hotBlank = MakeEntry("hotBlank", "problem rude word", false);
                MakeEntryRef(m_hotBlank, new ICmObject[] { m_trouble, m_water2 },
                             new ICmObject[] { m_trouble, m_water2 },
                             LexEntryRefTags.krtComplexForm);

                m_blueColor = MakeEntry("blue", "color blue", false);
                m_blueCold  = MakeEntry("blue", "cold", false);
                m_blueMusic = MakeEntry("blue", "jazzy", false);
                m_blueSad   = MakeEntry("blue", "sad", false);

                m_blueMusic.HomographNumber = 2;                               // will duplicate blue cold; pathological, but should not crash.
                m_blueSad.HomographNumber   = 3;                               // will conflict with renumbered blueMusic

                m_bluer             = m_blueColor.SensesOS[0];
                m_sky               = MakeEntry("sky", "interface between atmosphere and space", false, true);                   // true excludes as headword
                m_skyReal           = m_sky.SensesOS[0];
                m_blueSky           = MakeEntry("blue sky", "clear, huge potential", false, false);
                m_blueSkyComponents = MakeEntryRef(m_blueSky, new ICmObject[] { m_blueColor, m_skyReal },
                                                   new[] { m_bluer, m_skyReal },
                                                   LexEntryRefTags.krtComplexForm);

                m_ringBell   = MakeEntry("ring", "bell", false, false);
                m_ringCircle = MakeEntry("ring", "circle", false, true);
                m_ringGold   = MakeEntry("ring", "gold", false, false);

                m_blackVerb  = MakeEntry("black", "darken", false, true);
                m_blackColor = MakeEntry("black", "dark", false, false);

                m_hotArm           = MakeEntry("hotarm", "pitcher", false, false);
                m_hotArmComponents = MakeEntryRef(m_hotArm, new ICmObject[] { m_hot, m_arm },
                                                  new[] { m_hot, m_arm },
                                                  LexEntryRefTags.krtComplexForm);
                m_hotArm.DoNotPublishInRC.Add(m_mainDict);
                m_hotArmComponents.ShowComplexFormsInRS.Add(m_hot);

                m_nolanryan           = MakeEntry("Nolan_Ryan", "pitcher", false, false);
                m_nolanryanComponents = MakeEntryRef(m_nolanryan, new ICmObject[] { m_hot },
                                                     new[] { m_hot },
                                                     LexEntryRefTags.krtVariant);
                m_nolanryanComponents.VariantEntryTypesRS.Add(
                    (ILexEntryType)Cache.LangProject.LexDbOA.VariantEntryTypesOA.PossibilitiesOS[0]);
                m_nolanryan.DoNotPublishInRC.Add(m_mainDict);

                m_publisher = new MockPublisher((ISilDataAccessManaged)Cache.DomainDataByFlid, kmainFlid);
                m_publisher.SetOwningPropValue(Cache.LangProject.LexDbOA.Entries.Select(le => le.Hvo).ToArray());
                m_decorator = new DictionaryPublicationDecorator(Cache, m_publisher, ObjectListPublisher.OwningFlid);
            });
        }
		public override void FixtureSetup()
		{
			base.FixtureSetup();
			m_entryFactory = Cache.ServiceLocator.GetInstance<ILexEntryFactory>();
			m_senseFactory = Cache.ServiceLocator.GetInstance<ILexSenseFactory>();
			m_exampleFactory = Cache.ServiceLocator.GetInstance<ILexExampleSentenceFactory>();
			m_lexEntryRefFactory = Cache.ServiceLocator.GetInstance<ILexEntryRefFactory>();
			m_lexRefTypeFactory = Cache.ServiceLocator.GetInstance<ILexRefTypeFactory>();
			m_lexRefFactory = Cache.ServiceLocator.GetInstance<ILexReferenceFactory>();
			m_possListFactory = Cache.ServiceLocator.GetInstance<ICmPossibilityListFactory>();

			m_flidReferringSenses = Cache.MetaDataCacheAccessor.GetFieldId2(CmSemanticDomainTags.kClassId, "ReferringSenses",
				false);

			UndoableUnitOfWorkHelper.Do("do", "undo", Cache.ActionHandlerAccessor,
				() =>
					{
						m_domainBadWords = Cache.ServiceLocator.GetInstance<ICmSemanticDomainFactory>().Create();
						m_domainTemperature = Cache.ServiceLocator.GetInstance<ICmSemanticDomainFactory>().Create();
						Cache.LangProject.SemanticDomainListOA.PossibilitiesOS.Add(m_domainBadWords);
						Cache.LangProject.SemanticDomainListOA.PossibilitiesOS.Add(m_domainTemperature);
						m_mainDict = Cache.LangProject.LexDbOA.PublicationTypesOA.PossibilitiesOS[0];
						m_blank = MakeEntry("blank", "swear word", true);
						m_blank.SensesOS[0].SemanticDomainsRC.Add(m_domainBadWords);
						m_hot = MakeEntry("hot", "high temperature", false);
						m_hotTemp = m_hot.SensesOS[0];
						m_hotTemp.SemanticDomainsRC.Add(m_domainTemperature);
						m_trouble = MakeSense(m_hot, "trouble");
						m_trouble.DoNotPublishInRC.Add(m_mainDict);
						m_trouble.PicturesOS.Add(Cache.ServiceLocator.GetInstance<ICmPictureFactory>().Create());
						m_desirable = MakeSense(m_hot, "desirable");
						m_fastCar = MakeSense(m_desirable, "fast (car)");

						m_badHot = MakeExample(m_hotTemp, "a hot pile of blank", true);
						m_goodHot = MakeExample(m_hotTemp, "a hot bath", false);

						m_water = MakeEntry("water", "H2O", false);
						m_waterH2O = m_water.SensesOS[0];
						m_hotWater = MakeEntry("hot water", "trouble", false);
						m_hotWaterComponents = MakeEntryRef(m_hotWater, new ICmObject[] { m_trouble, m_waterH2O },
							new[] { m_trouble, m_waterH2O },
							LexEntryRefTags.krtComplexForm);

						m_blank2 = MakeEntry("blank", "vacant", false);
						m_blank3 = MakeEntry("blank", "erase", false);
						m_water2 = MakeEntry("water", "urinate", true);
						m_waterPrefix = MakeEntry("water", "aquatic", false);
						m_waterPrefix.LexemeFormOA.MorphTypeRA = Cache.ServiceLocator.GetInstance<IMoMorphTypeRepository>()
							.GetObject(MoMorphTypeTags.kguidMorphPrefix);

						m_synonym = MakeRefType("synonym", null, (int)LexRefTypeTags.MappingTypes.kmtSenseCollection);
						m_blip = MakeEntry("blip", "rude word", true);
						m_bother = MakeEntry("bother", "I'm annoyed by that", false);
						m_ouch = MakeEntry("ouch", "that hurt", false);
						m_blipOuch = MakeSense(m_blip.SensesOS[0], "rude ouch");
						m_blankSynonyms = MakeLexRef(m_synonym, new ICmObject[] {m_blank, m_ouch.SensesOS[0], m_blip.SensesOS[0], m_blipOuch, m_bother});

						m_problem = MakeEntry("problem", "difficulty", false);
						m_problemSynonyms = MakeLexRef(m_synonym, new ICmObject[] { m_problem, m_trouble });

						m_body = MakeEntry("body", "body", true);
						m_arm = MakeEntry("arm", "arm", false);
						m_leg = MakeEntry("leg", "leg", false);
						m_belly = MakeEntry("belly", "belly", true);
						m_torso = MakeEntry("torso", "torso", false);
						m_partWhole = MakeRefType("partWhole", null, (int)LexRefTypeTags.MappingTypes.kmtEntryTree);
						m_bodyParts = MakeLexRef(m_partWhole, new ICmObject[] {m_body, m_arm, m_leg.SensesOS[0], m_torso, m_belly});
						m_torsoParts = MakeLexRef(m_partWhole, new ICmObject[] {m_torso, m_arm, m_belly});

						m_hotBlank = MakeEntry("hotBlank", "problem rude word", false);
						MakeEntryRef(m_hotBlank, new ICmObject[] { m_trouble, m_water2 },
							new ICmObject[] { m_trouble, m_water2 },
							LexEntryRefTags.krtComplexForm);

						m_blueColor = MakeEntry("blue", "color blue", false);
						m_blueCold = MakeEntry("blue", "cold", false);
						m_blueMusic = MakeEntry("blue", "jazzy", false);
						m_blueSad = MakeEntry("blue", "sad", false);

						m_blueMusic.HomographNumber = 2; // will duplicate blue cold; pathological, but should not crash.
						m_blueSad.HomographNumber = 3; // will conflict with renumbered blueMusic

						m_bluer = m_blueColor.SensesOS[0];
						m_sky = MakeEntry("sky", "interface between atmosphere and space", false, true); // true excludes as headword
						m_skyReal = m_sky.SensesOS[0];
						m_blueSky = MakeEntry("blue sky", "clear, huge potential", false, false);
						m_blueSkyComponents = MakeEntryRef(m_blueSky, new ICmObject[] { m_blueColor, m_skyReal },
							new[] { m_bluer, m_skyReal },
							LexEntryRefTags.krtComplexForm);

						m_ringBell = MakeEntry("ring", "bell", false, false);
						m_ringCircle = MakeEntry("ring", "circle", false, true);
						m_ringGold = MakeEntry("ring", "gold", false, false);

						m_blackVerb = MakeEntry("black", "darken", false, true);
						m_blackColor = MakeEntry("black", "dark", false, false);

						m_hotArm = MakeEntry("hotarm", "pitcher", false, false);
						m_hotArmComponents = MakeEntryRef(m_hotArm, new ICmObject[] { m_hot, m_arm },
												new[] { m_hot, m_arm },
												LexEntryRefTags.krtComplexForm);
						m_hotArm.DoNotPublishInRC.Add(m_mainDict);
						m_hotArmComponents.ShowComplexFormsInRS.Add(m_hot);

						m_nolanryan = MakeEntry("Nolan_Ryan", "pitcher", false, false);
						m_nolanryanComponents = MakeEntryRef(m_nolanryan, new ICmObject[] { m_hot },
												new[] { m_hot },
												LexEntryRefTags.krtVariant);
						m_nolanryanComponents.VariantEntryTypesRS.Add(
							(ILexEntryType)Cache.LangProject.LexDbOA.VariantEntryTypesOA.PossibilitiesOS[0]);
						m_nolanryan.DoNotPublishInRC.Add(m_mainDict);

						m_edName = MakeEntry("ed", "someone called ed", false);
						m_edSuffix = MakeEntry("ed", "past", false, false, true);

						m_publisher = new MockPublisher((ISilDataAccessManaged)Cache.DomainDataByFlid, kmainFlid);
						m_publisher.SetOwningPropValue(Cache.LangProject.LexDbOA.Entries.Select(le => le.Hvo).ToArray());
						m_decorator = new DictionaryPublicationDecorator(Cache, m_publisher, ObjectListPublisher.OwningFlid);
					});
		}