Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/Reporting/VB/DevExpress.DemoReports/Tests/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/Reporting/VB/DevExpress.DemoReports/Tests/Tests.vb

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