Files
DP44/DataPRO/UnitTest/DatabaseUnitTesting/SensorsDigitalInTests.cs
2026-04-17 14:55:32 -04:00

126 lines
7.6 KiB
C#

using System;
using System.Data.SqlClient;
using NUnit.Framework;
using System.Data;
namespace DatabaseUnitTesting
{
[TestFixture]
public class SensorsDigitalInUnitTests : TestSetups
{
[Test]
// ============================================================
// Send new valid digital in sensor parameters to sp_SensorsDigitalInUpdateInsert and
// compare all fields except LastModified and new ID. Pass if all fields in SensorsDigitalIn
// table are entered.
// ============================================================
[Category("sp_SensorsDigitalInUpdateInsert")]
public void VerifyWriteToDigitalInTable_sp_SensorsDigitalInUpdateInsertTest()
{
string filename = TestResultPath + "DigitalInSensorInsertTest.xml";
// only data in SensorsDigitalIn table will be compared
UnitTests.AddObjectComparison("dbo", "SensorsDigitalIn");
// But the LastModified column is excluded from comparison,
// just to demonstrate how we do it.
UnitTests.AddColumnToIgnore("dbo", "SensorsDigitalIn", "LastModified");
UnitTests.AddColumnToIgnore("dbo", "SensorsDigitalIn", "Id");
Command.CommandType = CommandType.StoredProcedure;
Command.CommandText = "sp_SensorsDigitalInUpdateInsert";
Command.Parameters.Add(new SqlParameter("@SerialNumber", SqlDbType.NVarChar) { Value = "DigiInSerialNum" });
Command.Parameters.Add(new SqlParameter("@SettingMode", SqlDbType.Int) { Value = 8 });
Command.Parameters.Add(new SqlParameter("@ScaleMultiplier", SqlDbType.NVarChar) { Value = "ArbitraryHighAndLow,1,2" });
Command.Parameters.Add(new SqlParameter("@LastModified", SqlDbType.DateTime) { Value = DateTime.Now });
Command.Parameters.Add(new SqlParameter("@LastModifiedBy", SqlDbType.NVarChar) { Value = "TestUser" });
Command.Parameters.Add(new SqlParameter("@eId", SqlDbType.NVarChar) { Value = "EID" });
Command.Parameters.Add(new SqlParameter("@UserValue1", SqlDbType.NVarChar) { Value = "" });
Command.Parameters.Add(new SqlParameter("@UserValue2", SqlDbType.NVarChar) { Value = "" });
Command.Parameters.Add(new SqlParameter("@UserValue3", SqlDbType.NVarChar) { Value = "" });
Command.Parameters.Add(new SqlParameter("@UserTags", SqlDbType.VarBinary) { Value = new byte[10 * sizeof(int)] });
var newIdParam = new SqlParameter("@new_id", System.Data.SqlDbType.Int) { Direction = System.Data.ParameterDirection.Output };
Command.Parameters.Add(newIdParam);
var errorNumberParam = new SqlParameter("@errorNumber", System.Data.SqlDbType.Int) { Direction = System.Data.ParameterDirection.Output };
Command.Parameters.Add(errorNumberParam);
var errorMessageParam = new SqlParameter("@errorMessage", System.Data.SqlDbType.NVarChar, 250) { Direction = System.Data.ParameterDirection.Output };
Command.Parameters.Add(errorMessageParam);
Command.ExecuteNonQuery();
if (BSETUPMODE)
UnitTests.WriteDiffsToXml(filename);
else
Assert.IsTrue(UnitTests.CompareDiffsToXml(filename));
}
[Test]
// ============================================================
// Send valid digital in sensor parameters to sp_SensorsDigitalInUpdateInsert for a sensor
// already in the database and compare all fields except LastModified and new ID.
// Pass if all fields in SensorsDigitalIn table are entered.
// ============================================================
[Category("sp_SensorsDigitalInUpdateInsert")]
public void VerifyUpdateToDigitalIn_sp_SensorsDigitalInUpdateInsertTest()
{
string filename = TestResultPath + "DigitalInSensorUpdateTest.xml";
// only data in SensorsDigitalIn table will be compared
UnitTests.AddObjectComparison("dbo", "SensorsDigitalIn");
// But the LastModified column is excluded from comparison,
// just to demonstrate how we do it.
UnitTests.AddColumnToIgnore("dbo", "SensorsDigitalIn", "LastModified");
UnitTests.AddColumnToIgnore("dbo", "SensorsDigitalIn", "Id");
//SqlCommand command = connection.CreateCommand();
//command.Transaction = transaction;
Command.CommandType = CommandType.StoredProcedure;
Command.CommandText = "sp_SensorsDigitalInUpdateInsert";
Command.Parameters.Add(new SqlParameter("@SerialNumber", SqlDbType.NVarChar) { Value = "DigiInSerialNum" });
Command.Parameters.Add(new SqlParameter("@SettingMode", SqlDbType.Int) { Value = 8 });
Command.Parameters.Add(new SqlParameter("@ScaleMultiplier", SqlDbType.NVarChar) { Value = "ArbitraryHighAndLow,1,2" });
Command.Parameters.Add(new SqlParameter("@LastModified", SqlDbType.DateTime) { Value = DateTime.Now });
Command.Parameters.Add(new SqlParameter("@LastModifiedBy", SqlDbType.NVarChar) { Value = "TestUser" });
Command.Parameters.Add(new SqlParameter("@eId", SqlDbType.NVarChar) { Value = "EID" });
Command.Parameters.Add(new SqlParameter("@UserValue1", SqlDbType.NVarChar) { Value = "" });
Command.Parameters.Add(new SqlParameter("@UserValue2", SqlDbType.NVarChar) { Value = "" });
Command.Parameters.Add(new SqlParameter("@UserValue3", SqlDbType.NVarChar) { Value = "" });
Command.Parameters.Add(new SqlParameter("@UserTags", SqlDbType.VarBinary) { Value = new byte[10 * sizeof(int)] });
var newIdParam = new SqlParameter("@new_id", System.Data.SqlDbType.Int) { Direction = System.Data.ParameterDirection.Output };
Command.Parameters.Add(newIdParam);
var errorNumberParam = new SqlParameter("@errorNumber", System.Data.SqlDbType.Int) { Direction = System.Data.ParameterDirection.Output };
Command.Parameters.Add(errorNumberParam);
var errorMessageParam = new SqlParameter("@errorMessage", System.Data.SqlDbType.NVarChar, 250) { Direction = System.Data.ParameterDirection.Output };
Command.Parameters.Add(errorMessageParam);
Command.ExecuteNonQuery();
//Now that the sensor is saved, make a change so "update" is called
Command.Parameters[5].Value = "EID_Modified";
Command.ExecuteNonQuery();
if (BSETUPMODE)
UnitTests.WriteDiffsToXml(filename);
else
Assert.IsTrue(UnitTests.CompareDiffsToXml(filename));
}
//[Test]
// ============================================================
// Send valid digital in sensor parameters to sp_SensorsDigitalInUpdateInsert for a sensor
// already in the database and verify no new row is created in dbo.Sensors.
//
// ============================================================
//[Test]
// ============================================================
// Send valid digital in sensor parameters to sp_SensorsDigitalInUpdateInsert for a new sensor
// to be entered into the db and verify a new row is created in dbo.Sensors.
//
// ============================================================
}
}