210 lines
11 KiB
C#
210 lines
11 KiB
C#
using DTS.Common.Classes.Hardware;
|
|
using DTS.Common.Interface.DataRecorders;
|
|
using NUnit.Framework;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace DatabaseUnitTesting
|
|
{
|
|
[TestFixture]
|
|
public partial class DBAPITests
|
|
{
|
|
[Test]
|
|
public void TestDASGetPrototypesShouldFail()
|
|
{
|
|
if (!_setup) { Setup(); }
|
|
TestLogin();
|
|
var connections = DbAPI.DbAPI.Connections.GetActiveConnections();
|
|
var hr = DbAPI.DbAPI.DAS.DASGet(null, connections.First(), clientDbVersion, null, "Prototype", out var dbDAS);
|
|
Assert.AreNotEqual(0, hr, "DASGet with no user should not return 0");
|
|
Assert.IsTrue(null == dbDAS || dbDAS.Length == 0, "No das should be returned when calling DASGet with no user");
|
|
hr = DbAPI.DbAPI.DAS.DASGet(_user, null, clientDbVersion, null, "Prototype", out dbDAS);
|
|
Assert.AreNotEqual(0, hr, "DASGet with no connection should not return 0");
|
|
Assert.IsTrue(null == dbDAS || dbDAS.Length == 0, "No das should be returned when calling DASGet with no connection");
|
|
}
|
|
[Test]
|
|
public void TestDASGetPrototypes()
|
|
{
|
|
if (!_setup) { Setup(); }
|
|
TestLogin();
|
|
var connections = DbAPI.DbAPI.Connections.GetActiveConnections();
|
|
var hr = DbAPI.DbAPI.DAS.DASGet(_user, connections.First(), clientDbVersion, null, "Prototype", out var das);
|
|
Assert.AreEqual(0, hr, "DASGet Executed");
|
|
Assert.IsNotNull(das, "DAS not null");
|
|
Assert.IsTrue(das.Length > 0, "DAS prototypes in db");
|
|
}
|
|
[Test]
|
|
public void TestDASInsertAndDeleteShouldFail()
|
|
{
|
|
if (!_setup) { Setup(); }
|
|
TestLogin();
|
|
var connections = DbAPI.DbAPI.Connections.GetActiveConnections();
|
|
var das = CreateFakeDAS();
|
|
//test that insert fails properly
|
|
var hr = DbAPI.DbAPI.DAS.DASInsert(null, connections.First(), das);
|
|
Assert.AreNotEqual(0, hr, "DASInsert should not return 0 with no user");
|
|
hr = DbAPI.DbAPI.DAS.DASInsert(_user, null, das);
|
|
Assert.AreNotEqual(0, hr, "DASInsert should not return 0 with no connection");
|
|
hr = DbAPI.DbAPI.DAS.DASInsert(_user, connections.First(), null);
|
|
Assert.AreNotEqual(0, hr, "DASInsert should not return 0 with no DAS");
|
|
|
|
//insert so that we can test that delete fails properly
|
|
hr = DbAPI.DbAPI.DAS.DASInsert(_user, connections.First(), das);
|
|
hr = DbAPI.DbAPI.DAS.DASGet(_user, connections.First(), clientDbVersion, das.SerialNumber, null, out var dbRecord);
|
|
|
|
//test that delete fails properly
|
|
hr = DbAPI.DbAPI.DAS.DASDelete(null, connections.First(), dbRecord[0].DASId, dbRecord[0].SerialNumber, false);
|
|
Assert.AreNotEqual(0, hr, "DAS delete without a user should not return 0");
|
|
hr = DbAPI.DbAPI.DAS.DASDelete(_user, null, dbRecord[0].DASId, dbRecord[0].SerialNumber, false);
|
|
Assert.AreNotEqual(0, hr, "DAS delete without a connection should not return 0");
|
|
hr = DbAPI.DbAPI.DAS.DASDelete(_user, connections.First(), -1, null, false);
|
|
Assert.AreNotEqual(0, hr, "DAS delete without a DAS should not return 0");
|
|
|
|
//now finally cleanup
|
|
hr = DbAPI.DbAPI.DAS.DASDelete(_user, connections.First(), dbRecord[0].DASId, dbRecord[0].SerialNumber, false);
|
|
}
|
|
|
|
[Test]
|
|
public void TestDASInsertAndDelete()
|
|
{
|
|
if (!_setup) { Setup(); }
|
|
TestLogin();
|
|
var connections = DbAPI.DbAPI.Connections.GetActiveConnections();
|
|
var das = CreateFakeDAS();
|
|
var hr = DbAPI.DbAPI.DAS.DASInsert(_user, connections.First(), das);
|
|
Assert.AreEqual(0, hr, "DASInsert Executed");
|
|
hr = DbAPI.DbAPI.DAS.DASGet(_user, connections.First(), clientDbVersion, das.SerialNumber, null, out var dbRecord);
|
|
Assert.AreEqual(0, hr, "DASGet Inserted DAS");
|
|
Assert.IsNotNull(dbRecord, "Retrieved das not null");
|
|
Assert.AreEqual(1, dbRecord.Length, "1 das was retrieved");
|
|
hr = DbAPI.DbAPI.DAS.DASDelete(_user, connections.First(), das.DASId, dbRecord[0].SerialNumber, false);
|
|
Assert.AreEqual(0, hr, "DASDelete executed");
|
|
hr = DbAPI.DbAPI.DAS.DASGet(_user, connections.First(), clientDbVersion, dbRecord[0].SerialNumber, null, out var dbDAS);
|
|
Assert.AreEqual(0, hr, "DASGet executed after delete");
|
|
Assert.IsTrue(null == dbDAS || dbDAS.Length < 1, "DAS no longer in db afer delete");
|
|
}
|
|
[Test]
|
|
public void TestDASChannelInsertAndDASDelete()
|
|
{
|
|
if (!_setup) { Setup(); }
|
|
TestLogin();
|
|
var connections = DbAPI.DbAPI.Connections.GetActiveConnections();
|
|
var das = CreateFakeDAS();
|
|
|
|
var hr = DbAPI.DbAPI.DAS.DASInsert(_user, connections.First(), das);
|
|
Assert.AreEqual(0, hr, "DASInsert Executed");
|
|
|
|
hr = DbAPI.DbAPI.DAS.DASGet(_user, connections.First(), clientDbVersion, das.SerialNumber, null, out var dbRecord);
|
|
Assert.AreEqual(0, hr, "DASGet Inserted DAS");
|
|
Assert.IsNotNull(dbRecord, "Retrieved das not null");
|
|
Assert.AreEqual(1, dbRecord.Length, "1 das was retrieved");
|
|
|
|
var channels = CreateFakeChannels(das);
|
|
foreach (var channel in channels)
|
|
{
|
|
IDASChannelDBRecord iCh = channel;
|
|
hr = DbAPI.DbAPI.DAS.DASChannelsInsert(_user, connections.First(), $"{das.SerialNumber}_{das.DASType}", ref iCh);
|
|
Assert.AreEqual(0, hr, "DASChannelsInsert executed");
|
|
}
|
|
|
|
hr = DbAPI.DbAPI.DAS.DASChannelsGet(_user, connections.First(), $"{das.SerialNumber}_{das.DASType}", out var dbChannels);
|
|
Assert.AreEqual(0, hr, "DASChannelsGet executed");
|
|
|
|
Assert.IsNotNull(dbChannels, "Channels retrieved after insertion");
|
|
Assert.AreEqual(dbChannels.Length, channels.Length, "Same # of channels retrieved as inserted");
|
|
|
|
hr = DbAPI.DbAPI.DAS.DASDelete(_user, connections.First(), das.DASId, dbRecord[0].SerialNumber, false);
|
|
Assert.AreEqual(0, hr, "DASDelete executed");
|
|
|
|
hr = DbAPI.DbAPI.DAS.DASGet(_user, connections.First(), clientDbVersion, dbRecord[0].SerialNumber, null, out var dbDAS);
|
|
Assert.AreEqual(0, hr, "DASGet executed after delete");
|
|
Assert.IsTrue(null == dbDAS || dbDAS.Length < 1, "DAS no longer in db after delete");
|
|
|
|
hr = DbAPI.DbAPI.DAS.DASChannelsGet(_user, connections.First(), $"{das.SerialNumber}_{das.DASType}", out var dbChannelsAfterDelete);
|
|
Assert.AreEqual(0, hr, "DASChannelsGet after delete das executes");
|
|
Assert.IsTrue(null == dbChannelsAfterDelete || 0 == dbChannelsAfterDelete.Length, "No channels remain after das delete");
|
|
}
|
|
|
|
[Test]
|
|
public void TestDASChannelsDelete()
|
|
{
|
|
if (!_setup) { Setup(); }
|
|
TestLogin();
|
|
var connections = DbAPI.DbAPI.Connections.GetActiveConnections();
|
|
var das = CreateFakeDAS();
|
|
|
|
var hr = DbAPI.DbAPI.DAS.DASInsert(_user, connections.First(), das);
|
|
Assert.AreEqual(0, hr, "DASInsert Executed");
|
|
|
|
hr = DbAPI.DbAPI.DAS.DASGet(_user, connections.First(), clientDbVersion, das.SerialNumber, null, out var dbRecord);
|
|
Assert.AreEqual(0, hr, "DASGet Inserted DAS");
|
|
Assert.IsNotNull(dbRecord, "Retrieved das not null");
|
|
Assert.AreEqual(1, dbRecord.Length, "1 das was retrieved");
|
|
|
|
var channels = CreateFakeChannels(das);
|
|
foreach (var channel in channels)
|
|
{
|
|
IDASChannelDBRecord iCh = channel;
|
|
hr = DbAPI.DbAPI.DAS.DASChannelsInsert(_user, connections.First(), $"{das.SerialNumber}_{das.DASType}", ref iCh);
|
|
Assert.AreEqual(0, hr, "DASChannelsInsert executed");
|
|
}
|
|
|
|
hr = DbAPI.DbAPI.DAS.DASChannelsGet(_user, connections.First(), $"{das.SerialNumber}_{das.DASType}", out var dbChannels);
|
|
Assert.AreEqual(0, hr, "DASChannelsGet executed");
|
|
|
|
Assert.IsNotNull(dbChannels, "Channels retrieved after insertion");
|
|
Assert.AreEqual(dbChannels.Length, channels.Length, "Same # of channels retrieved as inserted");
|
|
|
|
hr = DbAPI.DbAPI.DAS.DASChannelsDelete(_user, connections.First(), $"{das.SerialNumber}_{das.DASType}");
|
|
Assert.AreEqual(0, hr, "DASChannelsDelete executes");
|
|
|
|
hr = DbAPI.DbAPI.DAS.DASChannelsGet(_user, connections.First(), $"{das.SerialNumber}_{das.DASType}", out var dbChannelsAfterDelete);
|
|
Assert.AreEqual(0, hr, "DASChannelsGet after daschannelsdelete executes");
|
|
Assert.IsTrue(null == dbChannelsAfterDelete || 0 == dbChannelsAfterDelete.Length, "No channels remain after daschannelsdelete");
|
|
|
|
hr = DbAPI.DbAPI.DAS.DASDelete(_user, connections.First(), das.DASId, dbRecord[0].SerialNumber, false);
|
|
Assert.AreEqual(0, hr, "DASDelete executed");
|
|
|
|
hr = DbAPI.DbAPI.DAS.DASGet(_user, connections.First(), clientDbVersion, dbRecord[0].SerialNumber, null, out var dbDAS);
|
|
Assert.AreEqual(0, hr, "DASGet executed after delete");
|
|
Assert.IsTrue(null == dbDAS || dbDAS.Length < 1, "DAS no longer in db after delete");
|
|
}
|
|
private DASChannelDBRecord[] CreateFakeChannels(DASDBRecord das)
|
|
{
|
|
var list = new List<DASChannelDBRecord>();
|
|
|
|
for (var i = 0; i < das.Channels; i++)
|
|
{
|
|
var channel = new DASChannelDBRecord();
|
|
channel.ChannelIdx = i;
|
|
channel.DaschannelId = i;
|
|
channel.DASDisplayOrder = i;
|
|
channel.Dasid = das.DASId;
|
|
channel.HardwareId = $"{das.SerialNumber}_{das.DASType}";
|
|
channel.LocalOnly = false;
|
|
channel.ModuleArrayIndex = 0;
|
|
channel.ModuleSerialNumber = "FakeMod0";
|
|
list.Add(channel);
|
|
}
|
|
|
|
return list.ToArray();
|
|
}
|
|
private DASDBRecord CreateFakeDAS()
|
|
{
|
|
var das = new DASDBRecord();
|
|
das.SerialNumber = Guid.NewGuid().ToString().Substring(0, 10);
|
|
das.Position = "";
|
|
das.LastModifiedBy = "";
|
|
das.LastModified = DateTime.Now;
|
|
das.LastUsed = DateTime.Now;
|
|
das.LastUsedBy = "NUNIT";
|
|
das.DASType = 18;
|
|
das.ChannelTypes = new[] { 1, 2, 3 };
|
|
das.Channels = 3;
|
|
das.Position = "";
|
|
return das;
|
|
}
|
|
}
|
|
}
|