init
This commit is contained in:
282
DataPRO/UnitTest/DatabaseUnitTesting/DbAPITestsTestSetupROIs.cs
Normal file
282
DataPRO/UnitTest/DatabaseUnitTesting/DbAPITestsTestSetupROIs.cs
Normal file
@@ -0,0 +1,282 @@
|
||||
using DTS.Common.Classes.TestSetups;
|
||||
using DTS.Common.Interface.RegionOfInterest;
|
||||
using NUnit.Framework;
|
||||
using System.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using DTS.Common.Interface.TestSetups.TestSetupsList;
|
||||
using DTS.Common.Storage;
|
||||
|
||||
namespace DatabaseUnitTesting
|
||||
{
|
||||
[TestFixture]
|
||||
public partial class DBAPITests
|
||||
{
|
||||
public ITestSetupRecord CreateFakeTestSetupWithROIs(int numberOfROIs)
|
||||
{
|
||||
var record = new TestSetupRecord();
|
||||
record.Id = -1;
|
||||
record.Name = Guid.NewGuid().ToString().Substring(0, 15);
|
||||
record.LastModified = DateTime.Today;
|
||||
record.LastModifiedBy = "NUNIT";
|
||||
record.TestEngineerDetails = Guid.NewGuid().ToString().Substring(0, 15);
|
||||
record.CustomerDetails = Guid.NewGuid().ToString().Substring(0, 15);
|
||||
record.LabDetails = Guid.NewGuid().ToString().Substring(0, 15);
|
||||
record.Settings = "";
|
||||
|
||||
var regionsOfInterestList = new System.ComponentModel.BindingList<IRegionOfInterest>();
|
||||
|
||||
var start = 0D;
|
||||
var end = 0D;
|
||||
for (int i = 0; i < numberOfROIs; i++)
|
||||
{
|
||||
var channelNameList = new List<string>();
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
start = -1D;
|
||||
end = 1D;
|
||||
channelNameList.Add("an1");
|
||||
channelNameList.Add("an2");
|
||||
channelNameList.Add("an3");
|
||||
break;
|
||||
case 1:
|
||||
start = -0.9D;
|
||||
end = 0.9D;
|
||||
channelNameList.Add("an1");
|
||||
channelNameList.Add("an2");
|
||||
break;
|
||||
}
|
||||
var regionOfInterest = CreateRegionOfInterest($"_ROI Period {i + 1}", start, end, true, true);
|
||||
regionOfInterest.ChannelNames = channelNameList.ToArray();
|
||||
regionsOfInterestList.Add(regionOfInterest);
|
||||
}
|
||||
|
||||
record.RegionsOfInterest = regionsOfInterestList;
|
||||
|
||||
return record;
|
||||
}
|
||||
public IRegionOfInterest CreateRegionOfInterest(string suffix, double start, double end, bool isEnabled, bool isDefault)
|
||||
{
|
||||
var record = new RegionOfInterest();
|
||||
record.Suffix = suffix;
|
||||
record.Start = start;
|
||||
record.End = end;
|
||||
record.IsEnabled = isEnabled;
|
||||
record.IsDefault = isDefault;
|
||||
|
||||
return record;
|
||||
}
|
||||
/// <summary>
|
||||
/// Tests included:
|
||||
/// sp_TestSetupsUpdateInsert_92 (and sp_TestSetupsInsert_92)
|
||||
/// sp_TestSetupROIsInsert
|
||||
/// sp_TestSetupROIsGet
|
||||
/// sp_TestSetupsDeleteManyById
|
||||
/// sp_TestSetupsGet_92
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestSetupROIsGetOneROI()
|
||||
{
|
||||
if (!_setup) { Setup(); }
|
||||
TestLogin();
|
||||
var connections = DbAPI.DbAPI.Connections.GetActiveConnections();
|
||||
|
||||
//***Testing*** sp_TestSetupsUpdateInsert_92
|
||||
var testSetupRecordToInsert = CreateFakeTestSetupWithROIs(1);
|
||||
var hr = DbAPI.DbAPI.TestSetups.TestSetupsUpdateInsert(_user, connections[0], 92, ref testSetupRecordToInsert);
|
||||
Assert.IsTrue(0 == hr, "Should be able to insert a test setup");
|
||||
|
||||
DbAPI.DbAPI.GetDatabaseVersion(connections[0], out int serverDbVersion);
|
||||
if (serverDbVersion <= 91)
|
||||
{
|
||||
var regionOfInterest = testSetupRecordToInsert.RegionsOfInterest[0];
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.TestSetupROIsInsert(_user, connections[0], testSetupRecordToInsert.Id, regionOfInterest, out var testSetupROIId);
|
||||
Assert.IsTrue(0 != hr, "RegionsOfInterestInsert should not work if database Version is 91 or less");
|
||||
}
|
||||
else if (serverDbVersion >= 92)
|
||||
{
|
||||
//***Testing*** sp_TestSetupROIsInsert
|
||||
var regionOfInterest = CreateRegionOfInterest("", -1, 1, true, true);
|
||||
var testSetupROIId = -1;
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.TestSetupROIsInsert(_user, connections[0], testSetupRecordToInsert.Id, regionOfInterest, out testSetupROIId);
|
||||
Assert.IsTrue(0 == hr, "Should be able to insert a record in the TestSetupROIs table");
|
||||
Assert.IsTrue(testSetupROIId > 0, "A TestSetupROIId should have been generated and returned");
|
||||
|
||||
//***Testing*** sp_TestSetupROIsGet
|
||||
var testSetupROIRecords = new DTS.Common.Interface.TestSetups.ITestSetupROIRecord[0];
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.TestSetupROIsGet(_user, connections[0], testSetupRecordToInsert.Id, out testSetupROIRecords);
|
||||
Assert.IsTrue(0 == hr, "Should be able to get a record from the TestSetupROIs table");
|
||||
Assert.IsTrue(testSetupROIRecords.Length == 1, "Should get one and only one record from the TestSetupROIs table");
|
||||
Assert.IsTrue(testSetupROIRecords[0].Suffix == "", "Suffix in record from the TestSetupROIs table should be empty");
|
||||
Assert.IsTrue(testSetupROIRecords[0].ROIStart == -1, "ROIStart in record from the TestSetupROIs table should be -1");
|
||||
Assert.IsTrue(testSetupROIRecords[0].ROIEnd == 1, "ROIEnd in record from the TestSetupROIs table should be 1");
|
||||
Assert.IsTrue(testSetupROIRecords[0].IsEnabled, "IsEnabled in record from the TestSetupROIs table should be 'true'");
|
||||
Assert.IsTrue(testSetupROIRecords[0].IsDefault, "IsDefault in record from the TestSetupROIs table should be 'true'");
|
||||
|
||||
//***Testing*** sp_ROIPeriodChannelsGet
|
||||
var roiPeriodChannelRecords = new DTS.Common.Interface.TestSetups.IROIPeriodChannelRecord[0];
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.ROIPeriodChannelsGet(_user, connections[0], DbOperations.CURRENT_DB_VERSION, testSetupROIRecords[0].TestSetupROIId, out roiPeriodChannelRecords);
|
||||
Assert.IsTrue(0 == hr, "Should not fail when getting zero records from the ROIPeriodChannels table based on the TestSetupROIId in the TestSetupROIs table");
|
||||
Assert.IsTrue(roiPeriodChannelRecords.Length == 0, "Should get zero records from the ROIPeriodChannels table");
|
||||
}
|
||||
|
||||
//***Testing*** sp_TestSetupsDeleteManyById
|
||||
//Ensure that deleting a Test Setup will delete related record(s) in the TestSetupROIs and ROIPeriodChannels tables
|
||||
hr = DbAPI.DbAPI.TestSetups.TestSetupsDeleteById(_user, connections[0], new int[] { testSetupRecordToInsert.Id });
|
||||
//Since hr will be 0 in this case, check by doing a Get
|
||||
|
||||
//***Testing*** sp_TestSetupsGet_92
|
||||
//Make sure the Test Setup was deleted
|
||||
hr = DbAPI.DbAPI.TestSetups.TestSetupsGet(_user, connections[0], 92, null, null, double.NaN, double.NaN, false, false, out var records, out var errors);
|
||||
Assert.IsTrue(null == records || records.Length == 0, "TestSetupsGet should not have retrieved records");
|
||||
Assert.IsFalse(records.Any(r => r.Name == testSetupRecordToInsert.Name), "TestSetupsGet should not have retrieved our record");
|
||||
|
||||
if (serverDbVersion <= 91)
|
||||
{
|
||||
var regionOfInterest = testSetupRecordToInsert.RegionsOfInterest[0];
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.TestSetupROIsInsert(_user, connections[0], testSetupRecordToInsert.Id, regionOfInterest, out var testSetupROIId);
|
||||
Assert.IsTrue(0 != hr, "RegionsOfInterestInsert should not work if database Version is 91 or less");
|
||||
}
|
||||
else if (serverDbVersion >= 92)
|
||||
{
|
||||
//Make sure the record in the TestSetupROIs table was deleted
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.TestSetupROIsGet(_user, connections[0], testSetupRecordToInsert.Id, out var testSetupROIRecords);
|
||||
Assert.IsTrue(0 == hr && testSetupROIRecords.Length == 0, "Record in TestSetupROIs table should have been deleted");
|
||||
|
||||
//Make sure the record in the ROIPeriodChannels table was deleted
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.ROIPeriodChannelsGet(_user, connections[0], DbOperations.CURRENT_DB_VERSION, testSetupRecordToInsert.Id, out var roiPeriodChannelRecords);
|
||||
Assert.IsTrue(0 == hr && testSetupROIRecords.Length == 0, "Record in ROIPeriodChannels table should have been deleted");
|
||||
|
||||
//test that it fails when no user provided
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.TestSetupROIsGet(null, connections[0], testSetupRecordToInsert.Id, out testSetupROIRecords);
|
||||
Assert.IsTrue(0 != hr, "Should not return 0 when user is invalid");
|
||||
|
||||
//test that it fails when no connection provided
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.TestSetupROIsGet(_user, null, testSetupRecordToInsert.Id, out testSetupROIRecords);
|
||||
Assert.IsTrue(0 != hr, "Should not return 0 when connection is invalid");
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Tests included:
|
||||
/// sp_TestSetupsUpdateInsert_92 (and sp_TestSetupsInsert_92)
|
||||
/// sp_TestSetupROIsInsert
|
||||
/// sp_TestSetupROIsGet
|
||||
/// sp_TestSetupsDeleteManyById
|
||||
/// sp_TestSetupsGet_92
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestSetupROIsGetMultipleROIs()
|
||||
{
|
||||
if (!_setup) { Setup(); }
|
||||
TestLogin();
|
||||
var connections = DbAPI.DbAPI.Connections.GetActiveConnections();
|
||||
|
||||
//***Testing*** sp_TestSetupsUpdateInsert_92
|
||||
var testSetupRecordToInsert = CreateFakeTestSetupWithROIs(2);
|
||||
var hr = DbAPI.DbAPI.TestSetups.TestSetupsUpdateInsert(_user, connections[0], 92, ref testSetupRecordToInsert);
|
||||
Assert.IsTrue(0 == hr, "Should be able to insert a test setup");
|
||||
|
||||
DbAPI.DbAPI.GetDatabaseVersion(connections[0], out int serverDbVersion);
|
||||
if (serverDbVersion <= 91)
|
||||
{
|
||||
var regionOfInterest = testSetupRecordToInsert.RegionsOfInterest[0];
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.TestSetupROIsInsert(_user, connections[0], testSetupRecordToInsert.Id, regionOfInterest, out var testSetupROIId);
|
||||
Assert.IsTrue(0 != hr, "RegionsOfInterestInsert should not work if database Version is 91 or less");
|
||||
}
|
||||
else if (serverDbVersion >= 92)
|
||||
{
|
||||
//***Testing*** sp_TestSetupROIsInsert
|
||||
var regionOfInterest = testSetupRecordToInsert.RegionsOfInterest[0];
|
||||
var testSetupROIId = -1;
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.TestSetupROIsInsert(_user, connections[0], testSetupRecordToInsert.Id, regionOfInterest, out testSetupROIId);
|
||||
Assert.IsTrue(0 == hr, "Should be able to insert the first ROI record in the TestSetupROIs table");
|
||||
Assert.IsTrue(testSetupROIId > 0, "A TestSetupROIId should have been generated and returned (1)");
|
||||
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.ROIPeriodChannelsInsert(_user, connections[0], DbOperations.CURRENT_DB_VERSION, testSetupROIId, regionOfInterest.ChannelNames[0], regionOfInterest.ChannelIds[0]);
|
||||
Assert.IsTrue(0 == hr, "Should be able to insert the first record in the ROIPeriodChannels table");
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.ROIPeriodChannelsInsert(_user, connections[0], DbOperations.CURRENT_DB_VERSION, testSetupROIId, regionOfInterest.ChannelNames[1], regionOfInterest.ChannelIds[1]);
|
||||
Assert.IsTrue(0 == hr, "Should be able to insert the second record in the ROIPeriodChannels table");
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.ROIPeriodChannelsInsert(_user, connections[0], DbOperations.CURRENT_DB_VERSION, testSetupROIId, regionOfInterest.ChannelNames[2], regionOfInterest.ChannelIds[2]);
|
||||
Assert.IsTrue(0 == hr, "Should be able to insert the third record in the ROIPeriodChannels table");
|
||||
|
||||
//***Testing*** sp_TestSetupROIsInsert
|
||||
regionOfInterest = testSetupRecordToInsert.RegionsOfInterest.Last();
|
||||
testSetupROIId = -1;
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.TestSetupROIsInsert(_user, connections[0], testSetupRecordToInsert.Id, regionOfInterest, out testSetupROIId);
|
||||
Assert.IsTrue(0 == hr, "Should be able to insert the last ROI record in the TestSetupROIs table");
|
||||
Assert.IsTrue(testSetupROIId > 0, "A TestSetupROIId should have been generated and returned (2)");
|
||||
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.ROIPeriodChannelsInsert(_user, connections[0], DbOperations.CURRENT_DB_VERSION, testSetupROIId, regionOfInterest.ChannelNames[0], regionOfInterest.ChannelIds[0]);
|
||||
Assert.IsTrue(0 == hr, "Should be able to insert the fourth record in the ROIPeriodChannels table");
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.ROIPeriodChannelsInsert(_user, connections[0], DbOperations.CURRENT_DB_VERSION, testSetupROIId, regionOfInterest.ChannelNames[1], regionOfInterest.ChannelIds[1]);
|
||||
Assert.IsTrue(0 == hr, "Should be able to insert the fifth record in the ROIPeriodChannels table");
|
||||
|
||||
//***Testing*** sp_TestSetupROIsGet
|
||||
var testSetupROIRecords = new DTS.Common.Interface.TestSetups.ITestSetupROIRecord[0];
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.TestSetupROIsGet(_user, connections[0], testSetupRecordToInsert.Id, out testSetupROIRecords);
|
||||
Assert.IsTrue(0 == hr, "Should be able to get a record from the TestSetupROIs table");
|
||||
Assert.IsTrue(testSetupROIRecords.Length == 2, "Should get two and only two records from the TestSetupROIs table");
|
||||
|
||||
Assert.IsTrue(testSetupROIRecords[0].Suffix == "_ROI Period 1", "Suffix in first record from the TestSetupROIs table should be empty");
|
||||
Assert.IsTrue(testSetupROIRecords[0].ROIStart == -1, "ROIStart in first record from the TestSetupROIs table should be -1");
|
||||
Assert.IsTrue(testSetupROIRecords[0].ROIEnd == 1, "ROIEnd in first record from the TestSetupROIs table should be 1");
|
||||
Assert.IsTrue(testSetupROIRecords[0].IsEnabled, "IsEnabled in first record from the TestSetupROIs table should be 'true'");
|
||||
Assert.IsTrue(testSetupROIRecords[0].IsDefault, "IsDefault in first record from the TestSetupROIs table should be 'true'");
|
||||
|
||||
Assert.IsTrue(testSetupROIRecords[1].Suffix == "_ROI Period 2", "Suffix in second record from the TestSetupROIs table should be empty");
|
||||
Assert.IsTrue(testSetupROIRecords[1].ROIStart == -0.9D, "ROIStart in second record from the TestSetupROIs table should be -1");
|
||||
Assert.IsTrue(testSetupROIRecords[1].ROIEnd == 0.9D, "ROIEnd in second record from the TestSetupROIs table should be 1");
|
||||
Assert.IsTrue(testSetupROIRecords[1].IsEnabled, "IsEnabled in second record from the TestSetupROIs table should be 'true'");
|
||||
Assert.IsTrue(testSetupROIRecords[1].IsDefault, "IsDefault in second record from the TestSetupROIs table should be 'true'");
|
||||
|
||||
//***Testing*** sp_ROIPeriodChannelsGet
|
||||
var roiPeriodChannelRecords = new DTS.Common.Interface.TestSetups.IROIPeriodChannelRecord[0];
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.ROIPeriodChannelsGet(_user, connections[0], DbOperations.CURRENT_DB_VERSION, testSetupROIRecords[0].TestSetupROIId, out roiPeriodChannelRecords);
|
||||
Assert.IsTrue(0 == hr, "Should be able to get three records from the ROIPeriodChannels table based on the TestSetupROIId in the TestSetupROIs table");
|
||||
Assert.IsTrue(roiPeriodChannelRecords.Length == 3, "Should get three and only three records from the ROIPeriodChannels table");
|
||||
Assert.IsTrue(roiPeriodChannelRecords[0].ChannelName == "an1", "ChannelName[0] in record 0 should be 'an1'");
|
||||
Assert.IsTrue(roiPeriodChannelRecords[1].ChannelName == "an2", "ChannelName[1] in record 0 should be 'an2'");
|
||||
Assert.IsTrue(roiPeriodChannelRecords[2].ChannelName == "an3", "ChannelName[2] in record 0 should be 'an3'");
|
||||
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.ROIPeriodChannelsGet(_user, connections[0], DbOperations.CURRENT_DB_VERSION, testSetupROIRecords[1].TestSetupROIId, out roiPeriodChannelRecords);
|
||||
Assert.IsTrue(0 == hr, "Should be able to get two records from the ROIPeriodChannels table based on the TestSetupROIId in the TestSetupROIs table");
|
||||
Assert.IsTrue(roiPeriodChannelRecords.Length == 2, "Should get two and only two records from the ROIPeriodChannels table");
|
||||
Assert.IsTrue(roiPeriodChannelRecords[0].ChannelName == "an1", "ChannelName[0] in record 1 should be 'an1'");
|
||||
Assert.IsTrue(roiPeriodChannelRecords[1].ChannelName == "an2", "ChannelName[1] in record 1 should be 'an2'");
|
||||
}
|
||||
|
||||
//***Testing*** sp_TestSetupsDeleteManyById
|
||||
//Ensure that deleting a Test Setup will delete related record(s) in the TestSetupROIs table
|
||||
hr = DbAPI.DbAPI.TestSetups.TestSetupsDeleteById(_user, connections[0], new int[] { testSetupRecordToInsert.Id });
|
||||
//Since hr will be 0 in this case, check by doing a Get
|
||||
//Assert.IsTrue(0 != hr, $"Test Setup should not be able to be deleted before all related records in the TestSetupROIs table. hr={hr}");
|
||||
|
||||
//***Testing*** sp_TestSetupsGet_92
|
||||
//Make sure the Test Setup was deleted
|
||||
hr = DbAPI.DbAPI.TestSetups.TestSetupsGet(_user, connections[0], 92, null, null, double.NaN, double.NaN, false, false, out var records, out var errors);
|
||||
Assert.IsTrue(null == records || records.Length == 0, "TestSetupsGet should not have retrieved records");
|
||||
Assert.IsFalse(records.Any(r => r.Name == testSetupRecordToInsert.Name), "TestSetupsGet should not have retrieved our record");
|
||||
|
||||
if (serverDbVersion >= 92)
|
||||
{
|
||||
//Make sure that both records in the TestSetupROIs table were deleted
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.TestSetupROIsGet(_user, connections[0], testSetupRecordToInsert.Id, out var testSetupROIRecords);
|
||||
Assert.IsTrue(0 == hr && testSetupROIRecords.Length == 0, "Record in TestSetupROIs table should have been deleted");
|
||||
|
||||
//Make sure the record in the ROIPeriodChannels table was deleted
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.ROIPeriodChannelsGet(_user, connections[0], DbOperations.CURRENT_DB_VERSION, testSetupRecordToInsert.Id, out var roiPeriodChannelRecords);
|
||||
Assert.IsTrue(0 == hr && testSetupROIRecords.Length == 0, "Record in ROIPeriodChannels table should have been deleted");
|
||||
|
||||
//test that it fails when no user provided
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.TestSetupROIsGet(null, connections[0], testSetupRecordToInsert.Id, out testSetupROIRecords);
|
||||
Assert.IsTrue(0 != hr, "Should not return 0 when user is invalid");
|
||||
|
||||
//test that it fails when no connection provided
|
||||
hr = DbAPI.DbAPI.RegionsOfInterest.TestSetupROIsGet(_user, null, testSetupRecordToInsert.Id, out testSetupROIRecords);
|
||||
Assert.IsTrue(0 != hr, "Should not return 0 when connection is invalid");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user