public void GenerateGlobalMixinsAndInterceptors()
        {
            AspectParser parser = CreateParser(
                "import XPTO " +
                "import XY in My.Assembly " +
                " " +
                " interceptors [ \"key\" : MyType in MyAssembly; \"key2\" : MyTypeThatMustBeResolved ] " +
                " mixins [ \"key\" : MyType in MyAssembly; \"key2\" : MyTypeThatMustBeResolved ] " +
                " " +
                " " +
                " ");
            EngineConfiguration conf = parser.Parse();

            XmlTreeVisitor visitor = new XmlTreeVisitor();

            visitor.Visit(conf);
            String content = visitor.Document.InnerXml;

            Assert.AreEqual("<configuration>" +
                            "<import namespace=\"XPTO\" />" +
                            "<import namespace=\"XY\" assembly=\"My.Assembly\" />" +
                            "<mixins><mixin key=\"key\" type=\"MyType\" refTypeEnum=\"Type\" assembly=\"MyAssembly\" />" +
                            "<mixin key=\"key2\" type=\"MyTypeThatMustBeResolved\" refTypeEnum=\"Type\" />" +
                            "</mixins><interceptors>" +
                            "<interceptor key=\"key\" type=\"MyType\" refTypeEnum=\"Type\" assembly=\"MyAssembly\" />" +
                            "<interceptor key=\"key2\" type=\"MyTypeThatMustBeResolved\" refTypeEnum=\"Type\" />" +
                            "</interceptors></configuration>", content);
        }
        public void GenerateAspectWithPointcuts()
        {
            AspectParser parser = CreateParser(
                "import XPTO " +
                "import XY in My.Assembly " +
                " " +
                " aspect McBrother for MyType in MyAssembly " +
                " " +
                "   pointcut method(*)" +
                "     advice(MyType)" +
                "   end" +
                " " +
                " end" +
                " ");
            EngineConfiguration conf = parser.Parse();

            XmlTreeVisitor visitor = new XmlTreeVisitor();

            visitor.Visit(conf);
            String content = visitor.Document.InnerXml;

            Assert.AreEqual("<configuration>" +
                            "<import namespace=\"XPTO\" />" +
                            "<import namespace=\"XY\" assembly=\"My.Assembly\" />" +
                            "<aspect name=\"McBrother\">" +
                            "<for><singletype type=\"MyType\" refTypeEnum=\"Type\" assembly=\"MyAssembly\" />" +
                            "</for>" +
                            "<pointcut symbol=\"Method\"><signature>(*)</signature>" +
                            "<interceptor type=\"MyType\" refTypeEnum=\"Type\" />" +
                            "</pointcut></aspect></configuration>", content);
        }
        public void GenerateAspectWithIncludes()
        {
            AspectParser parser = CreateParser(
                "import XPTO " +
                "import XY in My.Assembly " +
                " " +
                " aspect McBrother for MyType in MyAssembly " +
                "   include \"key\"" +
                "   include MyType in MyAssembly" +
                " end" +
                " ");
            EngineConfiguration conf = parser.Parse();

            XmlTreeVisitor visitor = new XmlTreeVisitor();

            visitor.Visit(conf);
            String content = visitor.Document.InnerXml;

            Assert.AreEqual("<configuration>" +
                            "<import namespace=\"XPTO\" />" +
                            "<import namespace=\"XY\" assembly=\"My.Assembly\" />" +
                            "<aspect name=\"McBrother\"><for>" +
                            "<singletype type=\"MyType\" refTypeEnum=\"Type\" assembly=\"MyAssembly\" />" +
                            "</for>" +
                            "<mixin type=\"key\" refTypeEnum=\"Link\" />" +
                            "<mixin type=\"MyType\" refTypeEnum=\"Type\" assembly=\"MyAssembly\" />" +
                            "</aspect></configuration>", content);
        }
        public void GenerateImports()
        {
            AspectParser parser = CreateParser(
                "import XPTO " +
                "import XY in My.Assembly ");
            EngineConfiguration conf = parser.Parse();

            XmlTreeVisitor visitor = new XmlTreeVisitor();

            visitor.Visit(conf);
            String content = visitor.Document.InnerXml;

            Assert.AreEqual("<configuration>" +
                            "<import namespace=\"XPTO\" />" +
                            "<import namespace=\"XY\" assembly=\"My.Assembly\" />" +
                            "</configuration>", content);
        }