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

📄 appcontext.vb

📁 C# 版本的一个三层商业架构
💻 VB
字号:
Imports System.Threading

<TestFixture()> _
Public Class AppContext

  <Test()> _
  Public Sub NoContext()
    Session.Clear()

    ApplicationContext.Clear()

    Dim root As SimpleRoot = SimpleRoot.GetSimpleRoot("simple")

    Dim slot As System.LocalDataStoreSlot = _
      Thread.GetNamedDataSlot("CSLA.ClientContext")
    Assert.IsNull(Thread.GetData(slot), "ClientContext should be Nothing")

    slot = Thread.GetNamedDataSlot("CSLA.GlobalContext")
    Assert.IsNull(Thread.GetData(slot), "GlobalContext should be Nothing")

  End Sub

  <Test()> _
  Public Sub ClientContext()
    Session.Clear()

    ApplicationContext.ClientContext.Add("clientcontext", "client context data")
    Assert.AreEqual("client context data", ApplicationContext.ClientContext.Item("clientcontext"))

    Dim root As root
    root = root.NewRoot()

    root.Data = "saved"
    Assert.AreEqual("saved", root.Data)
    Assert.AreEqual(True, root.IsDirty)
    Assert.AreEqual(True, root.IsValid)

    Session.Clear()
    root = CType(root.Save, root)

    Assert.IsNotNull(root)
    Assert.AreEqual("Inserted", Session("Root"))
    Assert.AreEqual("saved", root.Data)
    Assert.AreEqual(False, root.IsNew)
    Assert.AreEqual(False, root.IsDeleted)
    Assert.AreEqual(False, root.IsDirty)

    Assert.AreEqual("client context data", ApplicationContext.ClientContext.Item("clientcontext"))
    Assert.AreEqual("client context data", Session("clientcontext"))

  End Sub

  <Test()> _
  Public Sub GlobalContext()
    Session.Clear()

    ApplicationContext.GlobalContext.Item("globalcontext") = "global context data"
    Assert.AreEqual("global context data", ApplicationContext.GlobalContext.Item("globalcontext"), "First")

    Dim root As root
    root = root.NewRoot()

    root.Data = "saved"
    Assert.AreEqual("saved", root.Data)
    Assert.AreEqual(True, root.IsDirty)
    Assert.AreEqual(True, root.IsValid)

    Session.Clear()
    root = CType(root.Save, root)

    Assert.IsNotNull(root)
    Assert.AreEqual("Inserted", Session("Root"))
    Assert.AreEqual("saved", root.Data)
    Assert.AreEqual(False, root.IsNew)
    Assert.AreEqual(False, root.IsDeleted)
    Assert.AreEqual(False, root.IsDirty)

    Assert.AreEqual("new global value", ApplicationContext.GlobalContext.Item("globalcontext"), "Second")
    Assert.AreEqual("global context data", Session("globalcontext"), "Third")

  End Sub

  <Test()> _
  Public Sub DataPortalEvents()
    Session.Clear()

    ApplicationContext.Clear()

    ApplicationContext.GlobalContext("global") = "global"

    AddHandler DataPortal.OnDataPortalInvoke, AddressOf OnDataPortalInvoke
    AddHandler DataPortal.OnDataPortalInvokeComplete, AddressOf OnDataPortalInvokeComplete

    Dim root As root = root.GetRoot("testing")

    RemoveHandler DataPortal.OnDataPortalInvoke, AddressOf OnDataPortalInvoke
    RemoveHandler DataPortal.OnDataPortalInvokeComplete, AddressOf OnDataPortalInvokeComplete

    Assert.AreEqual("global", Session("ClientInvoke"), "Client invoke incorrect")
    Assert.AreEqual("global", Session("ClientInvokeComplete"), "Client invoke complete incorrect")
    Assert.AreEqual("global", Session("dpinvoke"), "Server invoke incorrect")
    Assert.AreEqual("global", Session("dpinvokecomplete"), "Server invoke complete incorrect")

  End Sub

  Private Sub OnDataPortalInvoke(ByVal e As DataPortalEventArgs)

    Session("ClientInvoke") = ApplicationContext.GlobalContext("global")

  End Sub

  Private Sub OnDataPortalInvokeComplete(ByVal e As DataPortalEventArgs)

    Session("ClientInvokeComplete") = ApplicationContext.GlobalContext("global")

  End Sub

  <Test()> _
  Public Sub FailCreateContext()
    Session.Clear()

    ApplicationContext.Clear()

    Dim root As ExceptionRoot
    Try
      root = ExceptionRoot.NewExceptionRoot()
      Assert.Fail("Exception didn't occur")

    Catch ex As DataPortalException
      root = CType(ex.BusinessObject, ExceptionRoot)
      Assert.AreEqual("Fail create", ex.GetBaseException.Message, "Base exception message incorrect")
      Assert.AreEqual("DataPortal.Create failed", ex.Message, "Exception message incorrect")
    End Try

    Assert.AreEqual("<new>", root.Data, "Business object not returned")
    Assert.AreEqual("create", ApplicationContext.GlobalContext.Item("create"), "GlobalContext not preserved")

  End Sub

  <Test()> _
  Public Sub FailFetchContext()
    Session.Clear()

    ApplicationContext.Clear()

    Dim root As ExceptionRoot
    Try
      root = ExceptionRoot.GetExceptionRoot("fail")
      Assert.Fail("Exception didn't occur")

    Catch ex As DataPortalException
      root = CType(ex.BusinessObject, ExceptionRoot)
      Assert.AreEqual("Fail fetch", ex.GetBaseException.Message, "Base exception message incorrect")
      Assert.AreEqual("DataPortal.Fetch failed", ex.Message, "Exception message incorrect")
    End Try

    Assert.AreEqual("fail", root.Data, "Business object not returned")
    Assert.AreEqual("create", ApplicationContext.GlobalContext.Item("create"), "GlobalContext not preserved")

  End Sub

  <Test()> _
  Public Sub FailUpdateContext()
    Session.Clear()

    ApplicationContext.Clear()

    Dim root As ExceptionRoot
    Try
      root = ExceptionRoot.NewExceptionRoot()
      Assert.Fail("Exception didn't occur")

    Catch ex As DataPortalException
      root = CType(ex.BusinessObject, ExceptionRoot)
      Assert.AreEqual("Fail create", ex.GetBaseException.Message, "Base exception message incorrect")
      Assert.AreEqual("DataPortal.Create failed", ex.Message, "Exception message incorrect")
    End Try

    root.Data = "boom"
    Try
      root = CType(root.Save, ExceptionRoot)
      Assert.Fail("Exception didn't occur")

    Catch ex As DataPortalException
      root = CType(ex.BusinessObject, ExceptionRoot)
      Assert.AreEqual("Fail update", ex.GetBaseException.Message, "Base exception message incorrect")
      Assert.AreEqual("DataPortal.Update failed", ex.Message, "Exception message incorrect")
    End Try

    Assert.AreEqual("boom", root.Data, "Business object not returned")
    Assert.AreEqual("create", ApplicationContext.GlobalContext.Item("create"), "GlobalContext not preserved")

  End Sub

  <Test()> _
Public Sub FailDeleteContext()
    Session.Clear()

    ApplicationContext.Clear()

    Dim root As ExceptionRoot
    Try
      ExceptionRoot.DeleteExceptionRoot("fail")
      Assert.Fail("Exception didn't occur")

    Catch ex As DataPortalException
      root = CType(ex.BusinessObject, ExceptionRoot)
      Assert.AreEqual("Fail delete", ex.GetBaseException.Message, "Base exception message incorrect")
      Assert.AreEqual("DataPortal.Delete failed", ex.Message, "Exception message incorrect")
    End Try

    Assert.IsNull(root, "Business object returned")
    Assert.AreEqual("create", ApplicationContext.GlobalContext.Item("create"), "GlobalContext not preserved")

  End Sub

End Class

⌨️ 快捷键说明

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