public void ContextForComplexChangeInAStyle()
		{
			const string source = @"
				<StStyle guid='d9aa70f0-ea5e-11de-8efb-0013722f8dec'>
					<Name>
						<Uni>Abnormal</Uni>
					</Name>
					<Rules>
						<Prop backcolor='white' fontsize='14000' forecolor='green' spaceAfter='6000' undercolor='red' underline='double'>
							<WsStyles9999>
								<WsProp backcolor='red' fontFamily='Verdana' fontsize='12000' fontsizeUnit='mpt' offset='-3000' offsetUnit='mpt' undercolor='yellow' underline='single' ws='en' />
								<WsProp backcolor='white' fontFamily='Vladamir' fontsize='18000' fontsizeUnit='mpt' offsetUnit='mpt' undercolor='black' underline='double' ws='ru' />
							</WsStyles9999>
							<WsStyles9999>
								<WsProp backcolor='blue' fontFamily='OuiOui' fontsize='24000' fontsizeUnit='mpt' offset='5000' offsetUnit='mpt' underline='tripple' ws='fr' />
							</WsStyles9999>
						</Prop>
					</Rules>
				</StStyle>";
			var root = FieldWorksTestServices.GetNode(source);
			var input = root.ChildNodes[1]; // Rules
			var generator = new StyleContextGenerator();
			var descriptor = generator.GenerateContextDescriptor(input, "myfile");
			Assert.That(descriptor.DataLabel, Is.EqualTo("Style \"Abnormal\""));
			Assert.That(descriptor.PathToUserUnderstandableElement, Contains.Substring("label=" + descriptor.DataLabel));
			Assert.That(descriptor.PathToUserUnderstandableElement, Contains.Substring("guid=" + "d9aa70f0-ea5e-11de-8efb-0013722f8dec"));

			// verify the html context generation
			Assert.That(generator.HtmlContext(input.ChildNodes[0]), // Prop
				Is.EqualTo(@"<div class='StStyle'> backcolor (white) fontsize (14000) forecolor (green) spaceAfter (6000) undercolor (red) underline (double)" +
					@" ws (en [backcolor (red) fontFamily (Verdana) fontsize (12000) fontsizeUnit (mpt) offset (-3000) offsetUnit (mpt) undercolor (yellow) underline (single)])" +
					@" ws (ru [backcolor (white) fontFamily (Vladamir) fontsize (18000) fontsizeUnit (mpt) offsetUnit (mpt) undercolor (black) underline (double)])" +
					@" ws (fr [backcolor (blue) fontFamily (OuiOui) fontsize (24000) fontsizeUnit (mpt) offset (5000) offsetUnit (mpt) underline (tripple)])</div>"));
		}
		public void ContextForSimpleChangeInAStyle()
		{
			const string source = @"
				<StStyle guid='d9aa70f0-ea5e-11de-8efb-0013722f8dec'>
					<Name>
						<Uni>Normal</Uni>
					</Name>
					<Rules>
						<Prop backcolor='white' fontsize='20000' forecolor='993300' spaceAfter='6000' />
					</Rules>
				</StStyle>";
			var root = FieldWorksTestServices.GetNode(source);
			var input = root.ChildNodes[1]; // Rules
			var generator = new StyleContextGenerator();
			var descriptor = generator.GenerateContextDescriptor(input, "myfile");
			Assert.That(descriptor.DataLabel, Is.EqualTo("Style \"Normal\""));
			Assert.That(descriptor.PathToUserUnderstandableElement, Contains.Substring("label=" + descriptor.DataLabel));
			Assert.That(descriptor.PathToUserUnderstandableElement, Contains.Substring("guid=" + "d9aa70f0-ea5e-11de-8efb-0013722f8dec"));

			// verify the html context generation
			Assert.That(generator.HtmlContext(input.ChildNodes[0]), // Prop
				Is.EqualTo(@"<div class='StStyle'> backcolor (white) fontsize (20000) forecolor (993300) spaceAfter (6000)</div>"));
		}
		public void ContextForDataNotebookSliceStyleChange()
		{
			const string source = @"
				<RnGenericRec guid='29fb1310-385c-46a5-9e0e-d6cdaee7db17'>
					<Description>
						<StText guid='b7c744ed-a59c-4484-aead-f5c3dfd1b604'>
							<Paragraphs>
								<ownseq class='StTxtPara' guid='9febc9a9-20ce-4345-8a82-bf168fd9200d'>
									<StyleRules>
										<Prop namedStyle='Heading 2' />
									</StyleRules>
								</ownseq>
							</Paragraphs>
						</StText>
					</Description>
					<Custom name='Like'>
						<StText guid='f0b19053-f91e-4856-9679-5e801ed66961'>
							<Paragraphs>
								<ownseq class='StTxtPara' guid='4125c1ed-567e-47a3-a6fb-e6186f6f176d'>
									<StyleRules>
										<Prop namedStyle='Block Quote' />
									</StyleRules>
								</ownseq>
							</Paragraphs>
						</StText>
					</Custom>
					<Title>
						<Str>
							<Run ws='en'>Type</Run>
						</Str>
					</Title>
				</RnGenericRec>";

			var root = FieldWorksTestServices.GetNode(source);
			var input = root.ChildNodes[1].ChildNodes[0].ChildNodes[0].ChildNodes[0].ChildNodes[0]; // Custom//StyleRules
			var generator = new StyleContextGenerator();
			var descriptor = generator.GenerateContextDescriptor(input, "myfile");
			Assert.That(descriptor.DataLabel, Is.EqualTo("Data Notebook Record \"Type\" Custom Field \"Like\""));
			Assert.That(descriptor.PathToUserUnderstandableElement, Contains.Substring("label=" + descriptor.DataLabel));
			Assert.That(descriptor.PathToUserUnderstandableElement, Contains.Substring("silfw://localhost/link?app=flex&d"));

			// verify the html context generation
			Assert.That(generator.HtmlContext(input.ChildNodes[0]), // Prop
				Is.EqualTo(@"<div class='StStyle'> namedStyle (Block Quote)</div>"));

			input = root.ChildNodes[0].ChildNodes[0].ChildNodes[0].ChildNodes[0].ChildNodes[0]; // Description//StyleRules
			generator = new StyleContextGenerator();
			descriptor = generator.GenerateContextDescriptor(input, "myfile");
			Assert.That(descriptor.DataLabel, Is.EqualTo("Data Notebook Record \"Type\" Description"));
			Assert.That(descriptor.PathToUserUnderstandableElement, Contains.Substring("label=" + descriptor.DataLabel));
			Assert.That(descriptor.PathToUserUnderstandableElement, Contains.Substring("silfw://localhost/link?app=flex&d"));

			// verify the html context generation
			Assert.That(generator.HtmlContext(input.ChildNodes[0]), // Prop
				Is.EqualTo(@"<div class='StStyle'> namedStyle (Heading 2)</div>"));
		}
		public void ContextForNamedFieldStyleChange()
		{
			const string source = @"
				<WfiWordform guid='d9aa70f0-ea5e-11de-8efb-0013722f8dec'> <!-- some element that MdCache.GetClassInfo() knows has a guid -->
					<Name>
						<Uni>Abnormal</Uni>
					</Name>
					<SomeWsRules>
						<Prop backcolor='green' fontsize='24000' forecolor='yellow' spaceAfter='9000' undercolor='blue' underline='red'>
							<MoreRules>
								<WsProp backcolor='beet' fontFamily='NanoPrint' fontsize='0.00002' fontsizeUnit='mi' offset='-0.003' offsetUnit='m' undercolor='yellow' underline='none' ws='aa' />
							</MoreRules>
							<MoreRules>
								<WsProp backcolor='carrot' fontFamily='ReallyLarge' fontsize='98E-57' fontsizeUnit='au' offset='0.050' offsetUnit='cm' underline='tripple' ws='bb' />
							</MoreRules>
						</Prop>
					</SomeWsRules>
				</WfiWordform>";
			var root = FieldWorksTestServices.GetNode(source);
			var input = root.ChildNodes[2]; // SomeWsRules  - the comment is [0]
			var generator = new StyleContextGenerator();
			var descriptor = generator.GenerateContextDescriptor(input, "myfile");
			Assert.That(descriptor.DataLabel, Is.EqualTo("WfiWordform \"Abnormal\""));
			Assert.That(descriptor.PathToUserUnderstandableElement, Contains.Substring("label=" + descriptor.DataLabel));
			Assert.That(descriptor.PathToUserUnderstandableElement, Contains.Substring("guid=" + "d9aa70f0-ea5e-11de-8efb-0013722f8dec"));

			// verify the html context generation
			Assert.That(generator.HtmlContext(input.ChildNodes[0]), // Prop
				Is.EqualTo(@"<div class='StStyle'> backcolor (green) fontsize (24000) forecolor (yellow) spaceAfter (9000) undercolor (blue) underline (red) "
					+ @"ws (aa [backcolor (beet) fontFamily (NanoPrint) fontsize (0.00002) fontsizeUnit (mi) offset (-0.003) offsetUnit (m) undercolor (yellow) underline (none)]) "
					+ @"ws (bb [backcolor (carrot) fontFamily (ReallyLarge) fontsize (98E-57) fontsizeUnit (au) offset (0.050) offsetUnit (cm) underline (tripple)])</div>"));
		}