Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

368 lines
9.0 KiB
C#

//
// Copyright (c) 2006 Mainsoft Co.
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using System.Data;
using System.Data.OracleClient;
using MonoTests.System.Data.Utils;
using MonoTests.System.Data.Utils.Data;
using NUnit.Framework;
namespace MonoTests.System.Data.OracleClient
{
[TestFixture]
public class OracleCommand_CommandText : GHTBase
{
private Exception exp = null;
private OracleCommand cmd;
const string TEST_CASE_ID = "48341_";
public static void Main()
{
OracleCommand_CommandText tc = new OracleCommand_CommandText();
Exception exp = null;
try
{
tc.BeginTest("OleDBCommandText");
tc.run();
}
catch(Exception ex){exp = ex;}
finally {tc.EndTest(exp);}
}
public void run()
{
SetInConstractor();
SetByProperty();
UseSemiColonAsValue();
UseColonAsValue();
UseQuestionMarkAsValue();
UseExclamationMarkAsValue();
UseApostropheAsValue();
UseCommaAsValue();
UseDotAsValue();
UseAtAsValue();
UseQuoteAsValue();
UseDollarAsValue();
UsePercentAsValue();
UseHatAsValue();
UseAmpersnadAsValue();
UseStartAsValue();
UseParentesesAsValue();
UsePlusAsValue();
UseMinusAsValue();
UseUnderscoreAsValue();
UseSpaceAsValue();
UseEqualAsValue();
UseSlashAsValue();
UseBackSlashAsValue();
UseTildeAsValue();
UseNOTAsValue();
UseORAsValue();
UseANDAsValue();
UseSELECTAsValue();
UseFROMAsValue();
UseWHEREAsValue();
UseINSERTAsValue();
UseINTOAsValue();
UseVALUESAsValue();
UseDELETEAsValue();
UseUPDATEAsValue();
UseEXECAsValue();
UseQueryAsValue();
}
[Test] public void SetByProperty()
{
exp = null;
cmd = new OracleCommand();
cmd.CommandText = "SELECT * FROM Employees";
try
{
BeginCase("CommandText2");
Compare(cmd.CommandText, "SELECT * FROM Employees");
}
catch(Exception ex)
{
exp = ex;
}
finally
{
EndCase(exp);
}
}
[Test] public void SetInConstractor()
{
exp = null;
cmd = new OracleCommand("SELECT * FROM Employees");
try
{
BeginCase("CommandText1");
Compare(cmd.CommandText, "SELECT * FROM Employees");
}
catch(Exception ex)
{
exp = ex;
}
finally
{
EndCase(exp);
}
}
[Test] public void UseSemiColonAsValue()
{
RunValueInColumnTest("T_VARCHAR", ";");
}
[Test] public void UseColonAsValue()
{
RunValueInColumnTest("T_VARCHAR", ":");
}
[Test] public void UseQuestionMarkAsValue()
{
RunValueInColumnTest("T_VARCHAR", "?");
}
[Test] public void UseExclamationMarkAsValue()
{
RunValueInColumnTest("T_VARCHAR", "?");
}
[Test] public void UseApostropheAsValue()
{
RunValueInColumnTest("T_VARCHAR", "'");
}
[Test] public void UseCommaAsValue()
{
RunValueInColumnTest("T_VARCHAR", ",");
}
[Test] public void UseDotAsValue()
{
RunValueInColumnTest("T_VARCHAR", ".");
}
[Test] public void UseAtAsValue()
{
RunValueInColumnTest("T_VARCHAR", "@");
}
[Test] public void UseQuoteAsValue()
{
RunValueInColumnTest("T_VARCHAR", "\"");
}
[Test] public void UseDiezAsValue()
{
RunValueInColumnTest("T_VARCHAR", "#");
}
[Test] public void UseDollarAsValue()
{
RunValueInColumnTest("T_VARCHAR", "$");
}
[Test] public void UsePercentAsValue()
{
RunValueInColumnTest("T_VARCHAR", "%");
}
[Test] public void UseHatAsValue()
{
RunValueInColumnTest("T_VARCHAR", "^");
}
[Test] public void UseAmpersnadAsValue()
{
RunValueInColumnTest("T_VARCHAR", "&");
}
[Test] public void UseStartAsValue()
{
RunValueInColumnTest("T_VARCHAR", "*");
}
[Test] public void UseParentesesAsValue()
{
RunValueInColumnTest("T_VARCHAR", "(");
RunValueInColumnTest("T_VARCHAR", "()");
RunValueInColumnTest("T_VARCHAR", ")");
RunValueInColumnTest("T_VARCHAR", "{");
RunValueInColumnTest("T_VARCHAR", "{}");
RunValueInColumnTest("T_VARCHAR", "}");
RunValueInColumnTest("T_VARCHAR", "[");
RunValueInColumnTest("T_VARCHAR", "[]");
RunValueInColumnTest("T_VARCHAR", "]");
RunValueInColumnTest("T_VARCHAR", "<");
RunValueInColumnTest("T_VARCHAR", "<>");
RunValueInColumnTest("T_VARCHAR", ">");
}
[Test] public void UsePlusAsValue()
{
RunValueInColumnTest("T_VARCHAR", "+");
}
[Test] public void UseMinusAsValue()
{
RunValueInColumnTest("T_VARCHAR", "-");
}
[Test] public void UseUnderscoreAsValue()
{
RunValueInColumnTest("T_VARCHAR", "_");
}
[Test] public void UseSpaceAsValue()
{
RunValueInColumnTest("T_VARCHAR", " ");
}
[Test] public void UseEqualAsValue()
{
RunValueInColumnTest("T_VARCHAR", "=");
}
[Test] public void UseSlashAsValue()
{
RunValueInColumnTest("T_VARCHAR", "\\");
}
[Test] public void UseBackSlashAsValue()
{
RunValueInColumnTest("T_VARCHAR", "/");
}
[Test] public void UseTildeAsValue()
{
RunValueInColumnTest("T_VARCHAR", "~");
}
[Test] public void UseNOTAsValue()
{
RunValueInColumnTest("T_VARCHAR", "NOT");
}
[Test] public void UseORAsValue()
{
RunValueInColumnTest("T_VARCHAR", "OR");
}
[Test] public void UseANDAsValue()
{
RunValueInColumnTest("T_VARCHAR", "AND");
}
[Test] public void UseSELECTAsValue()
{
RunValueInColumnTest("T_VARCHAR", "SELECT");
}
[Test] public void UseFROMAsValue()
{
RunValueInColumnTest("T_VARCHAR", "FROM");
}
[Test] public void UseWHEREAsValue()
{
RunValueInColumnTest("T_VARCHAR", "WHERE");
}
[Test] public void UseINSERTAsValue()
{
RunValueInColumnTest("T_VARCHAR", "INSERT");
}
[Test] public void UseINTOAsValue()
{
RunValueInColumnTest("T_VARCHAR", "INTO");
}
[Test] public void UseVALUESAsValue()
{
RunValueInColumnTest("T_VARCHAR", "VALUES");
}
[Test] public void UseDELETEAsValue()
{
RunValueInColumnTest("T_VARCHAR", "DELETE");
}
[Test] public void UseUPDATEAsValue()
{
RunValueInColumnTest("T_VARCHAR", "UPDATE");
}
[Test] public void UseEXECAsValue()
{
RunValueInColumnTest("T_VARCHAR", "EXEC");
}
[Test] public void UseQueryAsValue()
{
string columnName;
switch (ConnectedDataProvider.GetDbType())
{
case DataBaseServer.SQLServer:
columnName = "T_VARCHAR";
break;
case DataBaseServer.Oracle:
columnName = "T_LONG";
break;
case DataBaseServer.DB2:
columnName = "T_LONGVARCHAR";
break;
default:
columnName = "T_VARCHAR";
break;
}
RunValueInColumnTest(columnName, "SELECT * FROM TYPES_SIMPLE");
}
private void RunValueInColumnTest(string columnToTest, string valueToTest)
{
UnQuotedValueInColumn(columnToTest, valueToTest);
QuotedValueInColumn(columnToTest, valueToTest);
}
private void QuotedValueInColumn(string columnToTest, string valueToTest)
{
ValueInColumn(columnToTest, string.Format("'{0}'", valueToTest));
}
private void UnQuotedValueInColumn(string columnToTest, string valueToTest)
{
ValueInColumn(columnToTest, valueToTest);
}
private void ValueInColumn(string columnToTest, string valueToTest)
{
exp = null;
OracleDataReader rdr = null;
OracleConnection con = null;
DbTypeParametersCollection row = ConnectedDataProvider.GetSimpleDbTypesParameters();
BeginCase(string.Format("Use {0} as value", valueToTest));
string rowId = TEST_CASE_ID + TestCaseNumber.ToString();
try
{
foreach(DbTypeParameter param in row)
{
param.Value = DBNull.Value;
}
row[columnToTest].Value = valueToTest;
Log("rowId:" + rowId + " columnToTest:" + columnToTest + " valueToTest:" + valueToTest);
row.ExecuteInsert(rowId);
row.ExecuteSelectReader(rowId, out rdr, out con);
rdr.Read();
int columnOrdinal = rdr.GetOrdinal(columnToTest);
//this.Log(valueToTest);
Compare(valueToTest, rdr.GetValue(columnOrdinal));
}
catch(Exception ex)
{
exp = ex;
}
finally
{
EndCase(exp);
if (rdr != null && !rdr.IsClosed)
{
rdr.Close();
}
row.ExecuteDelete(rowId);
if (con != null && con.State != ConnectionState.Closed)
{
con.Close();
}
}
}
}
}