Angel "Java" Lopez

NET, Java, PHP y Desarrollo de Software

This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

.NET

ASP.NET

Windows Form

VB.NET

C#

Sitios

Blogs

Escribiendo un Intérprete en .NET (Parte 9)

Anterior Post
Primer Post de la Serie

Esta vez, quiero agregar una pieza que falta: un composite command. El intérprete necesita una manera de ejecutar una lista de comandos, en cualquier lugar donde haya un comando: en un if/then, en el if/else, en el while, etc… Primero, escribí un test (esta version de abajo no es la versión inicial, es la final actual):

        [TestMethod]
        public void CreateAndEvaluateCompositeCommand()
        {
            BindingEnvironment environment = new BindingEnvironment();
            environment.SetValue("a", 0);
            ICommand add1 = this.MakeAddCommand("a", "a", 1);
            ICommand add2 = this.MakeAddCommand("a", "a", 2);
            CompositeCommand cmd = new CompositeCommand(new ICommand[] { add1, add2 });
            Assert.IsNotNull(cmd.Commands);
            Assert.AreEqual(2, cmd.Commands.Count);
            Assert.AreEqual(add1, cmd.Commands.First());
            Assert.AreEqual(add2, cmd.Commands.Skip(1).First());
            cmd.Execute(environment);
            Assert.AreEqual(3, environment.GetValue("a"));
        }
        private ICommand MakeAddCommand(string target, string source, int number)
        {
            IExpression add = new BinaryArithmeticBLOCKED EXPRESSION;
        }

El código mostrado es la versión ACTUAL. Durante el desarrollo, y usando TDD, escribí el código de a pasos cortos,  y también apliqué refactoring. Pero la lección es: usar los tests para guiar nuestro desarrollo.

Todos los tests en verde:

Buen code coverage:

Pueden bajar la versión actual desde from InterpreterStep09.zip. Si quieren ver todos los steps, sigo enviando mi código a trunk/Interpreter en mi Google Code Project AjCodeKatas.

Próximos pasos: comando foreach, comando for, declaración de funciones, etc…

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Published Fri, Jan 28 2011 10:00 by lopez

Comments

# Escribiendo una Aplicación usando TDD (Part 1) Introducción@ Tuesday, March 01, 2011 3:21 AM

Estoy escribiendo una serie de posts sobre escribir un intérprete usando TDD ( Test-Driven Developement

Angel "Java" Lopez

# TDD y Baby Steps@ Thursday, January 31, 2013 8:04 AM

Ya saben que TDD (Test-Driven Development) es uno de mis temas favoritos. Y no sólo porque me gusta,

Angel "Java" Lopez

# Escribiendo un Intérprete en .NET (Parte 10)@ Monday, March 18, 2013 4:50 AM

Anteriores posts de la serie: Escribiendo un Intérprete en .NET (Parte 9) Escribiendo un Intérprete en

Angel "Java" Lopez

Leave a Comment

(required) 
(required) 
(optional)
(required) 
If you can't read this number refresh your screen
Enter the numbers above: