Ejemplo n.º 1
0
        public void TestForParser()
        {
            Controleur p = new Controleur();

            // simulation de code rentré par l'utilisateur
            string[] s = new string[11];
            s[0] = "ldc.i4.13";
            s[1] = "ldc.i4.12";
            s[2] = "add";
            s[3] = "ldc.i4.30";
            s[4] = "sub";
            s[5] = "ldc.i4.20";
            s[6] = "div";
            s[7] = "ldc.i4.5";
            s[8] = "mul";
            s[9] = "ldc.i4.25";
            s[10] = "rem";

            // on verifi que les méthodes on bien était ajouter a la library

            p.compile(s);

            // Executions des instructions

            // ldc.i4.13
            p.ExecuteNextInstruction();
            Assert.That(p.s.Count, Is.EqualTo(1), "Probleme a l'éxécution de l'instruction ldc.i4.13");
            Assert.That(p.s.CurrentStack[p.s.Count - 1].Value, Is.EqualTo(13), "Probleme a l'éxécution de l'instruction ldc.i4.13");

            //ldc.i4.12
            p.ExecuteNextInstruction();
            Assert.That(p.s.Count, Is.EqualTo(2), "Probleme a l'éxécution de l'instruction ldc.i4.12");
            Assert.That(p.s.CurrentStack[p.s.Count - 1].Value, Is.EqualTo(12), "Probleme a l'éxécution de l'instruction ldc.i4.12");

            //add
            p.ExecuteNextInstruction();
            Assert.That(p.s.Count, Is.EqualTo(1), "Probleme a l'éxécution de l'instruction add");
            Assert.That(p.s.CurrentStack[p.s.Count - 1].Value, Is.EqualTo(25), "Probleme a l'éxécution de l'instruction add");

            //ldc.i4.30
            p.ExecuteNextInstruction();
            Assert.That(p.s.Count, Is.EqualTo(2), "Probleme a l'éxécution de l'instruction ldc.i4.30");
            Assert.That(p.s.CurrentStack[p.s.Count - 1].Value, Is.EqualTo(30), "Probleme a l'éxécution de l'instruction ldc.i4.30");

            //sub
            p.ExecuteNextInstruction();
            Assert.That(p.s.Count, Is.EqualTo(1), "Probleme a l'éxécution de l'instruction sub");
            Assert.That(p.s.CurrentStack[p.s.Count - 1].Value, Is.EqualTo(5), "Probleme a l'éxécution de l'instruction sub");

            //ldc.i4.20
            p.ExecuteNextInstruction();
            Assert.That(p.s.Count, Is.EqualTo(2), "Probleme a l'éxécution de l'instruction ldc.i4.20");
            Assert.That(p.s.CurrentStack[p.s.Count - 1].Value, Is.EqualTo(20), "Probleme a l'éxécution de l'instruction ldc.i4.20");

            //div
            p.ExecuteNextInstruction();
            Assert.That(p.s.Count, Is.EqualTo(1), "Probleme a l'éxécution de l'instruction div");
            Assert.That(p.s.CurrentStack[p.s.Count - 1].Value, Is.EqualTo(4), "Probleme a l'éxécution de l'instruction div");

            //ldc.i4.5
            p.ExecuteNextInstruction();
            Assert.That(p.s.Count, Is.EqualTo(2), "Probleme a l'éxécution de l'instruction ldc.i4.5");
            Assert.That(p.s.CurrentStack[p.s.Count - 1].Value, Is.EqualTo(5), "Probleme a l'éxécution de l'instruction ldc.i4.5");

            //mull
            p.ExecuteNextInstruction();
            Assert.That(p.s.Count, Is.EqualTo(1));
            Assert.That(p.s.CurrentStack[p.s.Count - 1].Value, Is.EqualTo(20));

            //ldc.i4.5
            p.ExecuteNextInstruction();
            Assert.That(p.s.Count, Is.EqualTo(2));
            Assert.That(p.s.CurrentStack[p.s.Count - 1].Value, Is.EqualTo(25));

            //rem
            p.ExecuteNextInstruction();
            Assert.That(p.s.Count, Is.EqualTo(1));
            Assert.That(p.s.CurrentStack[p.s.Count - 1].Value, Is.EqualTo(5));

            p.reset();
        }