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); }
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; }