public void DrawingElements() { factory = new GamesXmlFactory(); factory.Read("test_games.xml"); definitions = factory.Definitions; definition = definitions [0]; Assert.AreEqual(2, definition.DrawingObjects.Length); // Check image drawing object Assert.AreEqual(typeof(gbrainy.Core.Main.Xml.ImageDrawingObject), definition.DrawingObjects [0].GetType()); ImageDrawingObject image = definition.DrawingObjects [0] as ImageDrawingObject; Assert.AreEqual("clock.svg", image.Filename); Assert.AreEqual(0.30, image.X); Assert.AreEqual(0.40, image.Y); Assert.AreEqual(0.50, image.Width); Assert.AreEqual(0.60, image.Height); // Check text drawing object Assert.AreEqual(typeof(gbrainy.Core.Main.Xml.TextDrawingObject), definition.DrawingObjects [1].GetType()); TextDrawingObject text = definition.DrawingObjects [1] as TextDrawingObject; Assert.AreEqual("Sample text for unit tests", text.Text); Assert.AreEqual(0.5, text.X); Assert.AreEqual(0.4, text.Y); Assert.AreEqual(true, text.Centered); Assert.AreEqual(TextDrawingObject.Sizes.Large, text.Size); }
public void GameDefinitionWithVariants() { GameXmlDefinitionVariant variant; factory = new GamesXmlFactory(); factory.Read("test_games.xml"); definitions = factory.Definitions; definition = definitions [1]; // Age Game Assert.AreEqual("Age", definition.Name); Assert.AreEqual(2, definition.Variants.Count); Assert.AreEqual("father_son.svg", ((definition.DrawingObjects[0]) as ImageDrawingObject).Filename); // Variant: John is 46 years old. variant = definition.Variants [0]; Assert.AreEqual(true, variant.Question.String.Contains("John is 46 years old")); Assert.AreEqual("[son]", variant.AnswerText); Assert.AreEqual(true, variant.Variables.Contains("int father = 46;")); // Variant: John's age is nowadays 2 times his son's age. variant = definition.Variants [1]; Assert.AreEqual(true, variant.Question.String.Contains("John's age is nowadays 2 times his son's age.")); Assert.AreEqual("24", variant.AnswerText); Assert.AreEqual(true, variant.Variables.Contains("int ago = years [idx];")); }
public void BasicGameDefinition() { factory = new GamesXmlFactory(); factory.Read("test_games.xml"); definitions = factory.Definitions; definition = definitions [0]; Assert.AreEqual("Clock Rotation", definition.Name); Assert.AreEqual(0, definition.Variants.Count); Assert.AreEqual(GameTypes.LogicPuzzle, definition.Type); Assert.AreEqual(GameDifficulty.Medium | GameDifficulty.Master, definition.Difficulty); Assert.AreEqual("Rationale text", definition.Rationale.String); Assert.AreEqual("How many degrees rotates the minute hand of a clock?", definition.Question.String); Assert.AreEqual("How many degrees rotates the minute hand of a clocks?", definition.Question.PluralString); Assert.AreEqual("[rslt]", definition.AnswerText); }
static string GetVariantsDefinitions(GameXmlDefinition definition) { StringBuilder builder = new StringBuilder(); foreach (GameXmlDefinitionVariant variant in definition.Variants) { builder.AppendLine("\tvariant = new GameXmlDefinitionVariant ();"); if (String.IsNullOrEmpty(variant.Tip) == false) { builder.AppendLine(String.Format("\tvariant.Tip = Catalog.GetString (\"{0}\");", variant.Tip)); } builder.AppendLine("\tvariants.Add (variant);"); } return(builder.ToString()); }
// string [0] static string[] GetVariantsVariables(GameXmlDefinition definition) { const string exp = "([^=]+) (=) ([^!]+)"; StringBuilderIndentation builder_definitions = new StringBuilderIndentation(); StringBuilderIndentation builder_assigments = new StringBuilderIndentation(); string [] rslt = new string [2]; GameXmlDefinitionVariant variant; builder_assigments.Level = 4; for (int i = 0; i < definition.Variants.Count; i++) { Regex regex; int prev = 0, next, pos; string line, vars; Match match; variant = definition.Variants [i]; if (String.IsNullOrEmpty(variant.Variables)) { continue; } // Header builder_definitions.Level = 2; builder_definitions.AppendLine(String.Format("class VariantVariables{0}", i)); builder_definitions.AppendLine("{"); builder_definitions.Level = 3; regex = new Regex(exp, RegexOptions.IgnoreCase); vars = variant.Variables; builder_definitions.AppendLine("Random random = new Random ();"); while (true) { pos = next = vars.IndexOf(';', prev); if (pos == -1) { line = vars.Substring(prev, vars.Length - prev); } else { line = vars.Substring(prev, next + 1 - prev); } line = line.Trim(); // Process line match = regex.Match(line); bool first_nonspace = false; StringBuilder var_name = new StringBuilder(); string var_def = match.Groups [1].ToString(); Console.WriteLine("var_Def {0}", var_def); for (int n = var_def.Length - 1; n >= 0; n--) { if (var_def [n] == ' ' && first_nonspace == true) { break; } if (var_def [n] != ' ') { first_nonspace = true; } var_name.Insert(0, var_def [n]); } if (String.IsNullOrEmpty(line) == false) { builder_definitions.AppendLine(String.Format("public {0};", match.Groups [1])); builder_assigments.AppendLine(String.Format("{0} = {1}", var_name.ToString(), match.Groups [3])); } if (pos == -1) { break; } prev = next + 1; } // Footer builder_definitions.AppendLine(" "); builder_definitions.AppendLine(String.Format("VariantVariables{0} ()", i)); builder_definitions.AppendLine("{"); builder_definitions.Level = 0; builder_definitions.AppendLine(builder_assigments.ToString()); builder_definitions.Level = 3; builder_definitions.AppendLine("}"); builder_definitions.Level = 2; builder_definitions.AppendLine("}"); builder_assigments.Clear(); } rslt [VarIdxDefinitions] = builder_definitions.ToString(); rslt [VarIdxAssigments] = builder_assigments.ToString(); return(rslt); }