// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using Xunit;
using Xunit.Abstractions;
using System;
using System.Collections.Generic;
//using System.Dynamic;
using System.IO;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;
namespace System.Xml.Tests
{
/***********************************************************/
/* XsltArgumentList.GetParam */
/***********************************************************/
//[TestCase(Name = "XsltArgumentList - GetParam", Desc = "Get Param Test Cases")]
public class CArgIntegrity : XsltApiTestCaseBase
{
private ITestOutputHelper _output;
public CArgIntegrity(ITestOutputHelper output) : base(output)
{
_output = output;
}
//[Variation(Desc = "Basic Verification Test", Pri = 0)]
[InlineData()]
[Theory]
public void GetParam1()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test1", retObj);
if (retObj.ToString() != "Test1")
Assert.True(false);
return;
}
private static string s_typeXml = "";
private static string s_typeXsl = @"
";
private static void WriteFiles(string input, string output)
{
using (XmlWriter w = XmlWriter.Create(output))
{
using (XmlReader r = XmlReader.Create(new StringReader(input)))
{
w.WriteNode(r, false);
}
}
}
private static void WriteXmlAndXslFiles()
{
WriteFiles(s_typeXml, "type.xml");
WriteFiles(s_typeXsl, "type.xsl");
}
//[Variation(Desc = "Tuple.XsltArgumentList.AddParam/AddExtensionObject", Param = 1)]
[InlineData(1)]
//[Variation(Desc = "DynamicObject.XsltArgumentList.AddParam/AddExtensionObject", Param = 2)]
//[InlineData(2)]
//[Variation(Desc = "Guid.XsltArgumentList.AddParam/AddExtensionObject", Param = 3)]
[InlineData(3)]
//[Variation(Desc = "Dictionary.XsltArgumentList.AddParam/AddExtensionObject", Param = 4)]
[InlineData(4)]
[Theory]
public void var_types(int param)
{
WriteXmlAndXslFiles();
object t = null;
switch (param)
{
case 1: t = Tuple.Create(1, "Melitta", 7.5); break;
//case 2: t = new TestDynamicObject(); break;
case 3: t = new Guid(); break;
case 4: t = new Dictionary(); break;
}
_output.WriteLine(t.ToString());
#pragma warning disable 0618
XslTransform xslt = new XslTransform();
#pragma warning restore 0618
xslt.Load("type.xsl");
XsltArgumentList xslArg = new XsltArgumentList();
xslArg.AddParam("param", "", t);
xslArg.AddExtensionObject("", t);
XPathDocument xpathDom = new XPathDocument("type.xml");
using (StringWriter sw = new StringWriter())
{
xslt.Transform(xpathDom, xslArg, sw);
_output.WriteLine(sw.ToString());
}
return;
}
//public class TestDynamicObject : DynamicObject
//{
// public dynamic GetDynamicObject()
// {
// return new Dictionary();
// }
//}
//[Variation("Param name is null")]
[InlineData()]
[Theory]
public void GetParam2()
{
m_xsltArg = new XsltArgumentList();
retObj = m_xsltArg.GetParam(null, szEmpty);
if (retObj != null)
{
_output.WriteLine("Did not return NULL for null param name {0}", retObj);
Assert.True(false);
}
else
return;
}
//[Variation("Param name is empty string")]
[InlineData()]
[Theory]
public void GetParam3()
{
m_xsltArg = new XsltArgumentList();
retObj = m_xsltArg.GetParam(szEmpty, szEmpty);
if (retObj != null)
{
_output.WriteLine("Did not return NULL for empty string param name: {0}", retObj);
Assert.True(false);
}
return;
}
//[Variation("Param name is non existent")]
[InlineData()]
[Theory]
public void GetParam4()
{
m_xsltArg = new XsltArgumentList();
retObj = m_xsltArg.GetParam("RandomName", szEmpty);
if (retObj != null)
{
_output.WriteLine("Did not return NULL for non-existent parameter name: {0}", retObj);
Assert.True(false);
}
return;
}
//[Variation("Invalid Param name")]
[InlineData()]
[Theory]
public void GetParam5()
{
m_xsltArg = new XsltArgumentList();
retObj = m_xsltArg.GetParam(szInvalid, szEmpty);
if (retObj != null)
{
_output.WriteLine("Did not return NULL for an invalid param name");
Assert.True(false);
}
return;
}
//[Variation("Very Long Param")]
[InlineData()]
[Theory]
public void GetParam6()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam(szLongString, szEmpty, "Test6");
retObj = m_xsltArg.GetParam(szLongString, szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test6", retObj);
if (retObj.ToString() != "Test6")
Assert.True(false);
return;
}
//[Variation("Namespace URI = null")]
[InlineData()]
[Theory]
public void GetParam7()
{
m_xsltArg = new XsltArgumentList();
retObj = m_xsltArg.GetParam("myArg1", null);
if (retObj != null)
{
_output.WriteLine("Did not return NULL for null namespace System.Xml.Tests");
Assert.True(false);
}
return;
}
//[Variation("Namespace URI is empty string - Bug 200998")]
[InlineData()]
[Theory]
public void GetParam8()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test8");
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test8", retObj);
if (retObj.ToString() != "Test8")
Assert.True(false);
return;
}
//[Variation("Namespace URI non-existent")]
[InlineData()]
[Theory]
public void GetParam9()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test9");
retObj = m_xsltArg.GetParam("myArg1", "http://www.microsoft.com");
if (retObj != null)
{
_output.WriteLine("Did not retrieve a null value for non-existent uri");
Assert.True(false);
}
m_xsltArg.AddParam("myArg2", "http://www.msn.com", "Test1");
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
if (retObj != null)
{
_output.WriteLine("Did not retrieve a null value for non-existent uri");
Assert.True(false);
}
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
if (retObj != null)
{
_output.WriteLine("Did not retrieve a null value for non-existent uri");
Assert.True(false);
}
return;
}
//[Variation("Very long namespace System.Xml.Tests")]
[InlineData()]
[Theory]
public void GetParam10()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szLongNS, "Test10");
retObj = m_xsltArg.GetParam("myArg1", szLongNS);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test10", retObj);
if (retObj.ToString() != "Test10")
Assert.True(false);
return;
}
/*
* This test is no more valid.
* MDAC Bug # 88407 fix now allows ANY characters in URI
//[Variation("Invalid Namespace URI")]
[InlineData()]
[Theory]
public void GetParam11()
{
m_xsltArg = new XsltArgumentList();
try
{
m_xsltArg.AddParam("myArg1", szInvalid, "Test11");
}
catch (System.UriFormatException)
{
return;
}
_output.WriteLine("Did not throw System.UriFormatException for invalid namespace System.Xml.Tests");
Assert.True(false);
}
*/
//[Variation("Different Data Types")]
[InlineData()]
[Theory]
public void GetParam12()
{
m_xsltArg = new XsltArgumentList();
String obj = "0.00";
// string
m_xsltArg.AddParam("myArg1", szEmpty, obj);
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "0.00", retObj);
if (retObj.ToString() != "0.00")
{
_output.WriteLine("Failed to add/get a value for {0} of type {1}", "0.00", "string");
_output.WriteLine("Retrieved: {0} ", retObj);
Assert.True(false);
}
//int -- check conversions and value for original object and returned object
int j = 8;
int i = 8;
m_xsltArg.AddParam("myArg2", szEmpty, i);
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value:{1}", i, retObj);
if (!i.Equals(retObj))
{
_output.WriteLine("Failed to add/get a value for {0} of type {1}", i, "int");
Assert.True(false);
}
if (i.GetType() != j.GetType())
Assert.True(false);
Boolean bF = (1 == 0);
m_xsltArg.AddParam("myArg3", szEmpty, bF);
retObj = m_xsltArg.GetParam("myArg3", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", bF.ToString(), retObj);
if (!bF.Equals(retObj))
{
_output.WriteLine("Failed to add/get a value for {0} of type {1}", bF.ToString(), "boolean");
_output.WriteLine("Retrieved: {0} ", retObj);
Assert.True(false);
}
Boolean bT = (1 == 1);
m_xsltArg.AddParam("myArg4", szEmpty, bT);
retObj = m_xsltArg.GetParam("myArg4", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", bT.ToString(), retObj);
if (!bT.Equals(retObj))
{
_output.WriteLine("Failed to add/get a value for {0} of type {1}", bT.ToString(), "boolean");
_output.WriteLine("Retrieved: {0} ", retObj);
Assert.True(false);
}
XPathDocument xd = new XPathDocument(FullFilePath("fish.xml"));
m_xsltArg.AddParam("myArg5", szEmpty, ((IXPathNavigable)xd).CreateNavigator());
retObj = m_xsltArg.GetParam("myArg5", szEmpty);
if (retObj == null)
{
_output.WriteLine("Failed to add/get a value of type {1}", "XPathNavigator");
_output.WriteLine("Retrieved: {0} ", retObj);
Assert.True(false);
}
return;
}
//[Variation("Case Sensitivity")]
[InlineData()]
[Theory]
public void GetParam13()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
retObj = m_xsltArg.GetParam("myarg1", szEmpty);
if (retObj != null)
Assert.True(false);
retObj = m_xsltArg.GetParam("myArg1 ", szEmpty);
if (retObj != null)
Assert.True(false);
retObj = m_xsltArg.GetParam("myArg", szEmpty);
if (retObj != null)
Assert.True(false);
return;
}
//[Variation("Whitespace")]
[InlineData()]
[Theory]
public void GetParam14()
{
int i = 1;
m_xsltArg = new XsltArgumentList();
foreach (String str in szWhiteSpace)
{
m_xsltArg.AddParam("myArg" + i, szEmpty, "Test" + str);
retObj = m_xsltArg.GetParam("myArg" + i, szEmpty);
if (retObj.ToString() != "Test" + str)
{
_output.WriteLine("Error processing {0} test for whitespace arg in first set", i);
Assert.True(false);
}
i++;
}
foreach (String str in szWhiteSpace)
{
m_xsltArg.AddParam("myArg" + i, szEmpty, "Test"); // dont add whitespace to name here since addparam would throw
retObj = m_xsltArg.GetParam("myArg" + str, szEmpty);
if (retObj != null)
{
_output.WriteLine("Error processing {0} test for whitespace arg in second set. Returned object is not null.", i);
Assert.True(false);
}
i++;
}
return;
}
//[Variation("Call After Param has been removed")]
[InlineData()]
[Theory]
public void GetParam15()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
m_xsltArg.RemoveParam("myArg1", szEmpty);
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
if (retObj != null)
Assert.True(false);
return;
}
//[Variation("Call multiple Times")]
[InlineData()]
[Theory]
public void GetParam16()
{
m_xsltArg = new XsltArgumentList();
int i = 0;
m_xsltArg.AddParam("myArg1", szEmpty, "Test16");
for (i = 0; i < 200; i++)
{
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
if (retObj.ToString() != "Test16")
{
_output.WriteLine("Failed after retrieving {0} times", i);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test16", retObj);
Assert.True(false);
}
}
_output.WriteLine("Retrievied {0} times", i);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test1", retObj);
return;
}
//[Variation("Using XSL namespace")]
[InlineData()]
[Theory]
public void GetParam17()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test17");
retObj = m_xsltArg.GetParam("myArg3", szDefaultNS);
if (retObj != null)
{
_output.WriteLine("Return a non-null value when retrieving Param with namespace {0}", szXslNS);
Assert.True(false);
}
return;
}
//[Variation("Resolving conflicts with variables with different namespaces")]
[InlineData()]
[Theory]
public void GetParam18()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test1", retObj);
m_xsltArg.AddParam("myArg1", "http://www.msn.com", "Test2");
retObj = m_xsltArg.GetParam("myArg1", "http://www.msn.com");
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test2", retObj);
if (retObj.ToString() != "Test2")
Assert.True(false);
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
_output.WriteLine("Retrieve Original Value:{0}\nActual Retrieved Value: {1}", "Test1", retObj);
if (retObj.ToString() != "Test1")
Assert.True(false);
return;
}
//[Variation("Namespace AND param = null")]
[InlineData()]
[Theory]
public void GetParam19()
{
m_xsltArg = new XsltArgumentList();
retObj = m_xsltArg.GetParam(null, null);
if (retObj != null)
{
_output.WriteLine("Did not return NULL for null parameter name");
Assert.True(false);
}
return;
}
//[Variation("Data Types - Of type Double ")]
[InlineData()]
[Theory]
public void GetParamDoubles()
{
double d1 = double.PositiveInfinity;
double d2 = double.NegativeInfinity;
double d3 = double.NaN;
double d4 = 2.000001;
double d5 = 0.00;
double d6 = double.MaxValue;
double d7 = double.MinValue;
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, d1);
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", d1, retObj);
if (!double.IsPositiveInfinity((double)retObj))
{
_output.WriteLine("Failed to add/get a value for {0}", d1);
_output.WriteLine("Retrieved: {0} ", retObj);
Assert.True(false);
}
m_xsltArg.AddParam("myArg2", szEmpty, d2);
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", d2, retObj);
if (!double.IsNegativeInfinity((double)retObj))
{
_output.WriteLine("Failed to add/get a value for {0}", d2);
_output.WriteLine("Retrieved: {0} ", retObj);
Assert.True(false);
}
m_xsltArg.AddParam("myArg3", szEmpty, d3);
retObj = m_xsltArg.GetParam("myArg3", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", d3, retObj);
if (!double.IsNaN((double)retObj))
{
_output.WriteLine("Failed to add/get a value for {0}", d3);
_output.WriteLine("Retrieved: {0} ", retObj);
Assert.True(false);
}
m_xsltArg.AddParam("myArg4", szEmpty, d4);
retObj = m_xsltArg.GetParam("myArg4", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", d4, retObj);
if (!d4.Equals((double)retObj))
{
_output.WriteLine("Failed to add/get a value for {0}", d4);
_output.WriteLine("Retrieved: {0} ", retObj);
Assert.True(false);
}
m_xsltArg.AddParam("myArg5", szEmpty, d5);
retObj = m_xsltArg.GetParam("myArg5", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", d5, retObj);
if (!d5.Equals(retObj))
{
_output.WriteLine("Failed to add/get a value for {0}", d5);
_output.WriteLine("Retrieved: {0} ", retObj);
Assert.True(false);
}
m_xsltArg.AddParam("myArg6", szEmpty, d6);
retObj = m_xsltArg.GetParam("myArg6", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", d6, retObj);
if (!d6.Equals(retObj))
{
_output.WriteLine("Failed to add/get a value for {0}", d6);
_output.WriteLine("Retrieved: {0} ", retObj);
Assert.True(false);
}
m_xsltArg.AddParam("myArg7", szEmpty, d7);
retObj = m_xsltArg.GetParam("myArg7", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", d7, retObj);
if (!d7.Equals(retObj))
{
_output.WriteLine("Failed to add/get a value for {0}", d7);
_output.WriteLine("Retrieved: {0} ", retObj);
Assert.True(false);
}
return;
}
}
/***********************************************************/
/* XsltArgumentList.GetExtensionObject */
/***********************************************************/
// TODO: Fix security issue
////[TestCase(Name="XsltArgumentList - GetExtensionObject", Desc="XsltArgumentList.GetExtensionObject")]
//public class CArgGetExtObj : XsltApiTestCaseBase
//{
// //[Variation(Desc="Basic Verification Test",Pri=0)]
// [InlineData()]
// public int GetExtObject1()
// {
// MyObject obj = new MyObject(1);
// m_xsltArg = new XsltArgumentList();
// m_xsltArg.AddExtensionObject(szDefaultNS, obj);
// retObj = m_xsltArg.GetExtensionObject(szDefaultNS);
// _output.WriteLine("Retrieved value: {0}", ((MyObject)retObj).MyValue());
// if(((MyObject)retObj).MyValue() != obj.MyValue())
// {
// _output.WriteLine("Set and retrieved value appear to be different");
// Assert.True(false);
// }
// if((LoadXSL("MyObjectDef.xsl") == TEST_PASS) && (Transform_ArgList("fruits.xml") == TEST_PASS) &&
// (CheckResult(430.402026847)== TEST_PASS))
// return;
// else
// Assert.True(false);
// }
// //[Variation("Namespace URI = null")]
// [InlineData()]
// public int GetExtObject2()
// {
// m_xsltArg = new XsltArgumentList();
// try
// {
// m_xsltArg.GetExtensionObject(null);
// }
// catch(System.ArgumentNullException)
// {
// return;
// }
// _output.WriteLine("ArgumentNullException not thrown for null namespace System.Xml.Tests");
// return;
// }
// //[Variation("Namespace URI is empty string")]
// [InlineData()]
// public int GetExtObject3()
// {
// m_xsltArg = new XsltArgumentList();
// try
// {
// retObj = m_xsltArg.GetExtensionObject(szEmpty);
// }
// catch(Exception e)
// {
// _output.WriteLine(e.ToString());
// Assert.True(false);
// }
// if((LoadXSL("showParam.xsl") == TEST_PASS) && (Transform_ArgList("fruits.xml") == TEST_PASS) &&
// (CheckResult(466.5112789241)== TEST_PASS))
// return;
// else
// Assert.True(false);
// }
// //[Variation("Namespace URI non-existent")]
// [InlineData()]
// public int GetExtObject4()
// {
// m_xsltArg = new XsltArgumentList();
// retObj = m_xsltArg.GetExtensionObject(szDefaultNS);
// if(retObj != null)
// {
// _output.WriteLine("Did not return a NULL value for a non-existent URI");
// Assert.True(false);
// }
// try
// {
// if((LoadXSL("MyObjectDef.xsl") == TEST_PASS))
// Transform_ArgList("fruits.xml");
// }
// catch(System.Xml.Xsl.XsltException)
// {
// return;
// }
// _output.WriteLine("Did not throw exception for an invalid transform");
// Assert.True(false);
// }
// //[Variation("Very long namespace System.Xml.Tests")]
// [InlineData()]
// public int GetExtObject5()
// {
// m_xsltArg = new XsltArgumentList();
// MyObject obj = new MyObject(5);
// m_xsltArg.AddExtensionObject(szLongNS, obj);
// retObj = m_xsltArg.GetExtensionObject(szLongNS);
// if(((MyObject)retObj).MyValue() != obj.MyValue())
// {
// _output.WriteLine("Set and retrieved value appear to be different");
// Assert.True(false);
// }
// if((LoadXSL("MyObjectLongNS.xsl") == TEST_PASS) && (Transform_ArgList("fruits.xml") == TEST_PASS) &&
// (CheckResult(522.0563223871)== TEST_PASS))
// return;
// else
// Assert.True(false);
// }
// /*
// * This test is no more valid.
// * MDAC Bug # 88407 fix now allows ANY characters in URI
// //[Variation("Invalid namespace System.Xml.Tests")]
// [InlineData()]
// public int GetExtObject6()
// {
// m_xsltArg = new XsltArgumentList();
// MyObject obj = new MyObject(6);
// try
// {
// m_xsltArg.AddExtensionObject(szInvalid, obj);
// }
// catch (System.UriFormatException)
// {
// return;
// }
// _output.WriteLine("Did not throw System.UriFormatException for invalid namespace System.Xml.Tests");
// Assert.True(false);
// }
// */
// //[Variation("Different Data Types")]
// [InlineData()]
// public int GetExtObject7()
// {
// m_xsltArg = new XsltArgumentList();
// String obj = "0.00";
// // string
// m_xsltArg.AddExtensionObject("myArg1", obj);
// retObj = m_xsltArg.GetExtensionObject("myArg1");
// _output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "0.00", retObj);
// if( retObj.ToString() != "0.00")
// {
// _output.WriteLine("Failed to add/get a value for {0} of type {1}", "0.00", "string");
// _output.WriteLine("Retrieved: {0} ", retObj);
// Assert.True(false);
// }
// int i = 8;
// m_xsltArg.AddExtensionObject("myArg2", i);
// retObj = m_xsltArg.GetExtensionObject("myArg2");
// _output.WriteLine("Added Value:{0}\nRetrieved Value:{1}", i, retObj);
// if(!i.Equals(retObj))
// {
// _output.WriteLine("Failed to add/get a value for {0} with conversion from int to double", i);
// _output.WriteLine("Retrieved: {0}", retObj.ToString());
// Assert.True(false);
// }
// //must also be same instance!!!
// if(i != (int)retObj)
// Assert.True(false);
// Boolean bF = (1==0);
// m_xsltArg.AddExtensionObject("myArg3", bF);
// retObj = m_xsltArg.GetExtensionObject("myArg3");
// _output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", bF.ToString(), retObj);
// if( !bF.Equals(retObj))
// {
// _output.WriteLine("Failed to add/get a value for {0} of type {1}", bF.ToString(), "boolean");
// _output.WriteLine("Retrieved: {0} ", retObj);
// Assert.True(false);
// }
// Boolean bT = (1==1);
// m_xsltArg.AddExtensionObject("myArg4", bT);
// retObj = m_xsltArg.GetExtensionObject("myArg4");
// _output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", bT.ToString(), retObj);
// if( !bT.Equals(retObj))
// {
// _output.WriteLine("Failed to add/get a value for {0} of type {1}", bT.ToString(), "boolean");
// _output.WriteLine("Retrieved: {0} ", retObj);
// Assert.True(false);
// }
// return;
// }
// //[Variation("Case sensitivity")]
// [InlineData()]
// public int GetExtObject8()
// {
// MyObject obj = new MyObject(8);
// m_xsltArg = new XsltArgumentList();
// m_xsltArg.AddExtensionObject("urn:my-object", obj);
// retObj = m_xsltArg.GetExtensionObject("urn:my-object");
// if(((MyObject)retObj).MyValue() != obj.MyValue())
// {
// _output.WriteLine("Set and retrieved value appear to be different");
// Assert.True(false);
// }
// retObj = m_xsltArg.GetExtensionObject("URN:MY-OBJECT");
// if(retObj != null)
// {
// _output.WriteLine("Set and retrieved value appear to be different for URN:MY-OBJECT");
// Assert.True(false);
// }
// retObj = m_xsltArg.GetExtensionObject("urn:My-Object");
// if(retObj != null)
// {
// _output.WriteLine("Set and retrieved value appear to be different for urn:My-Object");
// Assert.True(false);
// }
// retObj = m_xsltArg.GetExtensionObject("urn-my:object");
// if(retObj != null)
// {
// _output.WriteLine("Set and retrieved value appear to be different for urn-my:object");
// Assert.True(false);
// }
// if((LoadXSL("MyObjectDef.xsl") == TEST_PASS) && (Transform_ArgList("fruits.xml") == TEST_PASS) &&
// (CheckResult(430.402026847)== TEST_PASS))
// return;
// else
// Assert.True(false);
// }
// //[Variation("Whitespace")]
// [InlineData()]
// public int GetExtObject9()
// {
// int i=1;
// m_xsltArg = new XsltArgumentList();
// foreach(String str in szWhiteSpace)
// {
// MyObject obj = new MyObject(i);
// m_xsltArg.AddExtensionObject(szDefaultNS + str, obj);
// retObj = m_xsltArg.GetExtensionObject(szDefaultNS + str);
// if(((MyObject)retObj).MyValue() != i)
// {
// _output.WriteLine("Error processing {0} test for whitespace arg", i);
// Assert.True(false);
// }
// i++;
// }
// try
// {
// if((LoadXSL("MyObjectDef.xsl") == TEST_PASS))
// Transform_ArgList("fruits.xml");
// }
// catch(System.Xml.Xsl.XsltException)
// {
// return;
// }
// _output.WriteLine("Did not throw expected exception: System.Xml.Xsl.XsltException");
// Assert.True(false);
// }
// //[Variation("Call after object has been removed")]
// [InlineData()]
// public int GetExtObject10()
// {
// MyObject obj = new MyObject(10);
// m_xsltArg = new XsltArgumentList();
// m_xsltArg.AddExtensionObject(szDefaultNS, obj);
// m_xsltArg.RemoveExtensionObject(szDefaultNS);
// retObj = m_xsltArg.GetExtensionObject(szDefaultNS);
// if(retObj != null)
// {
// _output.WriteLine("Did not retrieve a NULL value for a non-existent object returned");
// Assert.True(false);
// }
// try
// {
// if((LoadXSL("MyObjectDef.xsl") == TEST_PASS))
// Transform_ArgList("fruits.xml");
// }
// catch(System.Xml.Xsl.XsltException)
// {
// return;
// }
// _output.WriteLine("Did not throw expected exception: System.Xml.Xsl.XsltException");
// Assert.True(false);
// }
// //[Variation("Call multiple times")]
// [InlineData()]
// public int GetExtObject11()
// {
// MyObject obj = new MyObject(11);
// m_xsltArg = new XsltArgumentList();
// m_xsltArg.AddExtensionObject(szDefaultNS, obj);
// for(int i=0; i < 500; i++)
// {
// retObj = m_xsltArg.GetExtensionObject(szDefaultNS);
// if(((MyObject)retObj).MyValue() != obj.MyValue())
// {
// _output.WriteLine("Set and retrieved value appear to be different after {i} tries", i);
// Assert.True(false);
// }
// }
// if((LoadXSL("MyObjectDef.xsl") == TEST_PASS) && (Transform_ArgList("fruits.xml") == TEST_PASS) &&
// (CheckResult(430.402026847)== TEST_PASS))
// return;
// else
// Assert.True(false);
// }
// //[Variation("Using XSL Namespace")]
// [InlineData()]
// public int GetExtObject12()
// {
// m_xsltArg = new XsltArgumentList();
// retObj = m_xsltArg.GetExtensionObject(szDefaultNS);
// if(retObj != null)
// {
// _output.WriteLine("Did not retrieve null value when using namespace {0}", szXslNS);
// Assert.True(false);
// }
// return;
// }
//}
/***********************************************************/
/* XsltArgumentList.AddParam */
/***********************************************************/
//[TestCase(Name = "XsltArgumentList - AddParam : Reader, Reader", Desc = "READER,READER")]
//[TestCase(Name = "XsltArgumentList - AddParam : Reader, Stream", Desc = "READER,STREAM")]
//[TestCase(Name = "XsltArgumentList - AddParam : Reader, Writer", Desc = "READER,WRITER")]
//[TestCase(Name = "XsltArgumentList - AddParam : Reader, TextWriter", Desc = "READER,TEXTWRITER")]
//[TestCase(Name = "XsltArgumentList - AddParam : URI, Reader", Desc = "URI,READER")]
//[TestCase(Name = "XsltArgumentList - AddParam : URI, Stream", Desc = "URI,STREAM")]
//[TestCase(Name = "XsltArgumentList - AddParam : URI, Writer", Desc = "URI,WRITER")]
//[TestCase(Name = "XsltArgumentList - AddParam : URI, TextWriter", Desc = "URI,TEXTWRITER")]
//[TestCase(Name = "XsltArgumentList - AddParam : Navigator, Reader", Desc = "NAVIGATOR,READER")]
//[TestCase(Name = "XsltArgumentList - AddParam : Navigator, Stream", Desc = "NAVIGATOR,STREAM")]
//[TestCase(Name = "XsltArgumentList - AddParam : Navigator, Writer", Desc = "NAVIGATOR,WRITER")]
//[TestCase(Name = "XsltArgumentList - AddParam : Navigator, TextWriter", Desc = "NAVIGATOR,TEXTWRITER")]
public class CArgAddParam : XsltApiTestCaseBase
{
private ITestOutputHelper _output;
public CArgAddParam(ITestOutputHelper output) : base(output)
{
_output = output;
}
//[Variation(Desc = "Basic Verification Test", Pri = 0)]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddParam1()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test1", retObj);
if (retObj.ToString() != "Test1")
Assert.True(false);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(457.6003003605) == 1))
return;
else
Assert.True(false);
}
//[Variation("Param = null")]
[InlineData()]
[Theory]
public void AddParam2()
{
m_xsltArg = new XsltArgumentList();
try
{
m_xsltArg.AddParam(null, szEmpty, "Test1");
}
catch (System.ArgumentNullException)
{
return;
}
_output.WriteLine("System.ArgumentNullException not thrown for adding null param");
Assert.True(false);
}
//[Variation("Param name is empty string")]
[InlineData()]
[Theory]
public void AddParam3()
{
m_xsltArg = new XsltArgumentList();
try
{
m_xsltArg.AddParam(szEmpty, szEmpty, "Test1");
}
catch (System.ArgumentNullException)
{
return;
}
_output.WriteLine("System.ArgumentNullException not thrown for param name empty string");
Assert.True(false);
}
//[Variation("Very Long Param Name")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddParam4()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam(szLongString, szEmpty, "Test1");
retObj = m_xsltArg.GetParam(szLongString, szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test1", retObj);
if (retObj.ToString() != "Test1")
Assert.True(false);
if ((LoadXSL("showParamLongName.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(383.8692240713) == 1))
return;
else
Assert.True(false);
}
//[Variation("Invalid Param name")]
[InlineData()]
[Theory]
public void AddParam5()
{
m_xsltArg = new XsltArgumentList();
try
{
m_xsltArg.AddParam(szInvalid, szEmpty, "Test1");
}
catch (System.Xml.XmlException)
{
return;
}
_output.WriteLine("System.Xml.XmlException not thrown for invalid param name");
Assert.True(false);
}
//[Variation("Namespace URI = null")]
[InlineData()]
[Theory]
public void AddParam6()
{
m_xsltArg = new XsltArgumentList();
try
{
m_xsltArg.AddParam("myArg1", null, "Test1");
}
catch (System.ArgumentNullException)
{
return;
}
_output.WriteLine("System.ArgumentNullException not thrown for null namespace System.Xml.Tests");
Assert.True(false);
}
//[Variation("Namespace URI is empty string")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddParam7()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test7");
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test1", retObj);
if (retObj.ToString() != "Test7")
Assert.True(false);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(457.7055635184) == 1))
return;
else
Assert.True(false);
}
//[Variation("Very long namespace System.Xml.Tests")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddParam8()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szLongNS, "Test8");
retObj = m_xsltArg.GetParam("myArg1", szLongNS);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test1", retObj);
if (retObj.ToString() != "Test8")
Assert.True(false);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(466.5112789241) == 1))
return;
else
Assert.True(false);
}
/*
* This test is no more valid.
* MDAC Bug # 88407 fix now allows ANY characters in URI
//[Variation("Invalid Namespace URI")]
[InlineData()]
[Theory]
public void AddParam9()
{
m_xsltArg = new XsltArgumentList();
try
{
m_xsltArg.AddParam("myArg1", szInvalid, "Test1");
}
catch (System.UriFormatException)
{
return;
}
_output.WriteLine("Did not throw System.UriFormatException for invalid namespace System.Xml.Tests");
Assert.True(false);
}
*/
//[Variation("Objects as different Data Types")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddParam10()
{
m_xsltArg = new XsltArgumentList();
MyObject m = new MyObject(10, _output);
m_xsltArg.AddParam("myArg1", szEmpty, m);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(473.4007803959) == 1))
return;
else
Assert.True(false);
}
//[Variation("Setting a param that already exists")]
[InlineData()]
[Theory]
public void AddParam11()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test2");
try
{
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
}
catch (System.ArgumentException)
{
return;
}
_output.WriteLine("Did not throw System.ArgumentException for adding a param that already exists");
Assert.True(false);
}
//[Variation("Object with same name, different namespace System.Xml.Tests")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddParam12()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test1", retObj);
if (retObj.ToString() != "Test1")
Assert.True(false);
m_xsltArg.AddParam("myArg1", "http://www.msn.com", "Test2");
retObj = m_xsltArg.GetParam("myArg1", "http://www.msn.com");
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test2", retObj);
if (retObj.ToString() != "Test2")
Assert.True(false);
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
_output.WriteLine("Retrieve Original Value:{0}\nActual Retrieved Value: {1}", "Test1", retObj);
if (retObj.ToString() != "Test1")
Assert.True(false);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(457.6003003605) == 1))
return;
else
Assert.True(false);
}
//[Variation("Object with same namespace System.Xml.Tests, different name")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddParam13()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test1", retObj);
if (retObj.ToString() != "Test1")
Assert.True(false);
m_xsltArg.AddParam("myArg2", szEmpty, "Test2");
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test2", retObj);
if (retObj.ToString() != "Test2")
Assert.True(false);
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
_output.WriteLine("Retrieve Original Value:{0}\nActual Retrieved Value: {1}", "Test1", retObj);
if (retObj.ToString() != "Test1")
Assert.True(false);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(449.000354515) == 1))
return;
else
Assert.True(false);
}
//[Variation("Case Sensitivity")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddParam14()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test1", retObj);
if (retObj.ToString() != "Test1")
Assert.True(false);
m_xsltArg.AddParam("myarg1", szEmpty, "Test2");
retObj = m_xsltArg.GetParam("myarg1", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test2", retObj);
if (retObj.ToString() != "Test2")
Assert.True(false);
m_xsltArg.AddParam("myArg2", szEmpty, "Test2");
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test2", retObj);
if (retObj.ToString() != "Test2")
Assert.True(false);
m_xsltArg.AddParam("myarg3", szEmpty, "Test3");
retObj = m_xsltArg.GetParam("myarg3", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test3", retObj);
if (retObj.ToString() != "Test3")
Assert.True(false);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(449.000354515) == 1))
return;
else
Assert.True(false);
}
//[Variation("Object is null")]
[InlineData()]
[Theory]
public void AddParam15()
{
m_xsltArg = new XsltArgumentList();
try
{
m_xsltArg.AddParam("myArg1", szEmpty, null);
}
catch (System.ArgumentNullException)
{
return;
}
_output.WriteLine("System.ArgumentNullException not thrown for null object");
Assert.True(false);
}
//[Variation("Add/remove object many times")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddParam16()
{
m_xsltArg = new XsltArgumentList();
String obj = "Test";
for (int i = 0; i < 200; i++)
{
m_xsltArg.AddParam("myArg2", szEmpty, obj + i);
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
if (retObj.ToString() != ("Test" + i))
{
_output.WriteLine("Failed to add/remove iteration {0}", i);
Assert.True(false);
}
m_xsltArg.RemoveParam("myArg2", szEmpty);
}
for (int i = 0; i < 200; i++)
{
m_xsltArg.AddParam("myArg" + i, szEmpty, obj + i);
retObj = m_xsltArg.GetParam("myArg" + i, szEmpty);
if (retObj.ToString() != (obj + i))
{
_output.WriteLine("Failed in 2nd part to add/remove iteration {0}", i);
Assert.True(false);
}
m_xsltArg.RemoveParam("myArg2", szEmpty);
}
for (int i = 0; i < 200; i++)
{
m_xsltArg.RemoveParam("myArg" + i, szEmpty);
}
m_xsltArg.AddParam("myArg2", szEmpty, obj + "1");
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
if (retObj.ToString() != ("Test1"))
Assert.True(false);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(458.7752486264) == 1))
return;
else
Assert.True(false);
}
//[Variation("Whitespace in URI and param")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddParam17()
{
int i = 1;
int errCount = 0;
m_xsltArg = new XsltArgumentList();
foreach (String str in szWhiteSpace)
{
try
{
m_xsltArg.AddParam("myArg" + i, szEmpty, "Test" + str);
}
catch (System.Xml.XmlException)
{
_output.WriteLine("Improperly reported an exception for a whitespace value");
Assert.True(false);
}
i++;
}
foreach (String str in szWhiteSpace)
{
try
{
m_xsltArg.AddParam("myArg" + str, szEmpty, "Test");
}
catch (System.Xml.XmlException)
{
errCount++;
}
finally
{
errCount--;
}
}
if (errCount != 0)
{
_output.WriteLine("At least one whitespace test failed.");
Assert.True(false);
}
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(420.7138852814) == 1))
return;
else
Assert.True(false);
}
//[Variation("Adding many objects")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddParam18()
{
m_xsltArg = new XsltArgumentList();
String obj = "Test";
for (int i = 1; i < 7; i++)
{
m_xsltArg.AddParam("myArg" + +i, szEmpty, obj + i);
retObj = m_xsltArg.GetParam("myArg" + i, szEmpty);
if (retObj.ToString() != ("Test" + i))
Assert.True(false);
}
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(413.6341271694) == 1))
return;
else
Assert.True(false);
}
//[Variation("Add same object many times")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddParam19()
{
m_xsltArg = new XsltArgumentList();
String obj = "Test";
for (int i = 0; i < 300; i++)
{
m_xsltArg.AddParam("myArg" + i, szEmpty, obj + "1");
retObj = m_xsltArg.GetParam("myArg" + i, szEmpty);
if (retObj.ToString() != ("Test" + "1"))
{
_output.WriteLine("Failed to add {0}", "myArg" + i);
Assert.True(false);
}
m_xsltArg.RemoveParam("myArg" + i, szEmpty);
}
m_xsltArg.AddParam("myArg2", szEmpty, "Test1");
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
if (retObj.ToString() != ("Test1"))
Assert.True(false);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(458.7752486264) == 1))
return;
else
Assert.True(false);
}
//[Variation("Using Different XSLT namespace")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddParam20()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", "urn:" + szXslNS, "Test1");
retObj = m_xsltArg.GetParam("myArg1", "urn:" + szXslNS);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test1", retObj);
if (retObj.ToString() != "Test1")
Assert.True(false);
m_xsltArg.AddParam("myArg2", "urn:tmp", "Test2");
retObj = m_xsltArg.GetParam("myArg2", "urn:tmp");
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test2", retObj);
if (retObj.ToString() != "Test2")
Assert.True(false);
m_xsltArg.AddParam("myArg3", "urn:my-object", "Test3");
retObj = m_xsltArg.GetParam("myArg3", "urn:my-object");
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test3", retObj);
if (retObj.ToString() != "Test3")
Assert.True(false);
m_xsltArg.AddParam("myArg4", "urn:MY-OBJECT", "Test4");
retObj = m_xsltArg.GetParam("myArg4", "urn:MY-OBJECT");
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test4", retObj);
if (retObj.ToString() != "Test4")
Assert.True(false);
if ((LoadXSL("showParamNS.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(509.315418596) == 1))
return;
else
Assert.True(false);
}
//[Variation("Using Default XSLT namespace - Bug305503")]
[InlineData()]
[Theory]
public void AddParam21()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szXslNS, "Test1");
return;
}
//[Variation("Parameters should not be cached")]
[InlineData()]
[Theory]
public void AddExtObject32()
{
if (LoadXSL("test_Param.xsl") == 1)
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myParam1", szEmpty, "first");
// Transform once
if ((Transform_ArgList("foo.xml") == 1) && (CheckResult(383.6292620645) == 1))
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myParam1", szEmpty, "second");
// Transform again to make sure that parameter from first transform are not cached
if ((Transform_ArgList("foo.xml") == 1) && (CheckResult(384.9801823644) == 1))
return;
}
}
Assert.True(false);
}
}
/***************************************************************/
/* XsltArgumentList.AddParam Misc Tests */
/*Bug 268515 - Global param value is overridden by local value */
/***************************************************************/
//Testcases with Reader outputs are skipped because they don't write to an output file
//[TestCase(Name = "XsltArgumentList - AddParam Misc : Reader, Stream", Desc = "READER,STREAM")]
//[TestCase(Name = "XsltArgumentList - AddParam Misc : Reader, Writer", Desc = "READER,WRITER")]
//[TestCase(Name = "XsltArgumentList - AddParam Misc : Reader, TextWriter", Desc = "READER,TEXTWRITER")]
//[TestCase(Name = "XsltArgumentList - AddParam Misc : URI, Stream", Desc = "URI,STREAM")]
//[TestCase(Name = "XsltArgumentList - AddParam Misc : URI, Writer", Desc = "URI,WRITER")]
//[TestCase(Name = "XsltArgumentList - AddParam Misc : URI, TextWriter", Desc = "URI,TEXTWRITER")]
//[TestCase(Name = "XsltArgumentList - AddParam Misc : Navigator, Stream", Desc = "NAVIGATOR,STREAM")]
//[TestCase(Name = "XsltArgumentList - AddParam Misc : Navigator, Writer", Desc = "NAVIGATOR,WRITER")]
//[TestCase(Name = "XsltArgumentList - AddParam Misc : Navigator, TextWriter", Desc = "NAVIGATOR,TEXTWRITER")]
public class CArgAddParamMisc : XsltApiTestCaseBase
{
private ITestOutputHelper _output;
public CArgAddParamMisc(ITestOutputHelper output) : base(output)
{
_output = output;
}
//All the below variations, there is no parameter sent and default global value is set
//global param is xsl:param local param is xsl:param
//[Variation(id = 1, Pri = 2, Desc = "No param sent, global param used, local param exists with a default value", Params = new object[] { "AddParameterA1.xsl", "default local" })]
[InlineData("AddParameterA1.xsl", "default local")]
//[Variation(id = 2, Pri = 2, Desc = "No param sent, global param used, local param exists with no default value", Params = new object[] { "AddParameterA2.xsl", "" })]
[InlineData("AddParameterA2.xsl", "")]
//[Variation(id = 3, Pri = 2, Desc = "No param sent, global param used, local param doesn't exist but reference to param exists", Params = new object[] { "AddParameterA3.xsl", "default global" })]
[InlineData("AddParameterA3.xsl", "default global")]
//[Variation(id = 4, Pri = 2, Desc = "No param sent, global param used, local param exists with a default value and with-param sends a value", Params = new object[] { "AddParameterA4.xsl", "with-param" })]
[InlineData("AddParameterA4.xsl", "with-param")]
//[Variation(id = 5, Pri = 2, Desc = "No param sent, global param used, local param exists with no default value and with-param doesn't send a value", Params = new object[] { "AddParameterA5.xsl", "" })]
[InlineData("AddParameterA5.xsl", "")]
//[Variation(id = 6, Pri = 2, Desc = "No param sent, global param used, local param doesn't exist, reference to param, with-param sends a value", Params = new object[] { "AddParameterA6.xsl", "default global" })]
[InlineData("AddParameterA6.xsl", "default global")]
//[Variation(id = 7, Pri = 2, Desc = "No param sent, global param used, local param doesn't exist, reference to param, with-param sends no value", Params = new object[] { "AddParameterA7.xsl", "default global" })]
[InlineData("AddParameterA7.xsl", "default global")]
//global param is xsl:variable local param is xsl:param
//[Variation(id = 8, Pri = 2, Desc = "No param sent, global variable used, local param exists with a default value", Params = new object[] { "AddParameterDA1.xsl", "default local" })]
[InlineData("AddParameterDA1.xsl", "default local")]
//[Variation(id = 9, Pri = 2, Desc = "No param sent, global variable used, local param exists with no default value", Params = new object[] { "AddParameterDA2.xsl", "" })]
[InlineData("AddParameterDA2.xsl", "")]
//[Variation(id = 10, Pri = 2, Desc = "No param sent, global variable used, local param doesn't exist but reference to param exists", Params = new object[] { "AddParameterDA3.xsl", "default global" })]
[InlineData("AddParameterDA3.xsl", "default global")]
//[Variation(id = 11, Pri = 2, Desc = "No param sent, global variable used, local param exists with a default value and with-param sends a value", Params = new object[] { "AddParameterDA4.xsl", "with-param" })]
[InlineData("AddParameterDA4.xsl", "with-param")]
//[Variation(id = 12, Pri = 2, Desc = "No param sent, global variable used, local param exists with no default value and with-param doesn't send a value", Params = new object[] { "AddParameterDA5.xsl", "" })]
[InlineData("AddParameterDA5.xsl", "")]
//[Variation(id = 13, Pri = 2, Desc = "No param sent, global variable used, local param doesn't exist, reference to param, with-param sends a value", Params = new object[] { "AddParameterDA6.xsl", "default global" })]
[InlineData("AddParameterDA6.xsl", "default global")]
//[Variation(id = 14, Pri = 2, Desc = "No param sent, global variable used, local param doesn't exist, reference to param, with-param sends no value", Params = new object[] { "AddParameterDA7.xsl", "default global" })]
[InlineData("AddParameterDA7.xsl", "default global")]
//global param is xsl:param local param is xsl:variable
//[Variation(id = 15, Pri = 2, Desc = "No param sent, global param used, local variable exists with a default value", Params = new object[] { "AddParameterEA1.xsl", "default local" })]
[InlineData("AddParameterEA1.xsl", "default local")]
//[Variation(id = 16, Pri = 2, Desc = "No param sent, global param used, local variable exists with no default value", Params = new object[] { "AddParameterEA2.xsl", "" })]
[InlineData("AddParameterEA2.xsl", "")]
//[Variation(id = 17, Pri = 2, Desc = "No param sent, global param used, local variable doesn't exist but reference to param exists", Params = new object[] { "AddParameterEA3.xsl", "default global" })]
[InlineData("AddParameterEA3.xsl", "default global")]
//[Variation(id = 18, Pri = 2, Desc = "No param sent, global param used, local variable exists with a default value and with-param sends a value", Params = new object[] { "AddParameterEA4.xsl", "default local" })]
[InlineData("AddParameterEA4.xsl", "default local")]
//[Variation(id = 19, Pri = 2, Desc = "No param sent, global param used, local variable exists with no default value and with-param doesn't send a value", Params = new object[] { "AddParameterEA5.xsl", "" })]
[InlineData("AddParameterEA5.xsl", "")]
//[Variation(id = 20, Pri = 2, Desc = "No param sent, global param used, local variable doesn't exist, reference to param, with-param sends a value", Params = new object[] { "AddParameterEA6.xsl", "default global" })]
[InlineData("AddParameterEA6.xsl", "default global")]
//[Variation(id = 21, Pri = 2, Desc = "No param sent, global param used, local variable doesn't exist, reference to param, with-param sends no value", Params = new object[] { "AddParameterEA7.xsl", "default global" })]
[InlineData("AddParameterEA7.xsl", "default global")]
//global param is xsl:variable local param is xsl:variable
//[Variation(id = 22, Pri = 2, Desc = "No param sent, global variable used, local variable exists with a default value", Params = new object[] { "AddParameterFA1.xsl", "default local" })]
[InlineData("AddParameterFA1.xsl", "default local")]
//[Variation(id = 23, Pri = 2, Desc = "No param sent, global variable used, local variable exists with no default value", Params = new object[] { "AddParameterFA2.xsl", "" })]
[InlineData("AddParameterFA2.xsl", "")]
//[Variation(id = 24, Pri = 2, Desc = "No param sent, global variable used, local variable doesn't exist but reference to param exists", Params = new object[] { "AddParameterFA3.xsl", "default global" })]
[InlineData("AddParameterFA3.xsl", "default global")]
//[Variation(id = 25, Pri = 2, Desc = "No param sent, global variable used, local variable exists with a default value and with-param sends a value", Params = new object[] { "AddParameterFA4.xsl", "default local" })]
[InlineData("AddParameterFA4.xsl", "default local")]
//[Variation(id = 26, Pri = 2, Desc = "No param sent, global variable used, local variable exists with no default value and with-param doesn't send a value", Params = new object[] { "AddParameterFA5.xsl", "" })]
[InlineData("AddParameterFA5.xsl", "")]
//[Variation(id = 27, Pri = 2, Desc = "No param sent, global variable used, local variable doesn't exist, reference to param, with-param sends a value", Params = new object[] { "AddParameterFA6.xsl", "default global" })]
[InlineData("AddParameterFA6.xsl", "default global")]
//[Variation(id = 28, Pri = 2, Desc = "No param sent, global variable used, local variable doesn't exist, reference to param, with-param sends no value", Params = new object[] { "AddParameterFA7.xsl", "default global" })]
[InlineData("AddParameterFA7.xsl", "default global")]
[Theory]
public void AddParam1(object param0, object param1)
{
m_xsltArg = new XsltArgumentList();
string xslFile = param0.ToString();
string expected = "" + param1.ToString() + "";
if ((LoadXSL(xslFile) == 1) && (Transform_ArgList("AddParameter.xml") == 1))
VerifyResult(expected);
else
Assert.True(false);
}
//All the below variations, param is sent from client code
//global param is xsl:param local param is xsl:param
//[Variation(id = 29, Pri = 2, Desc = "Param sent, global param used, local param exists with a default value", Params = new object[] { "AddParameterB1.xsl", "default local" })]
[InlineData("AddParameterB1.xsl", "default local")]
//[Variation(id = 30, Pri = 2, Desc = "Param sent, global param used, local param exists with no default value", Params = new object[] { "AddParameterB2.xsl", "" })]
[InlineData("AddParameterB2.xsl", "")]
//[Variation(id = 31, Pri = 2, Desc = "Param sent, global param used, local param doesn't exist but reference to param exists", Params = new object[] { "AddParameterB3.xsl", "outside param" })]
[InlineData("AddParameterB3.xsl", "outside param")]
//[Variation(id = 32, Pri = 2, Desc = "Param sent, global param used, local param exists with a default value and with-param sends a value", Params = new object[] { "AddParameterB4.xsl", "with-param" })]
[InlineData("AddParameterB4.xsl", "with-param")]
//[Variation(id = 33, Pri = 2, Desc = "Param sent, global param used, local param exists with no default value and with-param doesn't send a value", Params = new object[] { "AddParameterB5.xsl", "" })]
[InlineData("AddParameterB5.xsl", "")]
//[Variation(id = 34, Pri = 2, Desc = "Param sent, global param used, local param doesn't exist, reference to param, with-param sends a value", Params = new object[] { "AddParameterB6.xsl", "outside param" })]
[InlineData("AddParameterB6.xsl", "outside param")]
//[Variation(id = 35, Pri = 2, Desc = "Param sent, global param used, local param doesn't exist, reference to param, with-param sends no value", Params = new object[] { "AddParameterB7.xsl", "outside param" })]
[InlineData("AddParameterB7.xsl", "outside param")]
//global param is xsl:variable local param is xsl:param
//[Variation(id = 36, Pri = 2, Desc = "Param sent, global variable used, local param exists with a default value", Params = new object[] { "AddParameterDB1.xsl", "default local" })]
[InlineData("AddParameterDB1.xsl", "default local")]
//[Variation(id = 37, Pri = 2, Desc = "Param sent, global variable used, local param exists with no default value", Params = new object[] { "AddParameterDB2.xsl", "" })]
[InlineData("AddParameterDB2.xsl", "")]
//[Variation(id = 38, Pri = 2, Desc = "Param sent, global variable used, local param doesn't exist but reference to param exists", Params = new object[] { "AddParameterDB3.xsl", "default global" })]
[InlineData("AddParameterDB3.xsl", "default global")]
//[Variation(id = 39, Pri = 2, Desc = "Param sent, global variable used, local param exists with a default value and with-param sends a value", Params = new object[] { "AddParameterDB4.xsl", "with-param" })]
[InlineData("AddParameterDB4.xsl", "with-param")]
//[Variation(id = 40, Pri = 2, Desc = "Param sent, global variable used, local param exists with no default value and with-param doesn't send a value", Params = new object[] { "AddParameterDB5.xsl", "" })]
[InlineData("AddParameterDB5.xsl", "")]
//[Variation(id = 41, Pri = 2, Desc = "Param sent, global variable used, local param doesn't exist, reference to param, with-param sends a value", Params = new object[] { "AddParameterDB6.xsl", "default global" })]
[InlineData("AddParameterDB6.xsl", "default global")]
//[Variation(id = 42, Pri = 2, Desc = "Param sent, global variable used, local param doesn't exist, reference to param, with-param sends no value", Params = new object[] { "AddParameterDB7.xsl", "default global" })]
[InlineData("AddParameterDB7.xsl", "default global")]
//global param is xsl:param local param is xsl:variable
//[Variation(id = 43, Pri = 2, Desc = "Param sent, global param used, local variable exists with a default value", Params = new object[] { "AddParameterEB1.xsl", "default local" })]
[InlineData("AddParameterEB1.xsl", "default local")]
//[Variation(id = 44, Pri = 2, Desc = "Param sent, global param used, local variable exists with no default value", Params = new object[] { "AddParameterEB2.xsl", "" })]
[InlineData("AddParameterEB2.xsl", "")]
//[Variation(id = 45, Pri = 2, Desc = "Param sent, global param used, local variable doesn't exist but reference to param exists", Params = new object[] { "AddParameterEB3.xsl", "outside param" })]
[InlineData("AddParameterEB3.xsl", "outside param")]
//[Variation(id = 46, Pri = 2, Desc = "Param sent, global param used, local variable exists with a default value and with-param sends a value", Params = new object[] { "AddParameterEB4.xsl", "default local" })]
[InlineData("AddParameterEB4.xsl", "default local")]
//[Variation(id = 47, Pri = 2, Desc = "Param sent, global param used, local variable exists with no default value and with-param doesn't send a value", Params = new object[] { "AddParameterEB5.xsl", "" })]
[InlineData("AddParameterEB5.xsl", "")]
//[Variation(id = 48, Pri = 2, Desc = "Param sent, global param used, local variable doesn't exist, reference to param, with-param sends a value", Params = new object[] { "AddParameterEB6.xsl", "outside param" })]
[InlineData("AddParameterEB6.xsl", "outside param")]
//[Variation(id = 49, Pri = 2, Desc = "Param sent, global param used, local variable doesn't exist, reference to param, with-param sends no value", Params = new object[] { "AddParameterEB7.xsl", "outside param" })]
[InlineData("AddParameterEB7.xsl", "outside param")]
//global param is xsl:variable local param is xsl:variable
//[Variation(id = 50, Pri = 2, Desc = "Param sent, global variable used, local variable exists with a default value", Params = new object[] { "AddParameterFB1.xsl", "default local" })]
[InlineData("AddParameterFB1.xsl", "default local")]
//[Variation(id = 51, Pri = 2, Desc = "Param sent, global variable used, local variable exists with no default value", Params = new object[] { "AddParameterFB2.xsl", "" })]
[InlineData("AddParameterFB2.xsl", "")]
//[Variation(id = 52, Pri = 2, Desc = "Param sent, global variable used, local variable doesn't exist but reference to param exists", Params = new object[] { "AddParameterFB3.xsl", "default global" })]
[InlineData("AddParameterFB3.xsl", "default global")]
//[Variation(id = 53, Pri = 2, Desc = "Param sent, global variable used, local variable exists with a default value and with-param sends a value", Params = new object[] { "AddParameterFB4.xsl", "default local" })]
[InlineData("AddParameterFB4.xsl", "default local")]
//[Variation(id = 54, Pri = 2, Desc = "Param sent, global variable used, local variable exists with no default value and with-param doesn't send a value", Params = new object[] { "AddParameterFB5.xsl", "" })]
[InlineData("AddParameterFB5.xsl", "")]
//[Variation(id = 55, Pri = 2, Desc = "Param sent, global variable used, local variable doesn't exist, reference to param, with-param sends a value", Params = new object[] { "AddParameterFB6.xsl", "default global" })]
[InlineData("AddParameterFB6.xsl", "default global")]
//[Variation(id = 56, Pri = 2, Desc = "Param sent, global variable used, local variable doesn't exist, reference to param, with-param sends no value", Params = new object[] { "AddParameterFB7.xsl", "default global" })]
[InlineData("AddParameterFB7.xsl", "default global")]
[Theory]
public void AddParam2(object param0, object param1)
{
string xslFile = param0.ToString();
string expected = "" + param1.ToString() + "";
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("param1", "", "outside param");
if ((LoadXSL(xslFile) == 1) && (Transform_ArgList("AddParameter.xml") == 1))
VerifyResult(expected);
else
Assert.True(false);
}
//All the below variations, empty param is sent from client code
//global param is xsl:param local param is xsl:param
//[Variation(id = 57, Pri = 2, Desc = "Param sent, global param used, local param exists with a default value", Params = new object[] { "AddParameterB1.xsl", "default local" })]
[InlineData("AddParameterB1.xsl", "default local")]
//[Variation(id = 58, Pri = 2, Desc = "Param sent, global param used, local param exists with no default value", Params = new object[] { "AddParameterB2.xsl", "" })]
[InlineData("AddParameterB2.xsl", "")]
//[Variation(id = 59, Pri = 2, Desc = "Param sent, global param used, local param doesn't exist but reference to param exists", Params = new object[] { "AddParameterB3.xsl", "" })]
[InlineData("AddParameterB3.xsl", "")]
//[Variation(id = 60, Pri = 2, Desc = "Param sent, global param used, local param exists with a default value and with-param sends a value", Params = new object[] { "AddParameterB4.xsl", "with-param" })]
[InlineData("AddParameterB4.xsl", "with-param")]
//[Variation(id = 61, Pri = 2, Desc = "Param sent, global param used, local param exists with no default value and with-param doesn't send a value", Params = new object[] { "AddParameterB5.xsl", "" })]
[InlineData("AddParameterB5.xsl", "")]
//[Variation(id = 62, Pri = 2, Desc = "Param sent, global param used, local param doesn't exist, reference to param, with-param sends a value", Params = new object[] { "AddParameterB6.xsl", "" })]
[InlineData("AddParameterB6.xsl", "")]
//[Variation(id = 63, Pri = 2, Desc = "Param sent, global param used, local param doesn't exist, reference to param, with-param sends no value", Params = new object[] { "AddParameterB7.xsl", "" })]
[InlineData("AddParameterB7.xsl", "")]
[Theory]
public void AddParam3(object param0, object param1)
{
string xslFile = param0.ToString();
string expected = "" + param1.ToString() + "";
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("param1", "", "");
if ((LoadXSL(xslFile) == 1) && (Transform_ArgList("AddParameter.xml") == 1))
VerifyResult(expected);
else
Assert.True(false);
}
}
/***********************************************************/
/* XsltArgumentList.AddExtensionObject */
/***********************************************************/
//[TestCase(Name = "XsltArgumentList - AddExtensionObject : Reader , Reader", Desc = "READER,READER")]
//[TestCase(Name = "XsltArgumentList - AddExtensionObject : Reader, Stream", Desc = "READER,STREAM")]
//[TestCase(Name = "XsltArgumentList - AddExtensionObject : Reader, Writer", Desc = "READER,WRITER")]
//[TestCase(Name = "XsltArgumentList - AddExtensionObject : Reader, TextWriter", Desc = "READER,TEXTWRITER")]
// TODO: Fix security issue
////[TestCase(Name="XsltArgumentList - AddExtensionObject : URI, Reader", Desc="URI,READER")]
////[TestCase(Name="XsltArgumentList - AddExtensionObject : URI, Stream", Desc="URI,STREAM")]
////[TestCase(Name="XsltArgumentList - AddExtensionObject : URI, Writer", Desc="URI,WRITER")]
////[TestCase(Name="XsltArgumentList - AddExtensionObject : URI, TextWriter", Desc="URI,TEXTWRITER")]
//[TestCase(Name = "XsltArgumentList - AddExtensionObject : Navigator, Reader", Desc = "NAVIGATOR,READER")]
//[TestCase(Name = "XsltArgumentList - AddExtensionObject : Navigator, Stream", Desc = "NAVIGATOR,STREAM")]
//[TestCase(Name = "XsltArgumentList - AddExtensionObject : Navigator, Writer", Desc = "NAVIGATOR,WRITER")]
//[TestCase(Name = "XsltArgumentList - AddExtensionObject : Navigator, TextWriter", Desc = "NAVIGATOR,TEXTWRITER")]
public class CArgAddExtObj : XsltApiTestCaseBase
{
private ITestOutputHelper _output;
public CArgAddExtObj(ITestOutputHelper output) : base(output)
{
_output = output;
}
//[Variation(Desc = "Basic Verification Test", Pri = 0)]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddExtObject1()
{
MyObject obj = new MyObject(1, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
if ((LoadXSL("MyObjectDef.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(430.402026847) == 1))
return;
else
Assert.True(false);
}
//[Variation("namespace System.Xml.Tests = null")]
[InlineData()]
[Theory]
public void AddExtObject2()
{
MyObject obj = new MyObject(2, _output);
m_xsltArg = new XsltArgumentList();
try
{
m_xsltArg.AddExtensionObject(null, obj);
}
catch (System.ArgumentNullException)
{
return;
}
_output.WriteLine("System.ArgumentNullException not generated for null namespace System.Xml.Tests");
Assert.True(false);
}
//[Variation("namespace System.Xml.Tests is empty string - Bug 200998")]
[InlineData()]
[Theory]
public void AddExtObject3()
{
MyObject obj = new MyObject(3, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szEmpty, obj);
return; //shouldn't throw exception as per bug 200998
}
//[Variation("Very long namespace System.Xml.Tests")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddExtObject4()
{
m_xsltArg = new XsltArgumentList();
MyObject obj = new MyObject(4, _output);
m_xsltArg.AddExtensionObject(szLongNS, obj);
if ((LoadXSL("MyObjectLongNS.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(522.0563223871) == 1))
return;
else
Assert.True(false);
}
//[Variation("Different Data Types")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddExtObject6()
{
m_xsltArg = new XsltArgumentList();
String obj = "0.00";
// string
m_xsltArg.AddExtensionObject("myArg1", obj);
retObj = m_xsltArg.GetExtensionObject("myArg1");
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "0.00", retObj);
if (retObj.ToString() != "0.00")
{
_output.WriteLine("Failed to add/get a value for {0} of type {1}", "0.00", "string");
_output.WriteLine("Retrieved: {0} ", retObj);
Assert.True(false);
}
int i = 8;
m_xsltArg.AddExtensionObject("myArg2", i);
retObj = m_xsltArg.GetExtensionObject("myArg2");
_output.WriteLine("Added Value:{0}\nRetrieved Value:{1}", i, retObj);
if (!i.Equals(retObj))
{
_output.WriteLine("Failed to add/get a value for {0} with conversion from int to double", i);
_output.WriteLine("Retrieved: {0}", retObj.ToString());
Assert.True(false);
}
//must also be same instance!!!
if (i != (int)retObj)
Assert.True(false);
Boolean bF = (1 == 0);
m_xsltArg.AddExtensionObject("myArg3", bF);
retObj = m_xsltArg.GetExtensionObject("myArg3");
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", bF.ToString(), retObj);
if (!bF.Equals(retObj))
{
_output.WriteLine("Failed to add/get a value for {0} of type {1}", bF.ToString(), "boolean");
_output.WriteLine("Retrieved: {0} ", retObj);
Assert.True(false);
}
Boolean bT = (1 == 1);
m_xsltArg.AddExtensionObject("myArg4", bT);
retObj = m_xsltArg.GetExtensionObject("myArg4");
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", bT.ToString(), retObj);
if (!bT.Equals(retObj))
{
_output.WriteLine("Failed to add/get a value for {0} of type {1}", bT.ToString(), "boolean");
_output.WriteLine("Retrieved: {0} ", retObj);
Assert.True(false);
}
double d = 3.14;
m_xsltArg.AddExtensionObject("myArg5", d);
retObj = m_xsltArg.GetExtensionObject("myArg5");
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", d.ToString(), retObj);
if (!d.Equals(retObj))
{
_output.WriteLine("Failed to add/get a value for {0} of type {1}", bT.ToString(), "boolean");
_output.WriteLine("Retrieved: {0} ", retObj);
Assert.True(false);
}
m_xsltArg.AddExtensionObject("myArg6", "3");
retObj = m_xsltArg.GetExtensionObject("myArg6");
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", bT.ToString(), retObj);
if ((LoadXSL("MyObject_DataTypes.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(499.4069850096) == 1))
return;
else
Assert.True(false);
}
//[Variation("Same Namespace different objects")]
[InlineData()]
[Theory]
public void AddExtObject7()
{
MyObject obj1 = new MyObject(1, _output);
MyObject obj2 = new MyObject(2, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj1);
try
{
m_xsltArg.AddExtensionObject(szDefaultNS, obj2);
}
catch (System.ArgumentException)
{
return;
}
_output.WriteLine("Did not launch exception 'System.ArgumentException' for an item already added");
Assert.True(false);
}
//[Variation("Case sensitivity")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddExtObject8()
{
MyObject obj = new MyObject(1, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject("urn:my-object", obj);
retObj = m_xsltArg.GetExtensionObject("urn:my-object");
if (((MyObject)retObj).MyValue() != obj.MyValue())
{
_output.WriteLine("Set and retrieved value appear to be different");
Assert.True(false);
}
m_xsltArg.AddExtensionObject("URN:MY-OBJECT", obj);
m_xsltArg.AddExtensionObject("urn:My-Object", obj);
m_xsltArg.AddExtensionObject("urn-my:object", obj);
if ((LoadXSL("MyObjectDef.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(430.402026847) == 1))
return;
else
Assert.True(false);
}
//[Variation("Set a null object")]
[InlineData()]
[Theory]
public void AddExtObject9()
{
MyObject obj = new MyObject(9, _output);
m_xsltArg = new XsltArgumentList();
try
{
m_xsltArg.AddExtensionObject(szDefaultNS, null);
}
catch (System.ArgumentNullException)
{
return;
}
_output.WriteLine("Did not launch exception 'System.ArgumentNullException' for adding a null-valued item");
Assert.True(false);
}
//[Variation("Unitialized and NULL return values from the methods in the extension object")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddExtObject10()
{
MyObject obj = new MyObject(10, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
if ((LoadXSL("MyObject_Null.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(424.8906559839) == 1))
return;
else
Assert.True(false);
}
//[Variation("Add many objects")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddExtObject11()
{
m_xsltArg = new XsltArgumentList();
MyObject obj1 = new MyObject(100, _output);
m_xsltArg.AddExtensionObject(szDefaultNS, obj1);
for (int i = 1; i < 500; i++)
{
MyObject obj = new MyObject(i, _output);
m_xsltArg.AddExtensionObject(szDefaultNS + i, obj);
}
if ((LoadXSL("MyObjectDef.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(430.402026847) == 1))
return;
else
Assert.True(false);
}
//[Variation("Whitespace")]
[InlineData()]
[Theory]
public void AddExtObject12()
{
int i = 1;
m_xsltArg = new XsltArgumentList();
foreach (String str in szWhiteSpace)
{
MyObject obj = new MyObject(i, _output);
m_xsltArg.AddExtensionObject(szDefaultNS + str, obj);
i++;
}
try
{
if ((LoadXSL("MyObjectDef.xsl") == 1))
Transform_ArgList("fruits.xml", true);
}
catch (System.Xml.Xsl.XsltException)
{
return;
}
_output.WriteLine("Did not throw expected exception");
Assert.True(false);
}
//[Variation("Add object many times")]
[InlineData()]
[Theory]
public void AddExtObject13()
{
MyObject obj = new MyObject(13, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
try
{
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
}
catch (System.ArgumentException)
{
return;
}
_output.WriteLine("Did not exception for adding an extension object that already exists");
Assert.True(false);
}
//[Variation("Add and Remove multiple times")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddExtObject14()
{
MyObject obj = new MyObject(14, _output);
m_xsltArg = new XsltArgumentList();
for (int i = 0; i < 400; i++)
{
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
m_xsltArg.RemoveExtensionObject(szDefaultNS);
}
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
if ((LoadXSL("MyObjectDef.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(430.402026847) == 1))
return;
else
Assert.True(false);
}
//[Variation("Namespace URI non-existent")]
[InlineData()]
[Theory]
public void AddExtObject15()
{
MyObject obj = new MyObject(15, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szSimple, obj);
try
{
if ((LoadXSL("MyObjectDef.xsl") == 1))
Transform_ArgList("fruits.xml", true);
}
catch (System.Xml.Xsl.XsltException)
{
return;
}
_output.WriteLine("Did not throw expected exception");
Assert.True(false);
}
//[Variation("Accessing Private and protected Items")]
[InlineData()]
[Theory]
public void AddExtObject16()
{
MyObject obj = new MyObject(1, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
try
{
LoadXSL("MyObject_PrivateAccess.xsl");
Transform_ArgList("fruits.xml", true);
}
catch (System.Xml.Xsl.XsltException)
{
try
{
LoadXSL("MyObject_ProtectedAccess.xsl");
Transform_ArgList("fruits.xml", true);
}
catch (System.Xml.Xsl.XsltException)
{
try
{
LoadXSL("MyObject_DefaultAccess.xsl");
Transform_ArgList("fruits.xml", true);
}
catch (System.Xml.Xsl.XsltException)
{
return;
}
}
}
Assert.True(false);
}
//[Variation("Writing To Output")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddExtObject17()
{
MyObject obj = new MyObject(17, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
if ((LoadXSL("MyObject_ConsoleWrite.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(421.8660259804) == 1))
return;
else
Assert.True(false);
}
//[Variation("Recursive Functions")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddExtObject18()
{
MyObject obj = new MyObject(18, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
if ((LoadXSL("MyObject_Recursion.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(459.4210605285) == 1))
return;
else
Assert.True(false);
}
//[Variation("Overloaded Functions")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddExtObject19()
{
MyObject obj = new MyObject(19, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
if ((LoadXSL("MyObject_Overloads.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(481.1053900491) == 1))
return;
else
Assert.True(false);
}
//[Variation("Function-exists tests")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddExtObject20()
{
MyObject obj = new MyObject(20, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
if ((LoadXSL("MyObject_FnExists.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(534.2681508201) == 1))
return;
else
Assert.True(false);
}
//[Variation("Argument Tests")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddExtObject21()
{
MyObject obj = new MyObject(1, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
if ((LoadXSL("MyObject_Arguments.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(513.296131727) == 1))
return;
else
Assert.True(false);
}
//[Variation("Methods returning void and valid types")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddExtObject22()
{
MyObject obj = new MyObject(22, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
if ((LoadXSL("MyObject_ReturnValidTypes.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(514.0958814743) == 1))
return;
else
Assert.True(false);
}
//[Variation("Multiple Objects in same NameSpace")]
[InlineData()]
[Theory]
public void AddExtObject24()
{
m_xsltArg = new XsltArgumentList();
double d = 1;
int i = 1;
m_xsltArg.AddExtensionObject("urn:myspace", d);
try
{
m_xsltArg.AddExtensionObject("urn:myspace", i);
}
catch (System.ArgumentException)
{
return;
}
_output.WriteLine("Exception not thrown for URI namespace System.Xml.Tests in use");
Assert.True(false);
}
//[Variation("Case Sensitivity")]
[InlineData()]
[Theory]
public void AddExtObject25()
{
MyObject obj = new MyObject(25, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
if (LoadXSL("MyObject_CaseSensitive.xsl") == 1)
{
try
{
Transform_ArgList("fruits.xml");
CheckResult(419.3031944636);
}
catch (System.Xml.Xsl.XsltException)
{
return;
}
}
_output.WriteLine("Exception not thrown for wrong-case spelling of methods");
Assert.True(false);
}
//[Variation("Object namespace System.Xml.Tests found")]
[InlineData()]
[Theory]
public void AddExtObject26()
{
MyObject obj = new MyObject(26, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
if ((LoadXSL("MyObject_NotFoundNS.xsl") == 1))
{
try
{
Transform_ArgList("fruits.xml", true);
}
catch (System.Xml.Xsl.XsltException)
{
return;
}
}
_output.WriteLine("Exception not thrown for NS not found");
Assert.True(false);
}
//[Variation("Maintaining State")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddExtObject27()
{
MyObject obj = new MyObject(27, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
if ((LoadXSL("MyObject_KeepingState.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(439.7536748395) == 1))
return;
else
Assert.True(false);
}
//[Variation("Deliberately Messing Up the Stylesheet")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddExtObject28()
{
MyObject obj = new MyObject(28, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
if ((LoadXSL("MyObject_KillerStrings.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(495.5795381156) == 1 || CheckResult(503.3730396353) == 1)) //multiple baseline
return;
else
Assert.True(false);
}
//[Variation("Function not found in Object")]
[InlineData()]
[Theory]
public void AddExtObject29()
{
MyObject obj = new MyObject(29, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
if ((LoadXSL("MyObject_NotFound.xsl") == 1))
{
try
{
Transform_ArgList("fruits.xml", true);
}
catch (System.Xml.Xsl.XsltException)
{
return;
}
}
_output.WriteLine("Exception not thrown for method not found");
Assert.True(false);
}
//[Variation("Using Default XSLT namespace - Bug305503")]
[InlineData()]
[Theory]
public void AddExtObject31()
{
MyObject obj = new MyObject(31, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szXslNS, obj);
return;
}
//[Variation("Extension objects should not be cached during Transform()")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void AddExtObject32()
{
if (LoadXSL("Bug78587.xsl") == 1)
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject("id", new Id("first"));
m_xsltArg.AddExtensionObject("capitalizer", new Capitalizer());
// Transform once
if ((Transform_ArgList("Bug78587.xml") == 1) && (CheckResult(438.9506396879) == 1))
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject("id", new Id("second"));
m_xsltArg.AddExtensionObject("capitalizer", new Capitalizer());
// Transform again to make sure that extension objects from first transform are not cached
if ((Transform_ArgList("Bug78587.xml") == 1) && (CheckResult(440.0296788876) == 1))
return;
}
}
Assert.True(false);
}
}
/***********************************************************/
/* XsltArgumentList.RemoveParam */
/***********************************************************/
//[TestCase(Name = "XsltArgumentList - RemoveParam : Reader , Reader", Desc = "READER,READER")]
// TODO: Fix security issue
////[TestCase(Name="XsltArgumentList - RemoveParam : URI, Stream", Desc="URI,STREAM")]
//[TestCase(Name = "XsltArgumentList - RemoveParam : Navigator, Writer", Desc = "NAVIGATOR,WRITER")]
//[TestCase(Name = "XsltArgumentList - RemoveParam : Navigator, TextWriter", Desc = "NAVIGATOR,TEXTWRITER")]
public class CArgRemoveParam : XsltApiTestCaseBase
{
private ITestOutputHelper _output;
public CArgRemoveParam(ITestOutputHelper output) : base(output)
{
_output = output;
}
//[Variation(Desc = "Basic Verification Test", Pri = 0)]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void RemoveParam1()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test2");
m_xsltArg.RemoveParam("myArg1", szEmpty);
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
if (retObj != null)
{
_output.WriteLine("Value of Removed Object is not null : {0}", retObj);
Assert.True(false);
}
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
_output.WriteLine("Added Value:{0}\nRetrieved Value: {1}", "Test1", retObj);
if (retObj.ToString() != "Test1")
{
_output.WriteLine("Value of removed object is not as expected : {0}", retObj);
Assert.True(false);
}
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(457.6003003605) == 1))
return;
else
Assert.True(false);
}
//[Variation("Param name is null")]
[InlineData()]
[Theory]
public void RemoveParam2()
{
m_xsltArg = new XsltArgumentList();
retObj = m_xsltArg.RemoveParam(null, szEmpty);
if (retObj != null)
{
_output.WriteLine("Did not return NULL for null parameter name");
Assert.True(false);
}
return;
}
//[Variation("Param name is empty string")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void RemoveParam3()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.RemoveParam(szEmpty, szEmpty);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(466.5112789241) == 1))
return;
else
Assert.True(false);
}
//[Variation("Param name is non-existent")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void RemoveParam4()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.RemoveParam(szSimple, szEmpty);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(466.5112789241) == 1))
return;
else
Assert.True(false);
}
//[Variation("Invalid Param name")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void RemoveParam5()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.RemoveParam(szInvalid, szEmpty);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(466.5112789241) == 1))
return;
else
Assert.True(false);
}
//[Variation("Very long param name")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void RemoveParam6()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam(szLongString, szEmpty, "Test1");
m_xsltArg.RemoveParam(szLongString, szEmpty);
if ((LoadXSL("showParamLongName.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(400.2204182193) == 1))
return;
else
Assert.True(false);
}
//[Variation("Namespace URI is null")]
[InlineData()]
[Theory]
public void RemoveParam7()
{
m_xsltArg = new XsltArgumentList();
retObj = m_xsltArg.RemoveParam("myArg1", null);
if (retObj != null)
{
_output.WriteLine("Did not return NULL for null URI namespace");
Assert.True(false);
}
return;
}
//[Variation("Namespace URI is empty string")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void RemoveParam8()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
m_xsltArg.RemoveParam("myArg1", szEmpty);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(466.5112789241) == 1))
return;
else
Assert.True(false);
}
//[Variation("Namespace URI is non-existent")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void RemoveParam9()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
m_xsltArg.RemoveParam("myArg1", "http://www.xsltTest.com");
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(457.6003003605) == 1))
return;
else
Assert.True(false);
}
//[Variation("Very long namespace System.Xml.Tests")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void RemoveParam10()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szLongString, "Test1");
m_xsltArg.RemoveParam("myArg1", szLongString);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(466.5112789241) == 1))
return;
else
Assert.True(false);
}
//[Variation("Different Data Types")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void RemoveParam11()
{
double d1 = double.PositiveInfinity;
double d2 = double.NegativeInfinity;
double d3 = double.NaN;
double d4 = 2.000001;
double d5 = 0.00;
double d6 = double.MaxValue;
double d7 = double.MinValue;
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, d1);
m_xsltArg.RemoveParam("myArg1", szEmpty);
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", d1);
Assert.True(false);
}
m_xsltArg.AddParam("myArg2", szEmpty, d2);
m_xsltArg.RemoveParam("myArg2", szEmpty);
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", d2);
Assert.True(false);
}
m_xsltArg.AddParam("myArg3", szEmpty, d3);
m_xsltArg.RemoveParam("myArg3", szEmpty);
retObj = m_xsltArg.GetParam("myArg3", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", d3);
Assert.True(false);
}
m_xsltArg.AddParam("myArg4", szEmpty, d4);
m_xsltArg.RemoveParam("myArg4", szEmpty);
retObj = m_xsltArg.GetParam("myArg4", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", d4);
Assert.True(false);
}
m_xsltArg.AddParam("myArg5", szEmpty, d5);
m_xsltArg.RemoveParam("myArg5", szEmpty);
retObj = m_xsltArg.GetParam("myArg5", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", d5);
Assert.True(false);
}
m_xsltArg.AddParam("myArg6", szEmpty, d6);
m_xsltArg.RemoveParam("myArg6", szEmpty);
retObj = m_xsltArg.GetParam("myArg6", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", d6);
Assert.True(false);
}
m_xsltArg.AddParam("myArg7", szEmpty, d7);
m_xsltArg.RemoveParam("myArg7", szEmpty);
retObj = m_xsltArg.GetParam("myArg7", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", d7);
Assert.True(false);
}
String obj = "0.00";
// string
m_xsltArg.AddParam("myArg1", szEmpty, obj);
m_xsltArg.RemoveParam("myArg1", szEmpty);
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", obj);
Assert.True(false);
}
//int
int i = 2;
m_xsltArg.AddParam("myArg2", szEmpty, i);
m_xsltArg.RemoveParam("myArg2", szEmpty);
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", i);
Assert.True(false);
}
Boolean bF = (1 == 0);
m_xsltArg.AddParam("myArg4", szEmpty, bF);
m_xsltArg.RemoveParam("myArg4", szEmpty);
retObj = m_xsltArg.GetParam("myArg4", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", bF);
Assert.True(false);
}
Boolean bT = (1 == 1);
m_xsltArg.AddParam("myArg5", szEmpty, bT);
m_xsltArg.RemoveParam("myArg5", szEmpty);
retObj = m_xsltArg.GetParam("myArg5", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", bT);
Assert.True(false);
}
m_xsltArg.AddParam("myArg2", szEmpty, (Int16)i);
m_xsltArg.RemoveParam("myArg2", szEmpty);
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", i);
Assert.True(false);
}
m_xsltArg.AddParam("myArg2", szEmpty, (UInt16)i);
m_xsltArg.RemoveParam("myArg2", szEmpty);
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", i);
Assert.True(false);
}
m_xsltArg.AddParam("myArg2", szEmpty, (Int32)i);
m_xsltArg.RemoveParam("myArg2", szEmpty);
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", i);
Assert.True(false);
}
m_xsltArg.AddParam("myArg2", szEmpty, (UInt32)i);
m_xsltArg.RemoveParam("myArg2", szEmpty);
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", i);
Assert.True(false);
}
m_xsltArg.AddParam("myArg2", szEmpty, (Int64)i);
m_xsltArg.RemoveParam("myArg2", szEmpty);
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", i);
Assert.True(false);
}
m_xsltArg.AddParam("myArg2", szEmpty, (UInt64)i);
m_xsltArg.RemoveParam("myArg2", szEmpty);
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", i);
Assert.True(false);
}
m_xsltArg.AddParam("myArg2", szEmpty, (Single)i);
m_xsltArg.RemoveParam("myArg2", szEmpty);
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", i);
Assert.True(false);
}
m_xsltArg.AddParam("myArg2", szEmpty, (Decimal)i);
m_xsltArg.RemoveParam("myArg2", szEmpty);
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
if (retObj != null)
{
_output.WriteLine("Failed to remove {0}", i);
Assert.True(false);
}
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(466.5112789241) == 1))
return;
else
Assert.True(false);
}
//[Variation("Case Sensitivity")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void RemoveParam12()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
m_xsltArg.RemoveParam("myarg1", szEmpty);
m_xsltArg.RemoveParam("MYARG1", szEmpty);
m_xsltArg.RemoveParam("myArg1 ", szEmpty);
// perform a transform for kicks and ensure all is ok.
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(457.6003003605) == 1))
return;
else
Assert.True(false);
}
//[Variation("Whitespace")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void RemoveParam13()
{
int i = 1;
m_xsltArg = new XsltArgumentList();
foreach (String str in szWhiteSpace)
{
m_xsltArg.AddParam("myArg" + i, szEmpty, "Test" + str);
m_xsltArg.RemoveParam("myArg" + i, szEmpty);
retObj = m_xsltArg.GetParam("myArg" + i, szEmpty);
if (retObj != null)
{
_output.WriteLine("Error removing case #{0} from this test", i);
Assert.True(false);
}
i++;
}
i = 1;
foreach (String str in szWhiteSpace)
{
m_xsltArg.AddParam("myArg" + i, szEmpty, "Test"); // dont add whitespace to name here since addparam would throw
m_xsltArg.RemoveParam("myArg" + str, szEmpty);
retObj = m_xsltArg.GetParam("myArg" + str, szEmpty);
if (retObj != null)
{
_output.WriteLine("Error removing case #{0} in the second batch from this test", i);
Assert.True(false);
}
i++;
}
// perform a transform for kicks and ensure all is ok.
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(421.3863242307) == 1))
return;
else
Assert.True(false);
}
//[Variation("Call Multiple Times")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void RemoveParam14()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
m_xsltArg.RemoveParam("myArg1", szEmpty);
for (int i = 0; i < 500; i++)
m_xsltArg.RemoveParam("myArg1", szEmpty);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(466.5112789241) == 1))
return;
else
Assert.True(false);
}
//[Variation("Using Default XSLT Namespace - Bug305503")]
[InlineData()]
[Theory]
public void RemoveParam15()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.RemoveParam("myParam", szDefaultNS);
return;
}
}
/***********************************************************/
/* XslTransform.RemoveExtensionObject */
/***********************************************************/
//[TestCase(Name = "XsltArgumentList - RemoveExtensionObject : Reader, Stream", Desc = "READER,STREAM")]
//[TestCase(Name = "XsltArgumentList - RemoveExtensionObject : Reader, TextWriter", Desc = "READER,TEXTWRITER")]
// TODO: Fix security issue
////[TestCase(Name="XsltArgumentList - RemoveExtensionObject : URI, Reader", Desc="URI,READER")]
//[TestCase(Name = "XsltArgumentList - RemoveExtensionObject : Navigator, Stream", Desc = "NAVIGATOR,STREAM")]
public class CArgRemoveExtObj : XsltApiTestCaseBase
{
private ITestOutputHelper _output;
public CArgRemoveExtObj(ITestOutputHelper output) : base(output)
{
_output = output;
}
//[Variation(Desc = "Basic Verification Test", Pri = 0)]
[InlineData()]
[Theory]
public void RemoveExtObj1()
{
MyObject obj = new MyObject(1, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
m_xsltArg.RemoveExtensionObject(szDefaultNS);
try
{
if ((LoadXSL("MyObjectDef.xsl") == 1))
Transform_ArgList("fruits.xml", true);
}
catch (System.Xml.Xsl.XsltException)
{
return;
}
_output.WriteLine("Did not throw expected exception");
Assert.True(false);
}
//[Variation("Namespace URI is null")]
[InlineData()]
[Theory]
public void RemoveExtObj2()
{
MyObject obj = new MyObject(2, _output);
m_xsltArg = new XsltArgumentList();
try
{
m_xsltArg.RemoveExtensionObject(null);
}
catch (System.ArgumentNullException)
{
return;
}
_output.WriteLine("Exception not generated for null parameter name");
Assert.True(false);
}
//[Variation("Call Multiple Times")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void RemoveExtObj3()
{
MyObject obj = new MyObject(10, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
for (int i = 0; i < 500; i++)
m_xsltArg.RemoveExtensionObject(szDefaultNS);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(466.5112789241) == 1))
return;
else
Assert.True(false);
}
//[Variation("Namespace URI is non-existent")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void RemoveExtObj4()
{
MyObject obj = new MyObject(4, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
m_xsltArg.RemoveExtensionObject(szSimple);
if ((LoadXSL("MyObjectDef.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(430.402026847) == 1))
return;
else
Assert.True(false);
}
//[Variation("Very long namespace System.Xml.Tests")]
[InlineData()]
[Theory]
public void RemoveExtObj5()
{
m_xsltArg = new XsltArgumentList();
MyObject obj = new MyObject(5, _output);
m_xsltArg.AddExtensionObject("urn:" + szLongNS, obj);
m_xsltArg.RemoveExtensionObject("urn:" + szLongNS);
try
{
if ((LoadXSL("MyObjectDef.xsl") == 1))
Transform_ArgList("fruits.xml", true);
}
catch (System.Xml.Xsl.XsltException)
{
return;
}
_output.WriteLine("Did not throw expected exception");
Assert.True(false);
}
//[Variation("Different Data Types")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void RemoveExtObj6()
{
MyObject obj = new MyObject(6, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject("urn:my-object", obj);
m_xsltArg.RemoveExtensionObject("urn:my-object");
m_xsltArg.AddExtensionObject("urn:my-object", 2);
m_xsltArg.RemoveExtensionObject("urn:my-object");
m_xsltArg.AddExtensionObject("urn:my-object", "Test String");
m_xsltArg.RemoveExtensionObject("urn:my-object");
m_xsltArg.AddExtensionObject("urn:my-object", (double)5.1);
m_xsltArg.RemoveExtensionObject("urn:my-object");
m_xsltArg.AddExtensionObject("urn:my-object", true);
m_xsltArg.RemoveExtensionObject("urn:my-object");
m_xsltArg.AddExtensionObject("urn:my-object", false);
m_xsltArg.RemoveExtensionObject("urn:my-object");
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(466.5112789241) == 1))
return;
else
Assert.True(false);
}
//[Variation("Case Sensitivity")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void RemoveExtObj7()
{
MyObject obj = new MyObject(7, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject("urn:my-object", obj);
m_xsltArg.RemoveExtensionObject("URN:MY-OBJECT");
m_xsltArg.RemoveExtensionObject("urn:My-Object");
m_xsltArg.RemoveExtensionObject("urn-my:object");
m_xsltArg.RemoveExtensionObject("urn:my-object ");
if ((LoadXSL("MyObjectDef.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(430.402026847) == 1))
return;
else
Assert.True(false);
}
//[Variation("Whitespace")]
[InlineData()]
[Theory]
public void RemoveExtObj8()
{
int i = 1;
m_xsltArg = new XsltArgumentList();
foreach (String str in szWhiteSpace)
{
MyObject obj = new MyObject(i, _output);
m_xsltArg.AddExtensionObject(szDefaultNS + str, obj);
m_xsltArg.RemoveExtensionObject(szDefaultNS + str);
retObj = m_xsltArg.GetExtensionObject(szDefaultNS + str);
if (retObj != null)
{
_output.WriteLine("Error deleting case #{0} for whitespace arg", i);
Assert.True(false);
}
i++;
}
try
{
if ((LoadXSL("MyObjectDef.xsl") == 1))
Transform_ArgList("fruits.xml", true);
}
catch (System.Xml.Xsl.XsltException)
{
return;
}
_output.WriteLine("Did not exception for object that could not be executed");
Assert.True(false);
}
//[Variation("Using default XSLT namespace - Bug305503")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void RemoveExtObj9()
{
MyObject obj = new MyObject(10, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.RemoveExtensionObject(szDefaultNS);
// ensure we can still do a transform
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(466.5112789241) == 1))
return;
else
Assert.True(false);
}
}
/***********************************************************/
/* XslTransform.Clear */
/***********************************************************/
//[TestCase(Name = "XsltArgumentList - Clear", Desc = "XsltArgumentList.Clear")]
public class CArgClear : XsltApiTestCaseBase
{
private ITestOutputHelper _output;
public CArgClear(ITestOutputHelper output) : base(output)
{
_output = output;
}
//[Variation(Desc = "Basic Verification Test", Pri = 0)]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void Clear1()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
if (retObj.ToString() != "Test1")
return; //return TEST_SKIPPED;
m_xsltArg.Clear();
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
if (retObj != null)
Assert.True(false);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(466.5112789241) == 1))
return;
else
Assert.True(false);
}
//[Variation("Clear with nothing loaded")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void Clear2()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.Clear();
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(466.5112789241) == 1))
return;
else
Assert.True(false);
}
//[Variation("Clear Params")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void Clear3()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
if (retObj.ToString() != "Test1")
return; //return TEST_SKIPPED;
m_xsltArg.Clear();
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
if (retObj != null)
Assert.True(false);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(466.5112789241) == 1))
return;
else
Assert.True(false);
}
//[Variation("Clear Extension Objects")]
[InlineData()]
[Theory]
public void Clear4()
{
MyObject obj = new MyObject(26, _output);
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
m_xsltArg.Clear();
retObj = m_xsltArg.GetExtensionObject(szDefaultNS);
if (retObj != null)
{
_output.WriteLine("Did not appear to clear an extension object");
Assert.True(false);
}
if ((LoadXSL("MyObjectDef.xsl") == 1))
{
try
{
Transform_ArgList("fruits.xml");
}
catch (System.Xml.Xsl.XsltException)
{
return;
}
}
_output.WriteLine("Exception not thrown for NS not found");
Assert.True(false);
}
//[Variation("Clear Many Objects")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void Clear5()
{
m_xsltArg = new XsltArgumentList();
String obj = "Test";
for (int i = 0; i < 200; i++)
{
m_xsltArg.AddParam("myArg2", szEmpty, obj + i);
retObj = m_xsltArg.GetParam("myArg2", szEmpty);
if (retObj.ToString() != (obj + i))
{
_output.WriteLine("Failed to add/remove iteration {0}", i);
_output.WriteLine("{0} : {1}", retObj, obj + i);
Assert.True(false);
}
m_xsltArg.Clear();
}
for (int i = 0; i < 200; i++)
{
m_xsltArg.AddParam("myArg" + i, szEmpty, obj + i);
retObj = m_xsltArg.GetParam("myArg" + i, szEmpty);
if (retObj.ToString() != (obj + i))
{
_output.WriteLine("Failed in 2nd part to add/remove iteration {0}", i);
Assert.True(false);
}
}
// _output.WriteLine(retObj.GetType());
m_xsltArg.Clear();
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(466.5112789241) == 1))
return;
else
Assert.True(false);
}
//[Variation("Clear Multiple Times")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void Clear6()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
if (retObj.ToString() != "Test1")
return; //return TEST_SKIPPED;
for (int i = 0; i < 300; i++)
m_xsltArg.Clear();
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
if (retObj != null)
Assert.True(false);
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(466.5112789241) == 1))
return;
else
Assert.True(false);
}
//[Variation("Loading one object, but clearing another")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void Clear7()
{
m_xsltArg = new XsltArgumentList();
XsltArgumentList m_2 = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
if (retObj.ToString() != "Test1")
return; //return TEST_SKIPPED;
m_2.Clear();
if ((LoadXSL("showParam.xsl") == 1) && (Transform_ArgList("fruits.xml") == 1) &&
(CheckResult(457.6003003605) == 1))
return;
else
Assert.True(false);
}
//[Variation("Clear after objects have been \"Removed\"")]
[ActiveIssue(9877)]
[InlineData()]
[Theory]
public void Clear8()
{
m_xsltArg = new XsltArgumentList();
m_xsltArg.AddParam("myArg1", szEmpty, "Test1");
retObj = m_xsltArg.GetParam("myArg1", szEmpty);
if (retObj.ToString() != "Test1")
return; //return TEST_SKIPPED;
retObj = m_xsltArg.RemoveParam("myArg1", szEmpty);
m_xsltArg.Clear();
if ((LoadXSL("showParam.xsl") != 1) || (Transform_ArgList("fruits.xml") != 1) ||
(CheckResult(466.5112789241) != 1))
Assert.True(false);
MyObject obj = new MyObject(26, _output);
m_xsltArg.AddExtensionObject(szDefaultNS, obj);
m_xsltArg.RemoveExtensionObject(szDefaultNS);
m_xsltArg.Clear();
if ((LoadXSL("MyObjectDef.xsl") == 1))
{
try
{
Transform_ArgList("fruits.xml");
}
catch (System.Xml.Xsl.XsltException)
{
return;
}
}
_output.WriteLine("Exception not thrown for NS not found");
Assert.True(false);
}
}
}