using System; using System.Collections.Generic; using System.Drawing; using System.Text; using Advanced_Software_Engineering; using Advanced_Software_Engineering.Verbs.DrawingVerbs; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace Advanced_Software_Engineering_Tests { /// /// The CommandTester class tests the commands possible, mostly by getting a verb and checking it's description.. /// [TestClass] public class CommandTester { Random rand = new Random(); /// /// Automatically tests: /// - moveto /// - drawto /// - line /// - rp /// Current todo list: /// - square /// - rectangle /// - circle /// - triangle /// - dot /// - clear /// - pen /// - fill /// [TestMethod] public void VerbFactoryTester_Automatic1() { Dictionary commandParamaterNumber = new Dictionary { {"moveto", new int[] { 2 } }, {"drawto", new int[] { 2 } }, {"line", new int[] { 2 } }, {"lineto", new int[] { 2 } }, {"rp", new int[] { 2, 3 } }, //todo: {"square", new int[] { 1, 2, 8 } }, {"rectangle", new int[] { 1, 2, 6 } }, {"circle", new int[] { 1 } }, {"triangle", new int[] { 1, 2 } }, {"dot", new int[] { 0 } }, {"clear", new int[] { 0 } }, {"pen", new int[] { 1, 3 } }, {"fill", new int[] { 1, 3 } } }; foreach (string command in commandParamaterNumber.Keys) { foreach (int commandParameterNumbers in commandParamaterNumber[command]) { string input = command + " "; List inputParameters = new List(); for (int paramater = 0; paramater < commandParameterNumbers; paramater++) { int inputParameter = rand.Next(1000); inputParameters.Add(inputParameter); input += inputParameter + (paramater - 1 != commandParameterNumbers ? ", " : ""); } Verb verb = VerbFactory.MakeVerb(null, input); if (command == "moveto") { string verbDesc = verb.GetDescription(); string correctDesc = "Move origin to " + inputParameters[0] + ", " + inputParameters[1]; Assert.AreEqual(correctDesc, verbDesc); } else if (command == "drawto" || command == "lineto" || command == "line") { string verbDesc = verb.GetDescription(); string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1]; Assert.AreEqual(correctDesc, verbDesc); } else if (command == "shape") { string verbDesc = verb.GetDescription(); string correctDesc; if (commandParameterNumbers == 2) correctDesc = "Draws a " + inputParameters[0] + " sided regular polygon, with rotation of 0 radians, with inner radius of " + (double)inputParameters[1]; else correctDesc = "Draws a " + inputParameters[0] + " sided regular polygon, with rotation of " + (double)(Math.PI * inputParameters[2] / 180) + " radians, with inner radius of " + (double)inputParameters[1]; Assert.AreEqual(correctDesc, verbDesc); } } } } /// /// tests the "move" command. See . /// [TestMethod] public void MoveToTester_Manual1() { string input = "move 200, 300"; string[] inputParameters = { "200", "300" }; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); string correctDesc = "Move origin to " + inputParameters[0] + ", " + inputParameters[1]; Assert.AreEqual(correctDesc, verbDesc); } /// /// tests the "moveto" command. See . /// [TestMethod] public void MoveToTester_Manual2() { string input = "moveto 200, 300"; string[] inputParameters = { "200", "300" }; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); string correctDesc = "Move origin to " + inputParameters[0] + ", " + inputParameters[1]; Assert.AreEqual(correctDesc, verbDesc); } /// /// tests the "drawto" command. See . /// [TestMethod] public void DrawToTester_Manual1() { string input = "drawto 200, 300"; string[] inputParameters = { "200", "300" }; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1]; Assert.AreEqual(correctDesc, verbDesc); } /// /// tests the "line" command. See . /// [TestMethod] public void DrawToTester_Manual2() { string input = "line 200, 300"; string[] inputParameters = { "200", "300" }; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1]; Assert.AreEqual(correctDesc, verbDesc); } /// /// tests the "lineto" command. See . /// [TestMethod] public void DrawToTester_Manual3() { string input = "lineto 200, 300"; string[] inputParameters = { "200", "300" }; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1]; Assert.AreEqual(correctDesc, verbDesc); } /// /// tests the "regularpolygon" command. See . /// [TestMethod] public void RegularPolygonTester_Manual1() { string input = "regularpolygon 3, 50"; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); int sides = 3; double scale = 50; double offset = 0; string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale; Assert.AreEqual(correctDesc, verbDesc); } /// /// tests the "rp" command. See . /// [TestMethod] public void RegularPolygonTester_Manual2() { string input = "rp 3, 50"; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); int sides = 3; double scale = 50; double offset = 0; string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale; Assert.AreEqual(correctDesc, verbDesc); } /// /// tests the "regularpolygon" command. See . /// [TestMethod] public void RegularPolygonTester_Manual3() { string input = "regularpolygon 3, 50, 25"; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); int sides = 3; double scale = 50; double offset = 25 * Math.PI / 180; string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale; Assert.AreEqual(correctDesc, verbDesc); } /// /// tests the "rp" command. See . /// [TestMethod] public void RegularPolygonTester_Manual4() { string input = "rp 3, 50, 25"; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); int sides = 3; double scale = 50; double offset = 25 * Math.PI / 180; string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale; Assert.AreEqual(correctDesc, verbDesc); } /// /// tests the "square" command. See . /// [TestMethod] public void SquareTester_Manual1() { string input = "square 500"; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); int sides = 4; double scale = 500; double offset = 0 * Math.PI / 180; string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale; Assert.AreEqual(correctDesc, verbDesc); } /// /// tests the "square" command. See . /// [TestMethod] public void SquareTester_Manual2() { string input = "square 500, 45"; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); int sides = 4; double scale = 500; double offset = 45 * Math.PI / 180; string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale; Assert.AreEqual(correctDesc, verbDesc); } /// /// tests the "quadrilateral" command using . See . /// [TestMethod] public void QuadrilateralTester_Manual1() { string input = "quadrilateral 1, 2, 3, 4, 5, 6, 7, 8"; Point[] points = { new Point(1, 2), new Point(3, 4), new Point(5, 6), new Point(7, 8) }; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); string correctDesc = new DrawLines(null, points).GetDescription(); Assert.AreEqual(verbDesc, correctDesc); } /// /// Tests the "circle" command. See . /// [TestMethod] public void CircleTester_Manual1() { string input = "circle 100"; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); string correctDesc = "Draws a circle radius " + 100d.ToString() + ", with origin of the pen"; Assert.AreEqual(correctDesc, verbDesc); } /// /// tests the "triangle" command. See . /// [TestMethod] public void TriangleTester_Manual1() { string input = "triangle 500"; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); int sides = 3; double scale = 500; double offset = 0 * Math.PI / 180; string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale; Assert.AreEqual(correctDesc, verbDesc); } /// /// tests the "triangle" command. See . /// [TestMethod] public void TriangleTester_Manual2() { string input = "triangle 500, 45"; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); int sides = 3; double scale = 500; double offset = 45 * Math.PI / 180; string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale; Assert.AreEqual(correctDesc, verbDesc); } /// /// test the "dot" command. See . /// [TestMethod] public void DotTester_Manual1() { string input = "dot"; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); string correctDesc = "Places a dot where the pen currently is"; Assert.AreEqual(correctDesc, verbDesc); } /// /// tests the "clear" command. See . /// [TestMethod] public void ClearTester_Manual1() { string input = "clear"; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); string correctDesc = "Clears the canvas"; Assert.AreEqual(correctDesc, verbDesc); } /// /// Tests the "reset" command. See /// [TestMethod] public void ResetPenTester_Manual1() { string input = "reset"; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); string correctDesc = "Moves pen to the start (0, 0)"; Assert.AreEqual(correctDesc, verbDesc); } /// /// Tests the "resetpen" command. See . /// [TestMethod] public void ResetPenTester_Manual2() { string input = "resetpen"; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); string correctDesc = "Moves pen to the start (0, 0)"; Assert.AreEqual(correctDesc, verbDesc); } /// /// Tests the command "pen". See /// [TestMethod] public void PenTester_Manual1() { string input = "pen red"; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); string correctDesc = "Set pen color to: Color [Red]"; Assert.AreEqual(correctDesc, verbDesc); } /// /// Tests the command "fill". See . /// [TestMethod] public void FillTester_Manual1() { string input = "fill pink"; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); string correctDesc = "Set fill color to: Color [Pink]"; Assert.AreEqual(correctDesc, verbDesc); } /// /// Tests the "if" command. It hasn't been implemented yet. /// [TestMethod] public void IfTester_Manual1() { string input = "if i == 10"; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); string correctDesc = "Tests if variable 'i' is equal to 10"; Assert.AreEqual(correctDesc, verbDesc); } /// /// Tests the "def" command. It hasn't been implemented yet. /// [TestMethod] public void MethodTester_Manual1() { string input = "def duck, int i"; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); string correctDesc = "Create a new method called 'duck' with input 'int i'. The method: "; Assert.AreEqual(correctDesc, verbDesc); } /// /// Tests the "int" declaration and assignment. It hasn't been implemented yet. /// [TestMethod] public void ValueTester_Manual1() { string input = "int i = 10"; Verb verb = VerbFactory.MakeVerb(null, input); string verbDesc = verb.GetDescription(); string correctDesc = "Declares and sets integer 'i' to '10'"; Assert.AreEqual(correctDesc, verbDesc); } } }