Mini Kabibi Habibi
Imports Microsoft.VisualBasic
#If DEBUGTEST Then
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.IO
Imports System.Reflection
Imports System.Text
Imports DevExpress.Utils
Imports DevExpress.XtraPrinting
Imports DevExpress.XtraPrinting.Tests
Imports DevExpress.XtraReports.UI
Imports NUnit.Framework
Namespace XtraReportsDemos.Tests
Public NotInheritable Class TestHelper
Private Sub New()
End Sub
Public Shared Sub SetupDataDirectory(ByVal dir As String)
Dim fileNames() As String = { "biolife.txt", "CarsDB.mdb", "countriesDB.mdb", "Contacts.mdb", "nwind.mdb", "StyleSheetLavender.repss" }
For Each fileName As String In fileNames
Dim filePath As String = Path.Combine(dir, fileName)
If (Not File.Exists(filePath)) Then
Dim bytes() As Byte = ResourceStreamHelper.GetBytes("DevExpress.DemoReports.Tests." & fileName, System.Reflection.Assembly.GetExecutingAssembly())
File.WriteAllBytes(filePath, bytes)
End If
Next fileName
End Sub
End Class
<TestFixture> _
Public Class XMLSerialization
<SetUp> _
Public Sub Setup()
Dim dir As String = DevExpress.XtraPrinting.Tests.FileHelper.GetTempPath("Data")
TestHelper.SetupDataDirectory(dir)
ConnectionHelper.ApplyDataDirectory(dir)
End Sub
<Test> _
Public Sub SerializeDeserializeAllReports()
Dim skipReportTypes As New List(Of Type) (New Type() {GetType(XtraReportsDemos.Subreports.DetailReport), GetType(XtraReportsDemos.SideBySideReports.EmployeeComparisonReport), GetType(XtraReportsDemos.ReportMerging.MergedReport), GetType(XtraReportsDemos.PivotGrid.Report), GetType(XtraReportsDemos.PivotGridAndChart.Report), GetType(XtraReportsDemos.HugeAmountRecords.Report), GetType(XtraReportsDemos.MasterDetailReport.Report), GetType(XtraReportsDemos.Charts.Report), GetType(XtraReportsDemos.TreeView.Report), GetType(XtraReportsDemos.HugeAmountRecords.ReportWeb), GetType(XtraReportsDemos.NorthwindTraders.CatalogReport)})
Dim types() As Type = System.Reflection.Assembly.GetExecutingAssembly().GetTypes()
Dim failedReportTypes As New StringBuilder()
For Each type As Type In types
If GetType(XtraReport).IsAssignableFrom(type) Then
If (Not skipReportTypes.Contains(type)) AndAlso XMLSerializationIsInvalid(type) Then
failedReportTypes.AppendLine(type.FullName & ",")
End If
End If
Next type
If failedReportTypes.Length > 0 Then
NUnit.Framework.Assert.Fail("Incorrect XML serialization, types = " & failedReportTypes.ToString())
End If
End Sub
Private Function XMLSerializationIsInvalid(ByVal type As Type) As Boolean
Using report As XtraReport = CType(Activator.CreateInstance(type), XtraReport)
Dim pdfMemoryStream1 As Stream = New MemoryStream()
Try
Dim nativeFormatOptions As New NativeFormatOptions()
nativeFormatOptions.Compressed = False
report.CreateDocument()
report.PrintingSystem.SaveDocument(pdfMemoryStream1, nativeFormatOptions)
Using r As XtraReport = CType(Activator.CreateInstance(type), XtraReport)
Dim memoryStream1 As Stream = New MemoryStream()
Try
SerializeDeserializeReport(report, r, memoryStream1)
Finally
memoryStream1.Close()
End Try
Dim pdfMemoryStream2 As Stream = New MemoryStream()
Try
r.CreateDocument()
r.PrintingSystem.SaveDocument(pdfMemoryStream2, nativeFormatOptions)
Return Not EtalonComparer.CompareStreams(pdfMemoryStream1, pdfMemoryStream2)
Finally
pdfMemoryStream2.Close()
End Try
End Using
Finally
pdfMemoryStream1.Close()
End Try
End Using
End Function
Private Sub SerializeDeserializeReport(ByVal sourceReport As XtraReport, ByVal destinationReport As XtraReport, ByVal stream As Stream)
sourceReport.SaveLayoutToXml(stream)
destinationReport.LoadLayoutFromXml(stream)
End Sub
End Class
End Namespace
#End If