/// <summary> /// Reconstructs a color formatting rule from the specified XML image. /// </summary> /// <param name="node">The node containing the color formatting rule XML.</param> /// <returns>The color formatting rule.</returns> private static ColorFormattingRule ReadColorFormattingRuleXml(XmlNode node) { ColorFormattingRule formattingRule = new ColorFormattingRule(); XmlNodeList ruleNodes = XmlHelper.SelectNodes(node, "colorFormattingRule/rules/rule"); foreach (XmlNode ruleNode in ruleNodes) { ColorRule rule = new ColorRule(); rule.BackgroundColor = ColorInfoHelper.ReadColorInfoXml(ruleNode, "backgroundColor"); rule.ForegroundColor = ColorInfoHelper.ReadColorInfoXml(ruleNode, "foregroundColor"); rule.Condition = ConditionHelper.ReadConditionXml(ruleNode, "condition"); formattingRule.Rules.Add(rule); } return(formattingRule); }
/// <summary> /// </summary> /// <param name="index"></param> /// <param name="cfr1"></param> /// <param name="cfr2"></param> private static void CompareColorFormattingRules(int index, ColorFormattingRule cfr1, ColorFormattingRule cfr2) { Assert.IsNotNull(cfr1, "Format Index:{0} ColorFormattingRule 1 should not be null.", index.ToString(CultureInfo.InvariantCulture)); Assert.IsNotNull(cfr2, "Format Index:{0} ColorFormattingRule 2 should not be null.", index.ToString(CultureInfo.InvariantCulture)); Assert.IsNotNull(cfr1.Rules, "Format Index:{0} ColorFormattingRule.Rules 1 should not be null.", index.ToString(CultureInfo.InvariantCulture)); Assert.IsNotNull(cfr2.Rules, "Format Index:{0} ColorFormattingRule.Rules 2 should not be null.", index.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(cfr1.Rules.Count, cfr2.Rules.Count, "Format Index:{0} ColorFormattingRule.Rules.Count is invalid.", index.ToString(CultureInfo.InvariantCulture)); for (int ri = 0; ri < cfr1.Rules.Count; ri++) { ColorRule cr1 = cfr1.Rules[ri]; ColorRule cr2 = cfr2.Rules[ri]; Assert.AreEqual(cr1.BackgroundColor.A, cr2.BackgroundColor.A, "Format Index:{0} Rule Index:{1} BackgroundColor.A is invalid", index.ToString(CultureInfo.InvariantCulture), ri.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(cr1.BackgroundColor.R, cr2.BackgroundColor.R, "Format Index:{0} Rule Index:{1} BackgroundColor.R is invalid", index.ToString(CultureInfo.InvariantCulture), ri.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(cr1.BackgroundColor.G, cr2.BackgroundColor.G, "Format Index:{0} Rule Index:{1} BackgroundColor.G is invalid", index.ToString(CultureInfo.InvariantCulture), ri.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(cr1.BackgroundColor.B, cr2.BackgroundColor.B, "Format Index:{0} Rule Index:{1} BackgroundColor.B is invalid", index.ToString(CultureInfo.InvariantCulture), ri.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(cr1.ForegroundColor.A, cr2.ForegroundColor.A, "Format Index:{0} Rule Index:{1} ForegroundColor.A is invalid", index.ToString(CultureInfo.InvariantCulture), ri.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(cr1.ForegroundColor.R, cr2.ForegroundColor.R, "Format Index:{0} Rule Index:{1} ForegroundColor.R is invalid", index.ToString(CultureInfo.InvariantCulture), ri.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(cr1.ForegroundColor.G, cr2.ForegroundColor.G, "Format Index:{0} Rule Index:{1} ForegroundColor.G is invalid", index.ToString(CultureInfo.InvariantCulture), ri.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(cr1.ForegroundColor.B, cr2.ForegroundColor.B, "Format Index:{0} Rule Index:{1} ForegroundColor.B is invalid", index.ToString(CultureInfo.InvariantCulture), ri.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(cr1.Condition.ColumnName, cr2.Condition.ColumnName, "Format Index:{0} Rule Index:{1} Condition.ColumnName is invalid", index.ToString(CultureInfo.InvariantCulture), ri.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(cr1.Condition.ColumnType.GetType( ), cr2.Condition.ColumnType.GetType( ), "Format Index:{0} Rule Index:{1} Condition.ColumnType is invalid", index.ToString(CultureInfo.InvariantCulture), ri.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(cr1.Condition.Operator, cr2.Condition.Operator, "Format Index:{0} Rule Index:{1} Condition.Operator is invalid", index.ToString(CultureInfo.InvariantCulture), ri.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(cr1.Condition.Arguments.Count, cr2.Condition.Arguments.Count, "Format Index:{0} Rule Index:{1} Condition.Arguments.Count is invalid", index.ToString(CultureInfo.InvariantCulture), ri.ToString(CultureInfo.InvariantCulture)); for (int ti = 0; ti < cr1.Condition.Arguments.Count; ti++) { TypedValue tv1 = cr1.Condition.Arguments[ti]; TypedValue tv2 = cr1.Condition.Arguments[ti]; Assert.AreEqual(tv1.Type, tv2.Type, "Format Index:{0} Rule Index:{1} Arg Index:{2} Argument.Type is invalid", index.ToString(CultureInfo.InvariantCulture), ri.ToString(CultureInfo.InvariantCulture), ti.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(tv1.Value, tv2.Value, "Format Index:{0} Rule Index:{1} Arg Index:{2} Argument.Value is invalid", index.ToString(CultureInfo.InvariantCulture), ri.ToString(CultureInfo.InvariantCulture), ti.ToString(CultureInfo.InvariantCulture)); } } }