using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;
using System.IO;
using System.Net;
using Inet.Viewer;
using Inet.Viewer.WinForms;
using Inet.Viewer.test.WinForms;
using System.Windows.Forms;
namespace Inet.Viewer.Data
{
///
///
///
[TestFixture]
public class TestURLRenderData
{
const string validUrl = "http://dell28:9000/?report=repo:/test/DotNetViewer4Pages.rpt";
private const string validServerUrlWithParameters = "http://dell28:9000/?report=repo:%2Fcodereview_overview_old2.rpt&hasgrouptree=false&promptonrefresh=true";
const string validUrl2 = "http://dell28:9000/?report=repo:%2Fstatistik%2Fmilestonetickets.rpt";
const string validUrlIP4 = "http://210.1.164.110:9000/?report=repo:%2Fcodereview_overview_old2.rpt";
const string inValidUrl = "http://";
const string inValidReport = "http://dell28:9000/?report=repo:%2FsVeryRandomReportThatCannotEcist.rpt";
const string validSubreportOnDemand = "http://dell28:9000/?init=html&report=repo%3a%2ftest%2ffeature%2freports%2fsubreports%2fsubreport3.rpt&locale=de&subreport_ondemand=type%3d0%26subreport%3d0";
///
///
///
[Test]
public void TestInvalidUrl()
{
string url;
IRenderData data;
try
{
url = inValidUrl;
data = new URLRenderData(url);
Assert.Fail();
}
catch (Exception)
{
/*if (e.InnerException != null && e.InnerException.GetType() == typeof(UriFormatException))
{
}*/
//Assert.Fail("Another Exception was thrown" e);
Assert.Pass("An Exception should be thrown");
}
url = inValidReport;
data = new URLRenderData(url);
}
///
///
///
[Test]
public void TestReportSetParameters()
{
// with Url in Constructor
IRenderData data = new URLRenderData(validUrl);
data["KeyOne"] = "ValueOne";
data["KeyTwo"] = "ValueTwo";
Assert.AreEqual("ValueOne", data["KeyOne"], "");
Assert.AreEqual("ValueTwo", data["KeyTwo"], "");
// With Url set via ReportLocation
data = new URLRenderData();
data.ReportLocation = validUrl;
data["KeyOne"] = "ValueOne";
data["KeyTwo"] = "ValueTwo";
// with double adding
data["KeyOne"] = "ValueDoubleOne";
Assert.AreEqual("ValueDoubleOne", data["KeyOne"], "Double adding");
Assert.AreEqual("ValueTwo", data["KeyTwo"], " Not changed");
}
///
///
///
[Test]
public void TestCloning()
{
IRenderData dataOriginal = new URLRenderData(validUrl);
IRenderData dataClone = dataOriginal.Clone() as IRenderData;
// Without params
Assert.AreEqual(dataOriginal.ReportLocation, dataClone.ReportLocation, "This should be the same as the clone was just created");
dataClone.ReportLocation = validUrl2;
Assert.AreEqual("repo:/test/DotNetViewer4Pages.rpt", dataOriginal["report"], "Should be the one as defined in the beginning");
Assert.AreEqual("repo:/statistik/milestonetickets.rpt", dataClone["report"], "Should be the url that was set after the clone was created");
// With Params
dataOriginal["KeyOne"] = "ValueOne";
Assert.AreEqual("ValueOne", dataOriginal["KeyOne"], "Test with param original");
dataClone["KeyTwo"] = "ValueTwo";
Assert.IsNull(dataClone["KeyOne"], "To make sure the param from the original was not used");
Assert.AreEqual("ValueTwo", dataClone["KeyTwo"], "Test with param clone");
}
///
///
///
[Test]
public void TestCloningPageCount()
{
IRenderData dataOriginal = new URLRenderData(validUrl);
ReportViewShowError viewOriginal = new ReportViewShowError(dataOriginal, false);
viewOriginal.CurrentPage = 4;
viewOriginal.AssertException(3);
IRenderData dataClone = dataOriginal.Clone() as IRenderData; // Subreport ondemand link clicked
ReportViewShowError viewClone = new ReportViewShowError(dataClone);
// Without params
// this report only has 4 pages!
Assert.AreEqual(4, viewOriginal.CurrentPage, "Page should be 4");
Assert.AreEqual(1, viewClone.CurrentPage, "Page should be 1");
// change clone to 2
viewClone.Invoke((MethodInvoker)delegate
{
viewClone.CurrentPage = 2;
});
Assert.AreEqual(4, viewOriginal.CurrentPage, "Page should be 4");
Assert.AreEqual(2, viewClone.CurrentPage, "Page should be 2");
// change orginal to 1
viewClone.Invoke((MethodInvoker)delegate
{
viewOriginal.CurrentPage = 3;
});
Assert.AreEqual(3, viewOriginal.CurrentPage, "Page should be 1");
Assert.AreEqual(2, viewClone.CurrentPage, "Page should be 2");
}
///
///
///
[Test]
public void TestReportWithParameters()
{
string url = validUrl + "&init=pdf&page=5&testParam1=testValue1";
URLRenderData data = new URLRenderData(url);
Assert.AreEqual("testValue1", data["testparam1"], "testParam1 in " + url);
Assert.AreEqual(null , data["init"], "Init=java should be ignored " + url);
}
///
///
///
[Test]
public void TestReportWithPrompts()
{
URLRenderData data = new URLRenderData(validSubreportOnDemand);
}
///
///
///
[Test]
public void TestGetParametersFromUrl()
{
string url = "http://localhost:9000/?report=file:C:/Users/michaels/Documents/Group1.rpt&init=html&page=3&test1=test1value";
URLRenderData data = new URLRenderData(url);
Assert.AreEqual(null , data["init"], "html ignored");
Assert.AreEqual(null , data["page"], "page ignored");
Assert.AreEqual("test1value", data["test1"], "test1");
}
///
///
///
[Test]
public void TestGetParametersFromUrlDoubleParams()
{
// with double values always the last one in the url will be used.
string url = "http://localhost:9000/?report=file:C:/Users/michaels/Documents/Group1.rpt&init=html&page=1.html&test1=test1value&test1=test1newvalue";
URLRenderData data = new URLRenderData(url);
Assert.AreEqual(null, data["init"], "html");
Assert.AreEqual(null, data["page"], "page ");
Assert.AreEqual("test1newvalue", data["test1"], "test1");
}
///
///
///
[Test]
public void TestStop()
{
string url = validServerUrlWithParameters;
URLRenderData data = new URLRenderData(url);
Byte[] pageData = data.GetPageData(1, false);
Console.WriteLine("TestStop() pageData: " +pageData.Length);
data.Stop();
Byte[] pageDataAfterStop = data.GetPageData(2, false);
Console.WriteLine("TestStop() pageDataAfterStop: " + pageDataAfterStop.Length);
Assert.AreNotEqual(pageData.Length, pageDataAfterStop.Length, "The page size has to be different");
}
///
/// This test is important for the promptonrefresh parameter
///
[Test]
public void ChangeReportLocationTest()
{
// Without ReportView
IRenderData data = new URLRenderData();
data.ReportLocation = validServerUrlWithParameters;
data.ReportLocation = validServerUrlWithParameters + "&hasreportbutton=false&hasrefreshbutton=false";
// With ReportView
data = new URLRenderData();
data.ReportLocation = validServerUrlWithParameters;
ReportView view = new ReportView();
view.ReportData = data;
//data = new URLRenderData();
// should not cause an exception
data.ReportLocation = validServerUrlWithParameters + "&hasreportbutton=false&hasrefreshbutton=false";
}
/*
public void TestExportChunk()
{
IReportData data = new URLRenderData("http://server:9000/?report=C:/report.rpt");
FileStream fStream = new FileStream("C:/test.pdf", FileMode.OpenOrCreate);
data["export_fmt", "pdf" );
data[ "file", "c:/test.pdf" );
int count = data.GetExportChunkCount( props );
for(int i=1; count == 0 || i < count; i++)
{
// count can be 0 if there is gzip compression
byte[] pageData = data.GetExportChunkCount();
if( pageData != null )
{
fStream.Write( pageData );
} else
{
break;
}
}
fStream.close();
}
*/
}
}