public void GetMoreCompletePartOfSpeechLabel_ToFromCase()
        {
            const string source  = @"
			  <LexEntry guid='89942b8e-2b1e-4074-8641-1abca93982f8'>
				<AlternateForms>
				  <objsur guid='bcbc9cd6-ca73-4fb9-a427-12c5a3c7d1ae' t='o' />
				</AlternateForms>
				<LexemeForm>
				  <MoStemAllomorph guid='4109d3d2-faf4-4f80-b28c-f8e4e0146c11'>
					<Form>
					  <AUni ws='seh'>conflict</AUni>
					</Form>
				  </MoStemAllomorph>
				</LexemeForm>
				<MorphoSyntaxAnalyses>
				  <MoStemMsa guid='54699bf4-7285-4f91-9f65-59b8dab40031'>
					<PartOfSpeech>
					  <objsur guid='8e45de56-5105-48dc-b302-05985432e1e7' t='r' />
					</PartOfSpeech>
				  </MoStemMsa>
				  <MoDerivAffMsa guid='156875ac-9f6a-4bab-9979-e914d8a062fc'>
					<FromMsFeatures/>
					<FromPartOfSpeech>
					  <objsur guid='3ecbfcc8-76d7-43bc-a5ff-3c47fabf355c' t='r' />
					</FromPartOfSpeech>
					<ToMsFeatures/>
					<ToPartOfSpeech>
					  <objsur guid='00a10735-bd2c-4bc5-9555-ef9f784a8c8c' t='r' />
					</ToPartOfSpeech>
				  </MoDerivAffMsa>
				</MorphoSyntaxAnalyses>
				<Senses>
				  <ownseq class='LexSense' guid='4bd15611-5a36-422e-baa6-b6edb943c4da'>
					<MorphoSyntaxAnalysis>
					  <objsur guid='156875ac-9f6a-4bab-9979-e914d8a062fc' t='r' />
					</MorphoSyntaxAnalysis>
				  </ownseq>
				</Senses>
			  </LexEntry>"            ;
            const string posList =
                @"<?xml version='1.0' encoding='utf-8'?>
			  <PartsOfSpeech>
				<CmPossibilityList guid='d7f7150c-e8cf-11d3-9764-00c04f186933'>
				  <Abbreviation>
					<AUni ws='en'>Pos</AUni>
				  </Abbreviation>
				  <ItemClsid val='5049' />
				  <Name>
					<AUni ws='en'>Parts Of Speech</AUni>
				  </Name>
				  <Possibilities>
					<ownseq class='PartOfSpeech' guid='d7f7150d-e8cf-11d3-9764-00c04f186933'>
					  <Abbreviation>
						<AUni ws='en'>V</AUni>
					  </Abbreviation>
					  <Name>
						<AUni ws='en'></AUni>
					  </Name>
					</ownseq>
					<ownseq class='PartOfSpeech' guid='00a10735-bd2c-4bc5-9555-ef9f784a8c8c'>
					  <Abbreviation>
						<AUni ws='en'>Adv</AUni>
						<AUni ws='es'>Adv</AUni>
						<AUni ws='fr'>Adv</AUni>
					  </Abbreviation>
					  <Name>
						<AUni ws='en'>Adverb</AUni>
						<AUni ws='es'>Adverbo</AUni>
						<AUni ws='fr'>Adverbe</AUni>
					  </Name>
					</ownseq>
					<ownseq class='PartOfSpeech' guid='3ecbfcc8-76d7-43bc-a5ff-3c47fabf355c'>
					  <Abbreviation>
						<AUni ws='en'>N</AUni>
					  </Abbreviation>
					  <Name>
						<AUni ws='en'>Noun</AUni>
					  </Name>
					</ownseq>
				  </Possibilities>
				</CmPossibilityList>
			  </PartsOfSpeech>"            ;
            var root         = FieldWorksTestServices.GetNode(source);
            var morphSynData = FieldWorksTestServices.GetNode(posList);
            var input        = root.ChildNodes[3].ChildNodes[0].ChildNodes[0];      // MorphoSyntaxAnalysis
            var generator    = new MockPosContextGenerator(morphSynData);
            var descriptor   = generator.GenerateContextDescriptor(input, "myfile");

            Assert.That(descriptor.DataLabel, Is.EqualTo("Entry \"conflict\" Noun/Adverb:Adverbo:Adverbe"));
            Assert.That(descriptor.PathToUserUnderstandableElement, Contains.Substring("label=" + descriptor.DataLabel));
            Assert.That(descriptor.PathToUserUnderstandableElement, Contains.Substring("guid=" + "4bd15611-5a36-422e-baa6-b6edb943c4da"));

            // verify the html context generation on the objsur element
            Assert.That(generator.HtmlContext(input.ChildNodes[0]),
                        Is.EqualTo(@"<div class='PartOfSpeech'>Cat: Noun/Adverb:Adverbo:Adverbe</div>"));
        }
		public void GetMoreCompletePartOfSpeechLabel_ToFromCase()
		{
			const string source = @"
			  <LexEntry guid='89942b8e-2b1e-4074-8641-1abca93982f8'>
				<AlternateForms>
				  <objsur guid='bcbc9cd6-ca73-4fb9-a427-12c5a3c7d1ae' t='o' />
				</AlternateForms>
				<LexemeForm>
				  <MoStemAllomorph guid='4109d3d2-faf4-4f80-b28c-f8e4e0146c11'>
					<Form>
					  <AUni ws='seh'>conflict</AUni>
					</Form>
				  </MoStemAllomorph>
				</LexemeForm>
				<MorphoSyntaxAnalyses>
				  <MoStemMsa guid='54699bf4-7285-4f91-9f65-59b8dab40031'>
					<PartOfSpeech>
					  <objsur guid='8e45de56-5105-48dc-b302-05985432e1e7' t='r' />
					</PartOfSpeech>
				  </MoStemMsa>
				  <MoDerivAffMsa guid='156875ac-9f6a-4bab-9979-e914d8a062fc'>
					<FromMsFeatures/>
					<FromPartOfSpeech>
					  <objsur guid='3ecbfcc8-76d7-43bc-a5ff-3c47fabf355c' t='r' />
					</FromPartOfSpeech>
					<ToMsFeatures/>
					<ToPartOfSpeech>
					  <objsur guid='00a10735-bd2c-4bc5-9555-ef9f784a8c8c' t='r' />
					</ToPartOfSpeech>
				  </MoDerivAffMsa>
				</MorphoSyntaxAnalyses>
				<Senses>
				  <ownseq class='LexSense' guid='4bd15611-5a36-422e-baa6-b6edb943c4da'>
					<MorphoSyntaxAnalysis>
					  <objsur guid='156875ac-9f6a-4bab-9979-e914d8a062fc' t='r' />
					</MorphoSyntaxAnalysis>
				  </ownseq>
				</Senses>
			  </LexEntry>";
			const string posList =
			  @"<?xml version='1.0' encoding='utf-8'?>
			  <PartsOfSpeech>
				<CmPossibilityList guid='d7f7150c-e8cf-11d3-9764-00c04f186933'>
				  <Abbreviation>
					<AUni ws='en'>Pos</AUni>
				  </Abbreviation>
				  <ItemClsid val='5049' />
				  <Name>
					<AUni ws='en'>Parts Of Speech</AUni>
				  </Name>
				  <Possibilities>
					<ownseq class='PartOfSpeech' guid='d7f7150d-e8cf-11d3-9764-00c04f186933'>
					  <Abbreviation>
						<AUni ws='en'>V</AUni>
					  </Abbreviation>
					  <Name>
						<AUni ws='en'></AUni>
					  </Name>
					</ownseq>
					<ownseq class='PartOfSpeech' guid='00a10735-bd2c-4bc5-9555-ef9f784a8c8c'>
					  <Abbreviation>
						<AUni ws='en'>Adv</AUni>
						<AUni ws='es'>Adv</AUni>
						<AUni ws='fr'>Adv</AUni>
					  </Abbreviation>
					  <Name>
						<AUni ws='en'>Adverb</AUni>
						<AUni ws='es'>Adverbo</AUni>
						<AUni ws='fr'>Adverbe</AUni>
					  </Name>
					</ownseq>
					<ownseq class='PartOfSpeech' guid='3ecbfcc8-76d7-43bc-a5ff-3c47fabf355c'>
					  <Abbreviation>
						<AUni ws='en'>N</AUni>
					  </Abbreviation>
					  <Name>
						<AUni ws='en'>Noun</AUni>
					  </Name>
					</ownseq>
				  </Possibilities>
				</CmPossibilityList>
			  </PartsOfSpeech>";
			var root = FieldWorksTestServices.GetNode(source);
			var morphSynData = FieldWorksTestServices.GetNode(posList);
			var input = root.ChildNodes[3].ChildNodes[0].ChildNodes[0]; // MorphoSyntaxAnalysis
			var generator = new MockPosContextGenerator(morphSynData);
			var descriptor = generator.GenerateContextDescriptor(input, "myfile");
			Assert.That(descriptor.DataLabel, Is.EqualTo("Entry \"conflict\" Noun/Adverb:Adverbo:Adverbe"));
			Assert.That(descriptor.PathToUserUnderstandableElement, Contains.Substring("label=" + descriptor.DataLabel));
			Assert.That(descriptor.PathToUserUnderstandableElement, Contains.Substring("guid=" + "4bd15611-5a36-422e-baa6-b6edb943c4da"));

			// verify the html context generation on the objsur element
			Assert.That(generator.HtmlContext(input.ChildNodes[0]),
				Is.EqualTo(@"<div class='PartOfSpeech'>Cat: Noun/Adverb:Adverbo:Adverbe</div>"));
		}