⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basics.vb

📁 C# 版本的一个三层商业架构
💻 VB
字号:
<TestFixture()> _
Public Class Basics

  <Test()> _
  Public Sub CreateGetRoot()
    Session.Clear()
    Dim root As GenRoot
    root = GenRoot.NewRoot
    Assert.IsNotNull(root)
    Assert.AreEqual("<new>", root.Data)
    Assert.AreEqual("Created", Session("GenRoot"))
    Assert.AreEqual(True, root.IsNew)
    Assert.AreEqual(False, root.IsDeleted)
    Assert.AreEqual(True, root.IsDirty)
  End Sub

  <Test()> _
  Public Sub CreateRoot()
    Session.Clear()
    Dim root As root
    root = root.NewRoot
    Assert.IsNotNull(root)
    Assert.AreEqual("<new>", root.Data)
    Assert.AreEqual("Created", Session("Root"))
    Assert.AreEqual(True, root.IsNew)
    Assert.AreEqual(False, root.IsDeleted)
    Assert.AreEqual(True, root.IsDirty)
  End Sub

  <Test()> _
  Public Sub AddChild()
    Session.Clear()
    Dim root As root = root.NewRoot
    root.Children.Add("1")
    Assert.AreEqual(1, root.Children.Count)
    Assert.AreEqual("1", root.Children(0).Data)
  End Sub

  <Test()> _
  Public Sub AddRemoveChild()
    Session.Clear()
    Dim root As root = root.NewRoot
    root.Children.Add("1")
    root.Children.Remove(root.Children.Item(0))
    Assert.AreEqual(0, root.Children.Count)
  End Sub

  <Test()> _
  Public Sub AddRemoveAddChild()
    Session.Clear()
    Dim root As root = root.NewRoot
    root.Children.Add("1")
    root.BeginEdit()
    root.Children.Remove(root.Children.Item(0))
    root.Children.Add("2")
    root.CancelEdit()
    Assert.AreEqual(1, root.Children.Count)
    Assert.AreEqual("1", root.Children(0).Data)
  End Sub

  <Test()> _
  Public Sub AddCancelMultipleChild()
    Session.Clear()
    Dim root As root = root.NewRoot
    root.Children.Add("1")
    Session.Clear()
    root = root.Save()
    Assert.AreEqual(1, root.Children.Count)
    Assert.AreEqual("1", root.Children(0).Data)
    Assert.AreEqual(False, root.IsNew, "Object should not be new")
    Assert.AreEqual(False, root.IsDirty, "Object should not be dirty")
    Assert.AreEqual(False, root.IsDeleted, "Object should not be marked for deletion")

    Session.Clear()
    root.BeginEdit()
    root.Children.Add("2")
    Assert.AreEqual(2, root.Children.Count, "Should have 2 children after add")
    root.BeginEdit()
    root.Children.Add("3")
    Assert.AreEqual(3, root.Children.Count, "Should have 3 children after add")
    root.CancelEdit()
    Assert.AreEqual(2, root.Children.Count, "Should have 2 children after cancel")
    root.CancelEdit()
    Assert.AreEqual(1, root.Children.Count, "Should have 1 child after cancel")
    Assert.AreEqual("1", root.Children(0).Data)
  End Sub

  <Test()> _
  Public Sub AddGrandChild()
    Session.Clear()
    Dim root As root = root.NewRoot
    root.Children.Add("1")
    Dim child As child = root.Children(0)
    child.GrandChildren.Add("1")
    Assert.AreEqual(1, child.GrandChildren.Count)
    Assert.AreEqual("1", child.GrandChildren(0).Data)
  End Sub

  <Test()> _
  Public Sub AddRemoveGrandChild()
    Session.Clear()
    Dim root As root = root.NewRoot
    root.Children.Add("1")
    Dim child As child = root.Children(0)
    child.GrandChildren.Add("1")
    child.GrandChildren.Remove(child.GrandChildren.Item(0))
    Assert.AreEqual(0, child.GrandChildren.Count)
  End Sub

  <Test()> _
  Public Sub CloneGraph()
    Session.Clear()
    Dim root As root = root.NewRoot
    Dim form As New FormSimulator(root)
    Dim listener As New SerializableListener(root)
    root.Children.Add("1")
    Dim child As child = root.Children(0)
    child.GrandChildren.Add("1")
    Assert.AreEqual(1, child.GrandChildren.Count)
    Assert.AreEqual("1", child.GrandChildren(0).Data)

    Dim clone As root = DirectCast(root.Clone, root)
    child = clone.Children(0)
    Assert.AreEqual(1, child.GrandChildren.Count)
    Assert.AreEqual("1", child.GrandChildren(0).Data)

    Assert.AreEqual("root Deserialized", CStr(Session("Deserialized")))
    Assert.AreEqual("root Serialized", CStr(Session("Serialized")))
    Assert.AreEqual("root Serializing", CStr(Session("Serializing")))

    Assert.AreEqual("GC Deserialized", CStr(Session("GCDeserialized")))
    Assert.AreEqual("GC Serialized", CStr(Session("GCSerialized")))
    Assert.AreEqual("GC Serializing", CStr(Session("GCSerializing")))

  End Sub

  <Test()> _
  Public Sub ClearChildList()
    Session.Clear()
    Dim root As root = root.NewRoot
    root.Children.Add("A")
    root.Children.Add("B")
    root.Children.Add("C")
    root.Children.Clear()
    Assert.AreEqual(0, root.Children.Count)
  End Sub

  <Test()> _
  Public Sub NestedAddAcceptChild()
    Session.Clear()
    Dim root As root = root.NewRoot
    root.BeginEdit()
    root.Children.Add("A")
    root.BeginEdit()
    root.Children.Add("B")
    root.BeginEdit()
    root.Children.Add("C")
    root.ApplyEdit()
    root.ApplyEdit()
    root.ApplyEdit()
    Assert.AreEqual(3, root.Children.Count)
  End Sub

  <Test()> _
  Public Sub NestedAddDeleteAcceptChild()
    Session.Clear()
    Dim root As root = root.NewRoot
    root.BeginEdit()
    root.Children.Add("A")
    root.BeginEdit()
    root.Children.Add("B")
    root.BeginEdit()
    root.Children.Add("C")
    Dim childC As Child = root.Children.Item(2)
    root.Children.Remove(root.Children.Item(0))
    root.Children.Remove(root.Children.Item(0))
    root.Children.Remove(root.Children.Item(0))
    root.ApplyEdit()
    root.ApplyEdit()
    root.ApplyEdit()
    Assert.AreEqual(0, root.Children.Count)
    Assert.AreEqual(False, root.Children.ContainsDeleted(childC))
  End Sub

  <Test()> _
  Public Sub BasicEquality()

    Session.Clear()
    Dim r1 As Root = Root.NewRoot
    r1.Data = "abc"
    Assert.AreEqual(True, r1.Equals(r1), "Objects should be equal on instance compare")
    Assert.AreEqual(True, Equals(r1, r1), "Objects should be equal on static compare")

    Session.Clear()
    Dim r2 As Root = Root.NewRoot
    r2.Data = "xyz"
    Assert.AreEqual(False, r1.Equals(r2), "Objects should not be equal")
    Assert.AreEqual(False, Equals(r1, r2), "Objects should not be equal")

    Assert.AreEqual(False, r1.Equals(Nothing), "Objects should not be equal")
    Assert.AreEqual(False, Equals(r1, Nothing), "Objects should not be equal")
    Assert.AreEqual(False, Equals(Nothing, r2), "Objects should not be equal")

  End Sub

  <Test()> _
  Public Sub ChildEquality()

    Session.Clear()
    Dim root As root = root.NewRoot
    root.Children.Add("abc")
    root.Children.Add("xyz")
    root.Children.Add("123")
    Dim c1 As Child = root.Children(0)
    Dim c2 As Child = root.Children(1)
    Dim c3 As Child = root.Children(2)
    root.Children.Remove(c3)

    Assert.AreEqual(True, c1.Equals(c1), "Objects should be equal")
    Assert.AreEqual(True, Equals(c1, c1), "Objects should be equal")

    Assert.AreEqual(False, c1.Equals(c2), "Objects should not be equal")
    Assert.AreEqual(False, Equals(c1, c2), "Objects should not be equal")

    Assert.AreEqual(False, c1.Equals(Nothing), "Objects should not be equal")
    Assert.AreEqual(False, Equals(c1, Nothing), "Objects should not be equal")
    Assert.AreEqual(False, Equals(Nothing, c2), "Objects should not be equal")

    Assert.AreEqual(True, root.Children.Contains(c1), "Collection should contain c1")
    Assert.AreEqual(True, root.Children.Contains(c2), "Collection should contain c2")
    Assert.AreEqual(False, root.Children.Contains(c3), "Collection should not contain c3")
    Assert.AreEqual(True, root.Children.ContainsDeleted(c3), "Deleted collection should contain c3")

  End Sub

End Class

Public Class FormSimulator

  Private WithEvents obj As BusinessBase

  Public Sub New(ByVal obj As BusinessBase)
    Me.obj = obj
  End Sub

  Private Sub obj_IsDirtyChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles obj.IsDirtyChanged

  End Sub
End Class

<Serializable()> _
Public Class SerializableListener

  Private WithEvents obj As BusinessBase

  Public Sub New(ByVal obj As BusinessBase)
    Me.obj = obj
  End Sub

  Public Sub obj_IsDirtyChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles obj.IsDirtyChanged

  End Sub
End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -