public void TestCreateConstructorWithArgs() { var decorator = new StandardConstructServiceDecorator(); CodeConstructor constructor = decorator.CreateConstructorWithArgs(); Assert.AreEqual(2, constructor.Parameters.Count); Assert.AreEqual(typeof(IService).FullName, constructor.Parameters[0].Type.BaseType); Assert.AreEqual(typeof(IAuthenticator).FullName, constructor.Parameters[1].Type.BaseType); Assert.AreEqual(ServiceClassGenerator.GenericServiceName, constructor.Parameters[0].Name); Assert.AreEqual(ServiceClassGenerator.AuthenticatorName, constructor.Parameters[1].Name); Assert.GreaterOrEqual(2, constructor.Statements.Count); Assert.IsInstanceOf(typeof(CodeAssignStatement), constructor.Statements[0]); Assert.IsInstanceOf(typeof(CodeAssignStatement), constructor.Statements[1]); }
public void TestDecorateClass() { var codeType = new CodeTypeDeclaration("TestClass"); var decorator = new StandardConstructServiceDecorator(); var service = CreateBuzzService(); Assert.AreEqual(0, codeType.Members.Count); decorator.DecorateClass(service, codeType); Assert.AreEqual(1, codeType.Members.Count); // We expect one member to be added Assert.IsInstanceOf(typeof(CodeConstructor), codeType.Members[0]); var constructor = (CodeConstructor) codeType.Members[0]; // Test that both of the add statment methods where called. Assert.GreaterOrEqual(constructor.Statements.Count, 9); //We have already tested the statment formation in the other tests. }
public void TestAddResourceAssignments() { CodeMemberMethod method = new CodeMemberMethod(); method.Name = "TestMethod"; var decorator = new StandardConstructServiceDecorator(); var service = CreateBuzzService(); decorator.AddResourceAssignments(service, method); Assert.AreEqual(7, method.Statements.Count); foreach (var statment in method.Statements) { Assert.IsInstanceOf(typeof(CodeAssignStatement), statment); var assign = (CodeAssignStatement) statment; Assert.IsNotNull(assign.Left); Assert.IsNotNull(assign.Right); Assert.IsInstanceOf(typeof(CodeFieldReferenceExpression), assign.Left); Assert.IsInstanceOf(typeof(CodeObjectCreateExpression), assign.Right); } }