From: Richard B. <rb...@us...> - 2004-10-20 06:43:52
|
Update of /cvsroot/jcframework/Nunit/InheritedClasses In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31302/InheritedClasses Added Files: SuperClassTests.vb tblAtoKClasses.vb Log Message: New tests for multiple inheritance, and multilevel subclassing --- NEW FILE: tblAtoKClasses.vb --- Imports AToMSFramework Namespace InheritedClasses Public Class A Inherits CPersistentObject Public _id As Integer = 0 Public _text As String = String.Empty Public _c As C Public _cOID As String Public _bCol As CPersistentCollection Public Sub New() _bCol = New CPersistentCollection _bCol.ContainerObject = Me Me.SetDirtyFlag() End Sub Public Property Id() As Integer Get Return _id End Get Set(ByVal value As Integer) If (_id <> value) Then _id = value SetDirtyFlag() End If End Set End Property Public Property Text() As String Get Return _text End Get Set(ByVal Value As String) If (_text <> Value) Then _text = Value SetDirtyFlag() End If End Set End Property Public Property C() As C Get If _c Is Nothing Then _c = New C _c.OIDValue = _cOID _c.Retrieve() End If Return _c End Get Set(ByVal Value As C) If Not CPersistentObject.Equals(_c, Value) Then _c = Value If Value Is Nothing Then _cOID = "" Else _cOID = Value.OIDValue End If SetDirtyFlag() End If End Set End Property Public Property COID() As String Get If Not _c Is Nothing Then Return _c.OIDValue Else Return _cOID End If End Get Set(ByVal Value As String) _cOID = Value End Set End Property Public Property BCol() As CPersistentCollection Get Return _bCol End Get Set(ByVal Value As CPersistentCollection) If _bCol.Equals(Value) Then _bCol = Value For Each _b As B In _bCol _b.A = Me Next SetDirtyFlag() End If End Set End Property Public Overrides Function getNewObject() As CPersistentObject Return New A End Function Public Overrides Function IsValid() As Boolean Return True End Function End Class Public Class B Inherits CPersistentObject Public Sub New() End Sub Public _id As Integer = 0 Public _text As String = String.Empty Public _a As A = Nothing Public _aOID As String = Nothing Public Property Id() As Integer Get Return Me._id End Get Set(ByVal Value As Integer) If Not (Me._id = Value) Then Me._id = Value Me.SetDirtyFlag() End If End Set End Property Public Property Text() As String Get Return Me._text End Get Set(ByVal Value As String) If Not (Me._text = Value) Then Me._text = Value Me.SetDirtyFlag() End If End Set End Property Public Property A() As A Get Return Me._a End Get Set(ByVal Value As A) If Me._a Is Nothing AndAlso Not (Value Is Nothing) Then Me._a = Value Me._aOID = Value.OIDValue Else If Value Is Nothing Then Me._a = Nothing Me._aOID = Nothing Else If Not Me._a.Equals(Value) Then Me._a = Value Me._aOID = Value.OIDValue End If End If End If Me.SetDirtyFlag() End Set End Property Public Property AOID() As String Get If Not (Me._a Is Nothing) Then Return Me._a.OIDValue Else Return Me._aOID End If End Get Set(ByVal Value As String) If Not (Me._a Is Nothing) Then If Not (Me._a.OIDValue = Value) Then Me._a.OIDValue = Value Me.SetDirtyFlag() End If End If Me._aOID = Value End Set End Property Public Overloads Overrides Function getNewObject() As CPersistentObject Return New B End Function Public Overloads Overrides Function IsValid() As Boolean Return True End Function End Class Public Class C Inherits CPersistentObject Public Sub New() End Sub Private _id As Integer = 0 Private _text As String = String.Empty Public Property Id() As Integer Get Return Me._id End Get Set(ByVal Value As Integer) If Not (Me._id = value) Then Me._id = value Me.SetDirtyFlag() End If End Set End Property Public Property Text() As String Get Return Me._text End Get Set(ByVal Value As String) If Not (Me._text = value) Then Me._text = value Me.SetDirtyFlag() End If End Set End Property Public Overloads Overrides Function getNewObject() As CPersistentObject Return New C End Function Public Overloads Overrides Function IsValid() As Boolean Return True End Function End Class Public Class D Inherits B Public Sub New() End Sub Private _str As String = String.Empty Public Property Str() As String Get Return Me._str End Get Set(ByVal Value As String) If Not (Me._str = Value) Then Me._str = Value Me.SetDirtyFlag() End If End Set End Property Public Overloads Overrides Function getNewObject() As CPersistentObject Return New D End Function Public Overloads Overrides Function IsValid() As Boolean Return True End Function End Class Public Class E Inherits B Public Sub New() End Sub Private _str As String = String.Empty Public Property Str() As String Get Return Me._str End Get Set(ByVal Value As String) If Not (Me._str = Value) Then Me._str = Value Me.SetDirtyFlag() End If End Set End Property Public Overloads Overrides Function getNewObject() As CPersistentObject Return New E End Function Public Overloads Overrides Function IsValid() As Boolean Return True End Function End Class Public Class F Inherits E Public Sub New() End Sub Private _i As Integer = 0 Public Property I() As Integer Get Return Me._i End Get Set(ByVal Value As Integer) If Not (Me._i = Value) Then Me._i = Value Me.SetDirtyFlag() End If End Set End Property Public Overloads Overrides Function getNewObject() As CPersistentObject Return New F End Function Public Overloads Overrides Function IsValid() As Boolean Return True End Function End Class Public Class G Inherits E Public Sub New() End Sub Private _i As Integer = 0 Public Property I() As Integer Get Return Me._i End Get Set(ByVal Value As Integer) If Not (Me._i = Value) Then Me._i = Value Me.SetDirtyFlag() End If End Set End Property Public Overloads Overrides Function getNewObject() As CPersistentObject Return New G End Function Public Overloads Overrides Function IsValid() As Boolean Return True End Function End Class Public Class H Inherits C Public Sub New() End Sub Private _str As String = String.Empty Public Property Str() As String Get Return Me._str End Get Set(ByVal Value As String) If Not (Me._str = Value) Then Me._str = Value Me.SetDirtyFlag() End If End Set End Property Public Overloads Overrides Function getNewObject() As CPersistentObject Return New H End Function Public Overloads Overrides Function IsValid() As Boolean Return True End Function End Class Public Class I Inherits C Public Sub New() End Sub Private _str As String = String.Empty Public Property Str() As String Get Return Me._str End Get Set(ByVal Value As String) If Not (Me._str = Value) Then Me._str = Value Me.SetDirtyFlag() End If End Set End Property Public Overloads Overrides Function getNewObject() As CPersistentObject Return New I End Function Public Overloads Overrides Function IsValid() As Boolean Return True End Function End Class Public Class J Inherits H Public Sub New() End Sub Private _i As Integer = 0 Public Property I() As Integer Get Return Me._i End Get Set(ByVal Value As Integer) If Not (Me._i = Value) Then Me._i = Value Me.SetDirtyFlag() End If End Set End Property Public Overloads Overrides Function getNewObject() As CPersistentObject Return New J End Function Public Overloads Overrides Function IsValid() As Boolean Return True End Function End Class Public Class K Inherits H Public Sub New() End Sub Private _i As Integer = 0 Public Property I() As Integer Get Return Me._i End Get Set(ByVal Value As Integer) If Not (Me._i = Value) Then Me._i = Value Me.SetDirtyFlag() End If End Set End Property Public Overloads Overrides Function getNewObject() As CPersistentObject Return New K End Function Public Overloads Overrides Function IsValid() As Boolean Return True End Function End Class End Namespace --- NEW FILE: SuperClassTests.vb --- Imports AToMSFramework Imports NUnit.Framework Namespace InheritedClasses <TestFixture()> Public Class SuperClassTests Private pbroker As CPersistenceBroker <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 GC.Collect() '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() End Sub <Test()> Public Sub CheckMultiInheritance1() Dim root As New A root.Id = 1 root.Text = "Root object" root.BCol = New CPersistentCollection ' create G and add it to the collection Dim g As New G g.Id = 5 g.Text = "Child class of E" g.Str = "Added to collection" g.I = 555 g.A = root root.BCol.Add(g) ' create oneToOne object (K) and add it to root Dim k As New K k.Id = 6 k.Text = "Child of class H" k.Str = "Added to oneToOne association" k.I = 666 root.C = k 'save root (class A) root.Save(True) 'Now check that A, G and K are in the database 'Console.WriteLine("\nIf you'll check the data in the tables,\nyou'll find that tblA is populated and tables tblG and tbl K are populated.\nBut tables tblE, tblC, tblH are not populated at all.\n"); Dim col As CPersistentCollection Dim cpo As CPersistentObject = New A col = cpo.getAll(True) Assert.IsTrue(col.Count > 0) For Each a As A In col Assert.IsTrue(a.C.GetType Is GetType(K)) For Each b As B In a.BCol Assert.IsTrue(b.GetType Is GetType(G)) Next Next End Sub <Test()> Public Sub RetrievalViaParentAttributes() Dim j As New J j.I = 1 j.Id = 123 j.Text = "Class C Text" j.Str = "Class H Str" j.Save() j = New J Dim rc As New CRetrieveCriteria rc.ClassMap = j.getClassMap Dim condition As New CCriteriaCondition condition.ClassMap = j.getClassMap condition.Tables = rc.Tables condition.addSelectEqualTo("Text", "Class C Text") rc.WhereCondition = condition Dim cursor As CCursor = rc.perform Assert.IsTrue(cursor.hasElements) Assert.AreEqual(1, cursor.TotalRows) cursor.loadObject(j) Assert.AreEqual("Class C Text", j.Text) Assert.AreEqual("Class H Str", j.Str) assert.AreEqual(123,j.Id) End Sub <Test()> Public Sub RetrievalViaParentAttributes2() Dim j As New J j.I = 1 j.Id = 124 j.Text = "Class C Text1" j.Str = "Class H Str" j.Save() j = New J Dim rc As New CRetrieveCriteria rc.ClassMap = j.getClassMap rc.WhereCondition.addSelectEqualTo("Text", "Class C Text1") Dim cursor As CCursor = rc.perform Assert.IsTrue(cursor.hasElements) Assert.AreEqual(1, cursor.TotalRows) cursor.loadObject(j) Assert.AreEqual("Class C Text1", j.Text) Assert.AreEqual("Class H Str", j.Str) Assert.AreEqual(124, j.Id) End Sub End Class End Namespace |