Example #1
0
        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);
        }
Example #2
0
        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];"));
        }
Example #3
0
        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);
        }
Example #4
0
    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());
    }
Example #5
0
    // 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);
    }