Update of /cvsroot/jcframework/Nunit In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27874 Modified Files: AtomsFramework.xml AtomsFrameworkTests.vb NonInheritedTests.vb Nunit_AtomsFramework.vbproj original db1.mdb Added Files: NPEmployee.vb NPTeam.vb Log Message: More units tests for persistence of non-inherited objects --- NEW FILE: NPEmployee.vb --- Public Class NPEmployee Private m_name As String Private m_parentoid As String Private m_parent As NPEmployee Private m_children As ArrayList Private m_team As CTeam Private m_teamoid As String Private m_oid As AToMSFramework.COID Public Property OIDValue() As String Get Dim oidfactory As AToMSFramework.COIDFactory If m_oid Is Nothing Then oidfactory = AToMSFramework.modOIDFactorySingleton.getOIDFactoryInstance() m_oid = oidfactory.newOID End If OIDValue = m_oid.OID End Get Set(ByVal value As String) If m_oid Is Nothing Then m_oid = New AToMSFramework.COID End If m_oid.OID = value End Set End Property Public Property Name() As String Get Return m_name End Get Set(ByVal Value As String) m_name = Value End Set End Property Public Property ReportsTo() As NPEmployee Get Return m_parent End Get Set(ByVal Value As NPEmployee) If Not Value Is Nothing Then m_parent = Value m_parentoid = Value.OIDValue End If End Set End Property 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 End Set End Property Public Property Workers() As ArrayList Get Return m_children End Get Set(ByVal Value As ArrayList) m_children = Value 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 End If End Set End Property 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 End Set End Property Public Sub New() MyBase.New() m_children = New ArrayList End Sub End Class Index: Nunit_AtomsFramework.vbproj =================================================================== RCS file: /cvsroot/jcframework/Nunit/Nunit_AtomsFramework.vbproj,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- Nunit_AtomsFramework.vbproj 14 Oct 2004 05:23:48 -0000 1.4 +++ Nunit_AtomsFramework.vbproj 15 Oct 2004 06:47:15 -0000 1.5 @@ -145,11 +145,21 @@ BuildAction = "Compile" /> <File + RelPath = "NPEmployee.vb" + SubType = "Code" + BuildAction = "Compile" + /> + <File RelPath = "NPJob.vb" SubType = "Code" BuildAction = "Compile" /> <File + RelPath = "NPTeam.vb" + SubType = "Code" + BuildAction = "Compile" + /> + <File RelPath = "RetrieveCriteriaTests.vb" SubType = "Code" BuildAction = "Compile" Index: NonInheritedTests.vb =================================================================== RCS file: /cvsroot/jcframework/Nunit/NonInheritedTests.vb,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- NonInheritedTests.vb 14 Oct 2004 05:23:48 -0000 1.1 +++ NonInheritedTests.vb 15 Oct 2004 06:47:15 -0000 1.2 @@ -5,6 +5,7 @@ Private pbroker As CPersistenceBroker Private job As NPJob + Private emp As NPEmployee <TestFixtureSetUp()> Public Sub Init() Environment.CurrentDirectory = "C:\Projects\MMM\Nunit_AtomsFramework" @@ -25,12 +26,13 @@ <SetUp()> Public Sub TestInit() job = New NPJob + emp = New NPEmployee End Sub <Test()> Public Sub LoadJob_a1() job.Id = "a1" pbroker.GetObject(job) - Assert.AreEqual(cinjectedobject.state.loaded, pbroker.getcurrentstate(job)) + Assert.IsTrue(pbroker.getInjectedObject(job).Persistent) Assert.AreEqual("basic", job.Description) End Sub @@ -47,15 +49,168 @@ pbroker.StartTracking(job) job.Id = "a2" job.Description = "SomeJob" + Assert.IsTrue(pbroker.getInjectedObject(job).IsDirty) pbroker.PersistChanges(job) + Assert.IsFalse(pbroker.getInjectedObject(job).IsDirty) End Sub <Test()> Public Sub DeleteAJob() - 'pbroker.StartTracking(job) - 'job.Id = "a3" - 'job.Description = "SomeJob3" - 'pbroker.PersistChanges(job) - 'pbroker.MarkForDeletion(job) - 'pbroker.PersistChanges(job) + pbroker.StartTracking(job) + job.Id = "a3" + job.Description = "SomeJob3" + pbroker.PersistChanges(job) + pbroker.MarkForDeletion(job) + pbroker.PersistChanges(job) + Assert.IsTrue(pbroker.ObjectIsTracked(job)) + Assert.IsFalse(pbroker.getInjectedObject(job).Persistent) End Sub + + <Test()> Public Sub CheckInjectionCache() + Dim job2 As New NPJob + pbroker.StartTracking(job) + pbroker.StartTracking(job2) + Assert.IsTrue(pbroker.objectistracked(job)) + job.Id = "1" + job.Description = "a" + Assert.IsTrue(pbroker.ObjectIsTracked(job)) + job2.Id = "2" + job2.Description = "b" + pbroker.PersistChanges(job) + pbroker.PersistChanges(job2) + End Sub + + <Test()> Public Sub CheckInjectionCache2() + Dim job2 As New NPJob + job.Id = "3" + job2.Id = "4" + pbroker.StartTracking(job) + pbroker.StartTracking(job2) + job.Description = "c" + job2.Description = "d" + Assert.IsFalse(pbroker.getInjectedObject(job).Persistent) + pbroker.PersistChanges() + Assert.IsTrue(pbroker.getInjectedObject(job).Persistent) + End Sub + + <Test()> Public Sub LoadEmployee_a() + emp.Name = "a" + pbroker.FindObject(emp) + Assert.IsTrue(pbroker.getInjectedObject(emp).Persistent) + Assert.AreEqual(emp.Workers.Count, 0) + Assert.IsTrue(Not emp.ReportsTo Is Nothing) + Assert.AreEqual(emp.ReportsTo.Name, "c") + Dim emp2 As NPEmployee + emp2 = emp.ReportsTo.Workers(0) + Assert.AreEqual(emp2.Name, emp.Name) + Assert.AreEqual(emp2.OIDValue, emp.OIDValue) + Assert.AreSame(emp2, emp) + End Sub + + <Test()> Public Sub LoadEmployee_ac() + emp.Name = "ac" + pbroker.FindObject(emp) + Assert.IsTrue(pbroker.getInjectedObject(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 CheckSchemaBasedProperties() + emp.Name = "ac" + pbroker.FindObject(emp) + Assert.AreEqual(50, pbroker.getInjectedObject(emp).getFieldLengthByName("Name")) + Assert.IsTrue(pbroker.getInjectedObject(emp).getFieldTypeByName("Name") Is GetType([String])) + End Sub + + <Test()> Public Sub PersistentObjectEquality() + Dim emp2 As NPEmployee + emp.Name = "ac" + pbroker.FindObject(emp) + emp2 = New NPEmployee + emp2.Name = "aa" + pbroker.FindObject(emp2) + Assert.IsTrue(emp.Equals(emp2.ReportsTo)) + Assert.AreEqual(3, emp2.ReportsTo.Workers.Count) + End Sub + + <Test()> Public Sub LoadSaveandDeleteEmployee() + Dim oidvalue As String + emp.Name = "new" + pbroker.FindObject(emp) + Assert.IsFalse(pbroker.getInjectedObject(emp).Persistent) + oidvalue = emp.OIDValue + pbroker.PersistChanges(emp) + Assert.IsTrue(pbroker.getInjectedObject(emp).Persistent) + Assert.IsTrue(emp.ReportsTo Is Nothing) + Debug.WriteLine(pbroker.DumpCacheDetails) + emp = New NPEmployee + emp.Name = "new" + pbroker.FindObject(emp) + Assert.IsTrue(pbroker.getInjectedObject(emp).Persistent) + Assert.AreEqual(emp.OIDValue, oidvalue) + Assert.AreEqual(emp.Name, "new") + pbroker.MarkForDeletion(emp) + pbroker.PersistChanges(emp) + Assert.IsFalse(pbroker.getInjectedObject(emp).Persistent) + emp = New NPEmployee + emp.Name = "new" + pbroker.FindObject(emp) + Assert.IsFalse(pbroker.getInjectedObject(emp).Persistent) + Assert.IsTrue(emp.OIDValue <> oidvalue) + End Sub + + <Test()> Public Sub ChangeFindFieldValue() + Dim oidvalue As String + emp.Name = "SaveThenChange" + pbroker.FindObject(emp) + Assert.IsFalse(pbroker.getInjectedObject(emp).Persistent) + oidvalue = emp.OIDValue + pbroker.PersistChanges(emp) + Assert.IsTrue(pbroker.getInjectedObject(emp).Persistent) + Assert.IsTrue(emp.ReportsTo Is Nothing) + emp = New NPEmployee + emp.Name = "SaveThenChange" + pbroker.FindObject(emp) + Assert.IsTrue(pbroker.getInjectedObject(emp).Persistent) + Assert.AreEqual(emp.OIDValue, oidvalue) + Assert.AreEqual(emp.Name, "SaveThenChange") + emp.Name = "Changed" + pbroker.PersistChanges(emp) + Assert.IsTrue(pbroker.getInjectedObject(emp).Persistent) + pbroker.MarkForDeletion(emp) + pbroker.PersistChanges(emp) + Assert.IsFalse(pbroker.getInjectedObject(emp).Persistent) + emp = New NPEmployee + emp.Name = "Changed" + pbroker.FindObject(emp) + Assert.IsFalse(pbroker.getInjectedObject(emp).Persistent) + emp = New NPEmployee + emp.Name = "SaveThenChange" + pbroker.FindObject(emp) + Assert.IsFalse(pbroker.getInjectedObject(emp).Persistent) + End Sub + + <Test()> Public Sub saveHierarchy() + Dim emp2 As New NPEmployee + Dim emp3 As New NPEmployee + pbroker.StartTracking(emp) + emp.Name = "theBoss" + emp2.Name = "middleMgr" + emp3.Name = "slave" + emp.Workers.Add(emp2) + emp2.ReportsTo = emp + emp2.Workers.Add(emp3) + emp3.ReportsTo = emp2 + pbroker.PersistChanges(emp) + pbroker.ClearCache() + emp = New NPEmployee + emp.Name = "slave" + pbroker.FindObject(emp) + Assert.AreEqual("middleMgr", emp.ReportsTo.Name) + Assert.AreEqual("theBoss", emp.ReportsTo.ReportsTo.Name) + emp2 = emp.ReportsTo.Workers(0) + Assert.AreEqual("slave", emp2.Name) + End Sub + End Class Index: original db1.mdb =================================================================== RCS file: /cvsroot/jcframework/Nunit/original db1.mdb,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 Binary files /tmp/cvs3fYzaj and /tmp/cvsiZibQ6 differ --- NEW FILE: NPTeam.vb --- Public Class NPTeam Private m_leader As NPEmployee Private m_leaderoid As String Private m_name As String Private m_job As NPJobWithOIDValue Private m_joboid As String Private m_members As ArrayList Private m_oid As AToMSFramework.COID Public Property OIDValue() As String Get Dim oidfactory As AToMSFramework.COIDFactory If m_oid Is Nothing Then oidfactory = AToMSFramework.modOIDFactorySingleton.getOIDFactoryInstance() m_oid = oidfactory.newOID End If OIDValue = m_oid.OID End Get Set(ByVal value As String) If m_oid Is Nothing Then m_oid = New AToMSFramework.COID End If m_oid.OID = value End Set End Property Public Property TeamLeader() As NPEmployee Get Return m_leader End Get Set(ByVal Value As NPEmployee) m_leader = Value m_leaderoid = Value.OIDValue End Set End Property 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 End Set End Property Public Property Job() As NPJobWithOIDValue Get Return m_job End Get Set(ByVal Value As NPJobWithOIDValue) m_job = Value m_joboid = Value.OIDValue End Set End Property 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 End Set End Property Public Property Name() As String Get Return m_name End Get Set(ByVal Value As String) m_name = Value End Set End Property Public Property Members() As ArrayList Get Return m_members End Get Set(ByVal Value As ArrayList) m_members = Value End Set End Property Public Sub New() MyBase.new() m_members = New ArrayList End Sub End Class Index: AtomsFramework.xml =================================================================== RCS file: /cvsroot/jcframework/Nunit/AtomsFramework.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- AtomsFramework.xml 14 Oct 2004 05:23:48 -0000 1.3 +++ AtomsFramework.xml 15 Oct 2004 06:47:04 -0000 1.4 @@ -26,4 +26,49 @@ <attribute name="Description" column="description" find="true"/> </class> + +<class name="NPEmployee" table="employee" database="MSA"> + <attribute name="OIDValue" column="oid" key="primary"/> + <attribute name="Name" column="name" find="true"/> + <attribute name="ReportsToOID" column="parentoid" /> + <attribute name="TeamOID" column="teamoid" /> + <attribute name="Team" /> + <attribute name="ReportsTo" /> + <attribute name="Workers" /> +</class> + + <association fromClass="NPEmployee" toClass="NPEmployee" target="ReportsTo" cardinality="OneToOne" + retrieveAutomatic="true" saveAutomatic="true" deleteAutomatic="false" inverse="false"> + <entry fromAttribute="ReportsToOID" toAttribute="OIDValue"/> + </association> + + <association fromClass="NPEmployee" toClass="NPEmployee" target="Workers" cardinality="OneToMany" + retrieveAutomatic="true" saveAutomatic="true" deleteAutomatic="false" inverse="false"> + <entry fromAttribute="OIDValue" toAttribute="ReportsToOID"/> + </association> + +<class name="NPTeam" table="teams" database="MSA"> + <attribute name="OIDValue" column="oidvalue" key="primary"/> + <attribute name="Name" column="teamname" find="true"/> + <attribute name="TeamLeaderOID" column="teamleader" /> + <attribute name="jobOID" column="joboidvalue" /> + <attribute name="TeamLeader" /> + <attribute name="Job" /> +</class> + + <association fromClass="NPTeam" toClass="NPEmployee" target="TeamLeader" cardinality="OneToOne" + retrieveAutomatic="true" saveAutomatic="false" deleteAutomatic="false" inverse="false"> + <entry fromAttribute="TeamLeaderOID" toAttribute="OIDValue"/> + </association> + + <association fromClass="NPTeam" toClass="NPJobWithOIDValue" target="Job" cardinality="OneToOne" + retrieveAutomatic="true" saveAutomatic="false" deleteAutomatic="false" inverse="false"> + <entry fromAttribute="jobOID" toAttribute="OIDValue"/> + </association> + + <association fromClass="NPTeam" toClass="NPEmployee" target="Members" cardinality="OneToMany" + retrieveAutomatic="true" saveAutomatic="false" deleteAutomatic="false" inverse="false"> + <entry fromAttribute="OIDValue" toAttribute="TeamOID"/> + </association> + </map> \ No newline at end of file Index: AtomsFrameworkTests.vb =================================================================== RCS file: /cvsroot/jcframework/Nunit/AtomsFrameworkTests.vb,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- AtomsFrameworkTests.vb 8 Oct 2004 00:09:58 -0000 1.4 +++ AtomsFrameworkTests.vb 15 Oct 2004 06:47:15 -0000 1.5 @@ -134,7 +134,7 @@ emp.Find() emp2 = New CEmployee emp2.Find() - Assert.ReferenceEquals(emp2, emp) + Assert.AreSame(emp2, emp) End Sub <Test()> Public Sub PersistentObjectEquality() @@ -155,4 +155,24 @@ 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 |