public void Attributes_Can_Be_Applied_On_Classes()
        {
            var persistentClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = "TestClass" + MethodBase.GetCurrentMethod().Name };
            persistentClassInfo.TypeAttributes.Add(new PersistentCustomAttribute(Session.DefaultSession));

            var type = _builder.WithAssemblyName("TestAssembly").Define(persistentClassInfo);

            Assert.AreEqual(1, type.GetCustomAttributes(false).OfType<CustomAttribute>().Count());
        }
 void IPersistentCollectionMemberInfo.SetCollectionTypeFullName(string s) {
     CollectionTypeFullName = s;
     if (_collectionType == null && _collectionClassInfo == null && s != null) {
         IPersistentClassInfo classInfo = PersistentClassInfoQuery.Find(Session, s);
         if (classInfo != null)
             _collectionClassInfo = (PersistentClassInfo) classInfo;
         else
             _collectionType = ReflectionHelper.GetType(s.Substring(s.LastIndexOf(".") + 1));
     }
 }
        public void Associate_1_DynamicType_With_1_Existent()
        {
            var customerClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = "Customer" };
            customerClassInfo.TypeAttributes.Add(new PersistentAssociationAttribute(Session.DefaultSession) { ElementType = typeof(User) });
            var classDefineBuilder = _builder.WithAssemblyName("TestAssembly");

            var types = classDefineBuilder.Define(customerClassInfo);

            Assert.AreEqual("TestAssembly.Customer, TestAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", types.AssemblyQualifiedName);
        }
        public void Attributes_Can_Be_Applied_On_Properties()
        {
            var persistentClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = "TestClass" + MethodBase.GetCurrentMethod().Name };
            var coreTypeMemberInfo = new PersistentCoreTypeMemberInfo(Session.DefaultSession) { Name = "TestProperty", DataType = XPODataType.String };
            coreTypeMemberInfo.TypeAttributes.Add(new PersistentAssociationAttribute(Session.DefaultSession) { ElementType = typeof(User) });
            persistentClassInfo.OwnMembers.Add(coreTypeMemberInfo);

            var type = _builder.WithAssemblyName("TestAssembly").Define(persistentClassInfo);

            var property = type.GetProperty("TestProperty");
            Assert.AreEqual(1, property.GetCustomAttributes(false).OfType<AssociationAttribute>().Count());
        }
        public void Associate_2_DynamicTypes()
        {
            var customerClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = "Customer" };
            var ordersMemberInfo = new PersistentCollectionMemberInfo(Session.DefaultSession) { Name = "Orders" };
            ordersMemberInfo.TypeAttributes.Add(new PersistentAssociationAttribute(Session.DefaultSession) { AssemblyQualifiedName = "TestAssembly.Order, TestAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" });
            customerClassInfo.OwnMembers.Add(ordersMemberInfo);

            var orderClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = "Order" };
            var customerMemberInfo = new PersistentReferenceMemberInfo(Session.DefaultSession) { Name = "Customer", ReferenceTypeAssemblyQualifiedName = "TestAssembly.Customer, TestAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" };
            customerMemberInfo.TypeAttributes.Add(new PersistentAssociationAttribute(Session.DefaultSession) { AssemblyQualifiedName = "TestAssembly.Order, TestAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" });
            orderClassInfo.OwnMembers.Add(customerMemberInfo);
            var classDefineBuilder = _builder.WithAssemblyName("TestAssembly");

            var types = classDefineBuilder.Define(new List<IPersistentClassInfo> {customerClassInfo,orderClassInfo});

            Assert.AreEqual(2, types.Count);
            Assert.AreEqual("TestAssembly.Customer, TestAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", types[0].Type.AssemblyQualifiedName);
            Assert.AreEqual("TestAssembly.Order, TestAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", types[1].Type.AssemblyQualifiedName);
        }
        public void DynamicType_Can_Inherit_A_Dynamic_Type()
        {
            var userClassInfo = new PersistentClassInfo(Session.DefaultSession) {Name = "User"};
            var customerClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = "Customer", BaseTypeAssemblyQualifiedName = "TestAssembly.User, TestAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" };

            var types = _builder.WithAssemblyName("TestAssembly").Define(new List<IPersistentClassInfo> {customerClassInfo,userClassInfo});

            var custtomerAssemblyQualifiedName = types.Where(type => type.Type.Name=="Customer").Single().Type.BaseType.AssemblyQualifiedName;
            Assert.AreEqual("TestAssembly.User, TestAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", custtomerAssemblyQualifiedName);
        }
        public void Type_Can_Be_Created()
        {
            var persistentClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = "TestClass" + MethodBase.GetCurrentMethod().Name };

            var type = _builder.WithAssemblyName("TestAssembly").Define(persistentClassInfo);

            Assert.AreEqual("TestAssembly.TestClass" + MethodBase.GetCurrentMethod().Name, type.FullName);
        }
        public void Reference_Property_GetSet_Invocation()
        {
            var persistentClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = "TestClass" + MethodBase.GetCurrentMethod().Name };
            persistentClassInfo.OwnMembers.Add(new PersistentReferenceMemberInfo(Session.DefaultSession) { Name = "TestProperty", ReferenceType = typeof(User) });

            var type = _builder.WithAssemblyName("TestAssembly").Define(persistentClassInfo);

            var instance = Activator.CreateInstance(type, Session.DefaultSession);
            var property = instance.GetType().GetProperty("TestProperty");
            var user = new User(Session.DefaultSession);
            property.SetValue(instance, user, null);
            Assert.AreEqual(user, property.GetValue(instance, null));
        }
        public void On_Change_Will_Be_Called_When_Setting_A_Property()
        {
            var customerClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = "Customer" };
            customerClassInfo.OwnMembers.Add(new PersistentCoreTypeMemberInfo(Session.DefaultSession){Name = "Test",DataType = XPODataType.String});
            ITypeDefineBuilder typeDefineBuilder = _builder.WithAssemblyName("TestAssembly");
            var type = typeDefineBuilder.Define(customerClassInfo);
            typeDefineBuilder.AssemblyBuilder.Save("Test.dll");
            var instance = Activator.CreateInstance(type,Session.DefaultSession);
            var xpBaseObject = ((XPBaseObject) instance);

            bool changed = false;
            xpBaseObject.Changed += (sender, args) => changed = true;
            xpBaseObject.SetMemberValue("Test","testValue");

            Assert.AreEqual("testValue", xpBaseObject.GetMemberValue("Test"));
            Assert.IsTrue(changed);
        }
        public void ExistentType_Reference_Property_Creation()
        {
            var persistentClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = "TestClass" + MethodBase.GetCurrentMethod().Name };
            persistentClassInfo.OwnMembers.Add(new PersistentReferenceMemberInfo(Session.DefaultSession) { Name = "TestProperty", ReferenceType =typeof(User) });

            var type = _builder.WithAssemblyName("TestAssembly").Define(persistentClassInfo);

            var property = type.GetProperty("TestProperty");
            Assert.IsNotNull(property);
            Assert.AreEqual(typeof(User), property.PropertyType);
        }
        public void Collection_Property_Creation()
        {
            var persistentClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = "TestClass" + MethodBase.GetCurrentMethod().Name };
            persistentClassInfo.OwnMembers.Add(new PersistentCollectionMemberInfo(Session.DefaultSession) { Name = "TestProperty"});

            var type = _builder.WithAssemblyName("TestAssembly").Define(persistentClassInfo);

            PropertyInfo property = type.GetProperty("TestProperty");
            Assert.IsNotNull(property);
            Assert.IsNull(property.GetSetMethod());
            Assert.AreEqual(typeof(XPCollection), property.PropertyType);
        }
        public void DynamicType_Can_Implement_Interfaces()
        {
            var userClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = "User" };
            userClassInfo.OwnMembers.Add(new PersistentCoreTypeMemberInfo(Session.DefaultSession){Name="Hidden",DataType = XPODataType.Boolean});
            userClassInfo.Interfaces.Add(new InterfaceInfo(Session.DefaultSession) { Name = typeof(IHidden).FullName, Assembly = new AssemblyName(typeof(IHidden).Assembly.FullName+"").Name });

            var builder = _builder.WithAssemblyName("TestAssembly");
            var type = builder.Define(userClassInfo);
            builder.AssemblyBuilder.Save("tttt.dll");
            var firstOrDefault = type.GetInterfaces().Where(type1 => type1 == typeof(IHidden)).FirstOrDefault();
            Assert.IsNotNull(firstOrDefault);
        }
        public void DynamicType_Can_Inherit_An_Existent_Type()
        {
            var persistentClassInfo = new PersistentClassInfo(Session.DefaultSession) {Name = "Customer", BaseType = typeof (User)};

            var type = _builder.WithAssemblyName("TestAssembly").Define(persistentClassInfo);

            Assert.AreEqual(typeof(User), type.BaseType);
        }
        public void Ctor_Creation()
        {
            var persistentClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = "TestClass" + MethodBase.GetCurrentMethod().Name };

            var type = _builder.WithAssemblyName("TestAssembly").Define(persistentClassInfo);

            Activator.CreateInstance(type, Session.DefaultSession);
        }
        public void Create_Properties_If_Not_Exist_For_All_Implemented_Interfaces()
        {
            var userClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = "User" };
            userClassInfo.Interfaces.Add(new InterfaceInfo(Session.DefaultSession) { Name = typeof(IHidden).FullName, Assembly = new AssemblyName(typeof(IHidden).Assembly.FullName + "").Name });
            var builder = _builder.WithAssemblyName("TestAssembly");

            var type = builder.Define(userClassInfo);

            Assert.IsNotNull(type.GetProperty("Hidden"));
        }
        public void Core_Property_GetSet_Invocation()
        {
            var persistentClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = "TestClass" + MethodBase.GetCurrentMethod().Name };
            persistentClassInfo.OwnMembers.Add(new PersistentCoreTypeMemberInfo(Session.DefaultSession) { Name = "TestProperty", DataType = XPODataType.Boolean });

            var type = _builder.WithAssemblyName("TestAssembly").Define(persistentClassInfo);

            var instance = Activator.CreateInstance(type, Session.DefaultSession);
            var property = instance.GetType().GetProperty("TestProperty");
            property.SetValue(instance, true, null);
            Assert.AreEqual(true, property.GetValue(instance, null));
        }
        public void Core_Property_Creation()
        {
            var persistentClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = "TestClass" + MethodBase.GetCurrentMethod().Name };
            persistentClassInfo.OwnMembers.Add(new PersistentCoreTypeMemberInfo(Session.DefaultSession){Name = "TestProperty",DataType = XPODataType.Boolean});

            var type = _builder.WithAssemblyName("TestAssembly").Define(persistentClassInfo);

            var property = type.GetProperty("TestProperty");
            Assert.IsNotNull(property);
            Assert.AreEqual(typeof(bool), property.PropertyType);
        }
        public void Collection_Property_Get_Invocation()
        {
            var persistentClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = "TestClass" + MethodBase.GetCurrentMethod().Name };
            persistentClassInfo.OwnMembers.Add(new PersistentCollectionMemberInfo(Session.DefaultSession) { Name = "TestProperty" });

            var type = _builder.WithAssemblyName("TestAssembly").Define(persistentClassInfo);

            var instance = Activator.CreateInstance(type, Session.DefaultSession);
            var property = instance.GetType().GetProperty("TestProperty");
            Assert.IsNull(property.GetValue(instance, null));
        }
        public void DynamicType_Reference_Property_Creation()
        {
            var userClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = "User" };
            var name = "TestClass" + MethodBase.GetCurrentMethod().Name;
            var persistentClassInfo = new PersistentClassInfo(Session.DefaultSession) { Name = name };
            persistentClassInfo.OwnMembers.Add(new PersistentReferenceMemberInfo(Session.DefaultSession) { Name = "TestProperty", ReferenceTypeAssemblyQualifiedName = "TestAssembly.User, TestAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" });

            var types = _builder.WithAssemblyName("TestAssembly").Define(new List<IPersistentClassInfo> {persistentClassInfo,userClassInfo});

            var property = types.Where(type => type.Type.Name == name).Single().Type.GetProperty("TestProperty");
            Assert.IsNotNull(property);
            Assert.AreEqual("TestAssembly.User, TestAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", property.PropertyType.AssemblyQualifiedName);
        }
Example #20
0
 static void createClass(IArtifactHandler<PersistentAssemblyInfo> artifactHandler) {
     var persistentClassInfo = new PersistentClassInfo(artifactHandler.UnitOfWork) { PersistentAssemblyInfo = _persistentAssemblyInfo, CodeTemplateInfo = new CodeTemplateInfo(artifactHandler.UnitOfWork) };
     var codeTemplate = new CodeTemplate(artifactHandler.UnitOfWork) { TemplateType = TemplateType.Class, CodeDomProvider = CodeDomProvider.VB };
     codeTemplate.SetDefaults();
     persistentClassInfo.CodeTemplateInfo.TemplateInfo = codeTemplate;
 }