From: Richard B. <rb...@us...> - 2004-10-19 00:13:48
|
Update of /cvsroot/jcframework/Nunit/InheritedClasses In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19366/InheritedClasses Added Files: AtomsFrameworkTests.vb CEmployee.vb CJob.vb CSharedClasses.vb CStudent.vb CTeam.vb CWorker.vb RetrieveCriteriaTests.vb SharedTests.vb Log Message: Rearrange unit test structure (extra namespaces and folders) --- NEW FILE: CJob.vb --- Imports AToMSFramework Namespace InheritedClasses <AFTable("jobs", "MSA", AFTableAttribute.KeyType.useOIDValue, OIDcolumn:="oidvalue")> _ Public Class CJob Inherits CPersistentObject Private m_description As String <AFColumn("description", Find:=True)> _ Public Property Description() As String Get Return m_description End Get Set(ByVal Value As String) m_description = Value SetDirtyFlag() End Set End Property Public Overrides Function getNewObject() As AToMSFramework.CPersistentObject Return New CJob End Function Public Overrides Function IsValid() As Boolean Return True End Function End Class End Namespace --- NEW FILE: SharedTests.vb --- Imports AToMSFramework Imports NUnit.Framework Namespace InheritedClasses <TestFixture()> Public Class SharedTests Private pbroker As CPersistenceBroker Dim sc As SharedChild Dim sp As SharedParent <TestFixtureSetUp()> Public Sub Init() Environment.CurrentDirectory = "C:\Projects\MMM\Nunit_AtomsFramework" Dim retry As Boolean = True While retry = True Try 'Remove any existing test database System.IO.File.Delete(".\db1.mdb") retry = False Catch iox As IO.IOException 'file is in use - so we will loop around until it is released Catch ex As Exception retry = False End Try End While System.IO.File.Copy(".\original db1.mdb", ".\db1.mdb") pbroker = New CPersistenceBroker pbroker.init() End Sub <TestFixtureTearDown()> Public Sub Dispose() pbroker.Dispose() pbroker = Nothing End Sub <SetUp()> Public Sub testInit() sc = New SharedChild sp = New SharedParent End Sub <Test()> Public Sub SaveAndRetrieveSharedChild() Dim result As Boolean Dim origOid As String = String.Empty Dim newOid As String = String.Empty sc.IsDirty = True sc.Save() origOid = sc.OIDValue sc = New SharedChild newOid = sc.OIDValue sc.OIDValue = origOid result = sc.Retrieve(sc) Assert.IsTrue(sc.OIDValue = origOid) Assert.IsTrue(origOid <> newOid) Assert.IsTrue(result) Assert.IsFalse(sc.IsDirty) sc.IsDirty = True sc.Save() End Sub <Test()> Public Sub SaveChildAndRetrieveParent() Dim result As Boolean Dim origOid As String = String.Empty sc.IsDirty = True sc.Save() origOid = sc.OIDValue sp.OIDValue = origOid result = sp.Retrieve(sp) Assert.IsTrue(sp.OIDValue = origOid) Assert.IsTrue(result) Assert.IsFalse(sp.IsDirty) Assert.IsFalse(sp.GetType Is GetType(SharedChild)) End Sub End Class End Namespace --- NEW FILE: CSharedClasses.vb --- Imports AToMSFramework Namespace InheritedClasses Public Class SharedParent Inherits CPersistentObject Public Overrides Function getNewObject() As AToMSFramework.CPersistentObject Return New SharedParent End Function Public Overrides Function IsValid() As Boolean Return True End Function End Class Public Class SharedChild Inherits SharedParent Public Overrides Function getNewObject() As AToMSFramework.CPersistentObject Return New SharedChild End Function End Class End Namespace --- NEW FILE: CTeam.vb --- Imports AToMSFramework Namespace InheritedClasses <AFTable("teams", "MSA", AFTableAttribute.KeyType.useOIDValue, oidcolumn:="oidvalue"), _ AFAssociation(GetType(CEmployee), "TeamLeader", CUDAMap.CardinalityEnum.ONE_TO_ONE, Retrieve:=True), _ AFAssociationEntry("TeamLeader", "TeamLeaderOID", "OIDValue"), _ AFAssociation(GetType(CJob), "Job", CUDAMap.CardinalityEnum.ONE_TO_ONE, Retrieve:=True), _ AFAssociationEntry("Job", "jobOID", "OIDValue"), _ AFAssociation(GetType(CEmployee), "Members", CUDAMap.CardinalityEnum.ONE_TO_MANY, Retrieve:=True, Save:=False), _ AFAssociationEntry("Members", "OIDValue", "TeamOID")> _ Public Class CTeam Inherits CPersistentObject Private m_leader As CEmployee Private m_leaderoid As String Private m_name As String Private m_job As CJob Private m_joboid As String Private m_members As CPersistentCollection Public Property TeamLeader() As CEmployee Get Return m_leader End Get Set(ByVal Value As CEmployee) m_leader = Value m_leaderoid = Value.OIDValue SetDirtyFlag() End Set End Property <AFColumn("teamleader")> _ Public Property TeamLeaderOID() As String Get If m_leader Is Nothing Then Return m_leaderoid Else Return (m_leader.OIDValue) End If End Get Set(ByVal Value As String) m_leaderoid = Value SetDirtyFlag() End Set End Property Public Property Job() As CJob Get Return m_job End Get Set(ByVal Value As CJob) m_job = Value m_joboid = Value.OIDValue SetDirtyFlag() End Set End Property <AFColumn("joboidvalue")> _ Public Property jobOID() As String Get If m_job Is Nothing Then Return m_joboid Else Return (m_job.OIDValue) End If End Get Set(ByVal Value As String) m_joboid = Value SetDirtyFlag() End Set End Property <AFColumn("teamname", Find:=True)> _ Public Property Name() As String Get Return m_name End Get Set(ByVal Value As String) m_name = Value SetDirtyFlag() End Set End Property Public Property Members() As CPersistentCollection Get Return m_members End Get Set(ByVal Value As CPersistentCollection) m_members = Value SetDirtyFlag() End Set End Property Public Overrides Function getNewObject() As AToMSFramework.CPersistentObject Return New CTeam End Function Public Overrides Function IsValid() As Boolean Return True End Function Public Sub New() MyBase.new() m_members = New CPersistentCollection End Sub Protected Overrides Sub Finalize() m_members = Nothing MyBase.Finalize() End Sub End Class End Namespace --- NEW FILE: RetrieveCriteriaTests.vb --- Imports AToMSFramework Imports NUnit.Framework Namespace InheritedClasses <TestFixture()> Public Class RetrieveCriteriaTests Private pbroker As CPersistenceBroker Private emp As CEmployee Private r As CRetrieveCriteria Private mr As CMultiRetrieveCriteria Private c As CCursor <TestFixtureSetUp()> Public Sub Init() Environment.CurrentDirectory = "C:\Projects\MMM\Nunit_AtomsFramework" Dim retry As Boolean = True While retry = True Try 'Remove any existing test database System.IO.File.Delete(".\db1.mdb") retry = False Catch iox As IO.IOException 'file is in use - so we will loop around until it is released Catch ex As Exception retry = False End Try End While System.IO.File.Copy(".\original db1.mdb", ".\db1.mdb") pbroker = New CPersistenceBroker pbroker.init() End Sub <TestFixtureTearDown()> Public Sub Dispose() pbroker.Dispose() pbroker = Nothing End Sub <SetUp()> Public Sub testInit() emp = New CEmployee End Sub <Test()> Public Sub SingleClassRetrieve() r = New CRetrieveCriteria r.ClassMap = emp.getClassMap c = r.perform Assert.IsTrue(c.hasElements) Assert.IsTrue(Not c.EOF) Assert.IsTrue(c.HoldsProxies) Assert.AreEqual(c.ResultSet.ResultSet.Tables(0).Rows.Count, 6) End Sub <Test()> Public Sub MultiRetrieveTest1() Dim si As CSelectInCriteria mr = New CMultiRetrieveCriteria(emp) mr.WhereCondition.addSelectEqualTo("Name", "ac") si = New CSelectInCriteria(emp) si.WhereCondition.addSelectEqualTo("Name", "ac") si.SetSelectAttribute("Name") mr.WhereCondition.addSelectNotIn("Name", si) c = mr.perform Assert.IsFalse(c.hasElements) Assert.IsTrue(c.EOF) End Sub <Test()> Public Sub LoadFullObjects() r = New CRetrieveCriteria r.ReturnFullObjects = True c = r.perform(emp) Assert.IsFalse(c.HoldsProxies) While c.hasElements And Not c.EOF emp = New CEmployee c.loadObject(emp) Console.WriteLine(emp.Name) Assert.IsTrue(emp.Persistent) c.nextCursor() End While c.SetCursor(0) emp = New CEmployee c.loadObject(emp) Assert.AreEqual(emp.Name, "ab") End Sub <Test()> Public Sub SimpleOrCriteria() r = New CRetrieveCriteria r.ClassMap = emp.getClassMap r.WhereCondition.addSelectEqualTo("Name", "aa") r.WhereCondition.addSelectEqualTo("Name", "b", True) c = r.perform Assert.IsTrue(c.hasElements) Assert.AreEqual(c.ResultSet.ResultSet.Tables(0).Rows.Count, 2) c.loadObject(emp) Assert.AreEqual(emp.Name, "aa") c.nextCursor() emp = New CEmployee c.loadObject(emp) Assert.AreEqual(emp.Name, "b") End Sub <Test()> Public Sub SelectInList() Dim al As New ArrayList al.Add("aa") al.Add("b") r = New CRetrieveCriteria r.ClassMap = emp.getClassMap r.WhereCondition.addSelectInList("Name", al) c = r.perform Assert.IsTrue(c.hasElements) Assert.AreEqual(c.ResultSet.ResultSet.Tables(0).Rows.Count, 2) c.loadObject(emp) Assert.AreEqual(emp.Name, "aa") c.nextCursor() emp = New CEmployee c.loadObject(emp) Assert.AreEqual(emp.Name, "b") End Sub <Test()> Public Sub SubCriteria() Dim xx_1 As New CCriteriaCondition Dim xx_2 As New CCriteriaCondition Dim xx_3 As New CCriteriaCondition Dim xx_4 As New CCriteriaCondition r = New CRetrieveCriteria r.ClassMap = emp.getClassMap xx_1.ClassMap = r.ClassMap xx_2.ClassMap = r.ClassMap xx_3.ClassMap = r.ClassMap xx_4.ClassMap = r.ClassMap xx_1.addSelectEqualTo("Name", "aa") xx_2.addSelectEqualTo("Name", "ab") xx_1.addSubCriteria(xx_2, True) xx_3.addSelectEqualTo("Name", "ab") xx_4.addSelectEqualTo("Name", "ac") xx_3.addSubCriteria(xx_4, True) r.WhereCondition.addSubCriteria(xx_1, True) r.WhereCondition.addSubCriteria(xx_3, False) c = r.perform Assert.IsTrue(c.hasElements) Assert.AreEqual(c.ResultSet.ResultSet.Tables(0).Rows.Count, 1) While c.hasElements And Not c.EOF emp = New CEmployee c.loadObject(emp) Assert.AreEqual(emp.Name, "ab") c.nextCursor() End While End Sub End Class End Namespace --- NEW FILE: CStudent.vb --- Namespace InheritedClasses Public Class CStudent Inherits CEmployee Private m_course As String Public Property Course() As String Get Return m_course End Get Set(ByVal Value As String) m_course = Value End Set End Property End Class End Namespace --- NEW FILE: CWorker.vb --- Namespace InheritedClasses Public Class CWorker Inherits CEmployee Private m_job As String Public Property Job() As String Get Return m_job End Get Set(ByVal Value As String) m_job = Value End Set End Property End Class End Namespace --- NEW FILE: CEmployee.vb --- Imports AToMSFramework Namespace InheritedClasses <AFTable("employee", "MSA", AFTableAttribute.KeyType.useOIDValue, OIDColumn:="oid"), _ AFAssociation(GetType(CEmployee), "ReportsTo", CUDAMap.CardinalityEnum.ONE_TO_ONE, Name:="boss", Retrieve:=True), _ AFAssociationEntry("boss", "ReportsToOID", "OIDValue"), _ AFAssociation(GetType(CEmployee), "Workers", CUDAMap.CardinalityEnum.ONE_TO_MANY, Retrieve:=True), _ AFAssociationEntry("Workers", "OIDValue", "ReportsToOID")> _ Public Class CEmployee Inherits CPersistentObject Private m_name As String Private m_parentoid As String Private m_parent As CEmployee Private m_children As CPersistentCollection Private m_team As CTeam Private m_teamoid As String <AFColumn("name", Find:=True)> _ Public Property Name() As String Get Return m_name End Get Set(ByVal Value As String) m_name = Value SetDirtyFlag() End Set End Property Public Property ReportsTo() As CEmployee Get Return m_parent End Get Set(ByVal Value As CEmployee) If Not Value Is Nothing Then m_parent = Value m_parentoid = Value.OIDValue SetDirtyFlag() End If End Set End Property <AFColumn("parentoid")> _ Public Property ReportsToOID() As String Get If m_parent Is Nothing Then Return m_parentoid Else Return (m_parent.OIDValue) End If End Get Set(ByVal Value As String) m_parentoid = Value SetDirtyFlag() End Set End Property Public Property Workers() As CPersistentCollection Get Return m_children End Get Set(ByVal Value As CPersistentCollection) m_children = Value SetDirtyFlag() End Set End Property Public Property Team() As CTeam Get Return m_team End Get Set(ByVal Value As CTeam) If Not Value Is Nothing Then m_team = Value m_teamoid = Value.OIDValue SetDirtyFlag() End If End Set End Property <AFColumn("teamoid")> _ Public Property TeamOID() As String Get If m_team Is Nothing Then Return m_teamoid Else Return (m_team.OIDValue) End If End Get Set(ByVal Value As String) m_teamoid = Value SetDirtyFlag() End Set End Property Public Overrides Function getNewObject() As AToMSFramework.CPersistentObject Return New CEmployee End Function Public Overrides Function IsValid() As Boolean Return True End Function Public Sub New() MyBase.New() m_children = New CPersistentCollection m_children.ContainerObject = Me End Sub End Class End Namespace --- NEW FILE: AtomsFrameworkTests.vb --- Imports AToMSFramework Imports NUnit.Framework Namespace InheritedClasses <TestFixture()> Public Class _BasicTests Private pbroker As CPersistenceBroker Private emp As CEmployee Private job As CJob Private team As CTeam <TestFixtureSetUp()> Public Sub Init() Environment.CurrentDirectory = "C:\Projects\MMM\Nunit_AtomsFramework" Dim retry As Boolean = True While retry = True Try 'Remove any existing test database System.IO.File.Delete(".\db1.mdb") retry = False Catch iox As IO.IOException 'file is in use - so we will loop around until it is released Catch ex As Exception retry = False End Try End While System.IO.File.Copy(".\original db1.mdb", ".\db1.mdb") pbroker = New CPersistenceBroker pbroker.init() End Sub <TestFixtureTearDown()> Public Sub Dispose() pbroker.Dispose() pbroker = Nothing End Sub <SetUp()> Public Sub TestInit() emp = New CEmployee job = New CJob team = New CTeam End Sub <Test()> Public Sub LoadSaveandDeleteEmployee() Dim oidvalue As String emp.Name = "new" emp.Find() Assert.IsFalse(emp.Persistent) oidvalue = emp.OIDValue emp.Save() Assert.IsTrue(emp.Persistent) Assert.IsTrue(emp.ReportsTo Is Nothing) Assert.IsFalse(emp.IsReferenced) emp = New CEmployee emp.Name = "new" emp.Find() Assert.IsTrue(emp.Persistent) Assert.AreEqual(emp.OIDValue, oidvalue) Assert.AreEqual(emp.Name, "new") emp.Delete() Assert.IsFalse(emp.Persistent) emp = New CEmployee emp.Name = "new" emp.Find() Assert.IsFalse(emp.Persistent) Assert.IsTrue(emp.OIDValue <> oidvalue) End Sub <Test()> Public Sub ChangeFindFieldValue() Dim oidvalue As String emp.Name = "SaveThenChange" emp.Find() Assert.IsFalse(emp.Persistent) oidvalue = emp.OIDValue emp.Save() Assert.IsTrue(emp.Persistent) Assert.IsTrue(emp.ReportsTo Is Nothing) Assert.IsFalse(emp.IsReferenced) emp = New CEmployee emp.Name = "SaveThenChange" emp.Find() Assert.IsTrue(emp.Persistent) Assert.AreEqual(emp.OIDValue, oidvalue) Assert.AreEqual(emp.Name, "SaveThenChange") emp.Name = "Changed" emp.Save() Assert.IsTrue(emp.Persistent) emp.Delete() Assert.IsFalse(emp.Persistent) emp = New CEmployee emp.Name = "Changed" emp.Find() Assert.IsFalse(emp.Persistent) emp = New CEmployee emp.Name = "SaveThenChange" emp.Find() Assert.IsFalse(emp.Persistent) End Sub <Test()> Public Sub DeleteMultipleEmployees() emp.Name = "DeleteMe1" emp.Save() emp = New CEmployee emp.Name = "DeleteMe2" emp.Save() emp = New CEmployee emp.Name = "DeleteMe3" emp.Save() Dim dc As CDeleteCriteria dc = New CDeleteCriteria dc.ClassMap = emp.getClassMap dc.WhereCondition.addSelectLike("Name", "DeleteMe%") Dim i As Integer = dc.perform() Assert.AreEqual(i, 3) emp = New CEmployee emp.Name = "DeleteMe1" emp.Find() Assert.IsFalse(emp.Persistent) End Sub <Test()> Public Sub LoadEmployee_ac() emp.Name = "ac" emp.Find() Assert.IsTrue(emp.Persistent) Assert.AreEqual(emp.Workers.Count, 3) emp = emp.Workers.Item(1) Assert.AreEqual(emp.Name, "aa") Assert.AreEqual(emp.ReportsTo.Name, "ac") End Sub <Test()> Public Sub LoadEmployee_a() emp.Name = "a" emp.Find() Assert.IsTrue(emp.Persistent) Assert.AreEqual(emp.Workers.Count, 0) Assert.IsTrue(Not emp.ReportsTo Is Nothing) Assert.AreEqual(emp.ReportsTo.Name, "c") End Sub <Test(), ExpectedException(GetType(AssertionException))> _ Public Sub CheckCacheCopiesAreDifferent() Dim emp2 As CEmployee emp.Name = "ac" emp.Find() emp2 = New CEmployee emp2.Find() Assert.AreSame(emp2, emp) End Sub <Test()> Public Sub PersistentObjectEquality() Dim emp2 As CEmployee emp.Name = "ac" emp.Find() emp2 = New CEmployee emp2.Name = "aa" emp2.Find() Assert.IsTrue(CPersistentObject.Equals(emp2.ReportsTo, emp)) Assert.IsTrue(emp.Equals(emp2.ReportsTo)) End Sub <Test()> Public Sub CheckSchemaBasedProperties() emp.Name = "ac" emp.Find() Assert.AreEqual(emp.getFieldLengthByName("Name"), 50) Assert.IsTrue(emp.getFieldTypeByName("Name") Is GetType([String])) End Sub <Test()> Public Sub CacheTest() emp.Name = "Initial" emp.Find() Assert.IsFalse(emp.Persistent) emp.Save() pbroker.ClearCache() emp = New CEmployee emp.Name = "Initial" emp.Find() emp.Name = "Final" emp.Save() Assert.AreEqual("Final", emp.Name) emp = New CEmployee emp.Name = "Initial" emp.Find() Assert.IsFalse(emp.Persistent) emp.Name = "Final" emp.Find() Assert.IsTrue(emp.Persistent) End Sub End Class End Namespace |