using DbAPI.Errors; using DTS.Common.Classes.Groups; using DTS.Common.Classes.TestSetups; using DTS.Common.Interface.DataRecorders; using DTS.Common.Interface.Groups; using DTS.Common.Interface.TestSetups; using NUnit.Framework; using System; using System.Linq; namespace DatabaseUnitTesting { [TestFixture] public partial class DBAPITests { [Test] public void TestTestSetupHardwarePositive() { if (!_setup) { Setup(); } TestLogin(); var con = DbAPI.DbAPI.Connections.GetActiveConnections()[0]; var test = CreateFakeTestSetup(); _ = DbAPI.DbAPI.TestSetups.TestSetupsUpdateInsert(_user, con, 0, ref test); var group = CreateFakeGroup("Fake Test Group", null); var channel = CreateFakeChannel(); var hardware = CreateFakeDAS(); var hwChannels = CreateFakeChannels(hardware); _ = DbAPI.DbAPI.DAS.DASInsert(_user, con, hardware); var chIdx = 0; foreach (var hwCh in hwChannels) { IDASChannelDBRecord iCh = hwCh; _ = DbAPI.DbAPI.DAS.DASChannelsInsert(_user, con, $"{hardware.SerialNumber}_{hardware.DASType}", ref iCh); chIdx++; } var hwRecord = new TestSetupHardwareRecord() { AddDAS = true, DASId = hardware.DASId, AntiAliasFilterRate = 2000, IsClockMaster = false, SamplesPerSecond = 20000, TestSetupId = test.Id, PTPDomainId = 0 }; var hr = DbAPI.DbAPI.TestSetups.TestSetupHardwareInsert(_user, con, hwRecord); Assert.IsTrue(0 == hr, "TestSetupHardwareInsert returns 0"); hr = DbAPI.DbAPI.TestSetups.TestSetupHardwareGet(_user, con, con.ClientDbVersion, null, out var hwRecords); Assert.IsTrue(0 == hr && null != hwRecords && 0 != hwRecords.Length && hwRecords.Any(h => IsTestSetupHardwareRecordsEqual(h, hwRecord)), "TestSetupHardwareGet returns 0 and has record inserted"); var hwRecordToUpdate = new TestSetupHardwareRecord(hwRecord); hwRecordToUpdate.SamplesPerSecond = 10000; hwRecordToUpdate.AddDAS = false; hr = DbAPI.DbAPI.TestSetups.TestSetupHardwareUpdate(_user, con, hwRecordToUpdate); Assert.IsTrue(0 == hr, "TestSetupHardwareUpdate returns 0"); hr = DbAPI.DbAPI.TestSetups.TestSetupHardwareGet(_user, con, con.ClientDbVersion, null, out hwRecords); Assert.IsTrue(0 == hr && null != hwRecords && 0 != hwRecords.Length && hwRecords.Any(h => IsTestSetupHardwareRecordsEqual(h, hwRecordToUpdate)) && !hwRecords.Any(h => IsTestSetupHardwareRecordsEqual(h, hwRecord)), $"TestSetupHardwareGet returned updated record and not previous inserted record"); hr = DbAPI.DbAPI.TestSetups.TestSetupHardwareDelete(_user, con, null, hwRecord.DASId, null); Assert.IsTrue(0 == hr, "TestSetupHardwareDelete returns 0"); hr = DbAPI.DbAPI.TestSetups.TestSetupHardwareGet(_user, con, con.ClientDbVersion, null, out hwRecords); Assert.IsTrue(0 == hr && (null == hwRecords || 0 == hwRecords.Length || !hwRecords.Any(h => h.DASId == hwRecord.DASId)), "TestSetupHardwareDelete deletes records"); _ = DbAPI.DbAPI.TestSetups.TestSetupsDeleteById(_user, con, new[] { test.Id }); _ = DbAPI.DbAPI.DAS.DASDelete(_user, con, hardware.DASId, hardware.SerialNumber, false); } private bool IsTestSetupHardwareRecordsEqual(ITestSetupHardwareRecord left, ITestSetupHardwareRecord right) { return left.AddDAS == right.AddDAS && left.AntiAliasFilterRate == right.AntiAliasFilterRate && left.DASId == right.DASId && left.IsClockMaster == right.IsClockMaster && left.SamplesPerSecond == right.SamplesPerSecond && left.TestSetupId == right.TestSetupId && left.PTPDomainId == right.PTPDomainId; } [Test] public void TestTestSetupHardwareNegative() { if (!_setup) { Setup(); } TestLogin(); var con = DbAPI.DbAPI.Connections.GetActiveConnections()[0]; var test = CreateFakeTestSetup(); _ = DbAPI.DbAPI.TestSetups.TestSetupsUpdateInsert(_user, con, 0, ref test); var group = CreateFakeGroup("Fake Test Group", null); var channel = CreateFakeChannel(); var hardware = CreateFakeDAS(); var hwChannels = CreateFakeChannels(hardware); _ = DbAPI.DbAPI.DAS.DASInsert(_user, con, hardware); var chIdx = 0; foreach (var hwCh in hwChannels) { IDASChannelDBRecord iCh = hwCh; _ = DbAPI.DbAPI.DAS.DASChannelsInsert(_user, con, $"{hardware.SerialNumber}_{hardware.DASType}", ref iCh); chIdx++; } var hwRecord = new TestSetupHardwareRecord() { AddDAS = true, DASId = hardware.DASId, AntiAliasFilterRate = 2000, IsClockMaster = false, SamplesPerSecond = 20000, TestSetupId = test.Id, PTPDomainId = 0 }; var hr = DbAPI.DbAPI.TestSetups.TestSetupHardwareInsert(_user, null, hwRecord); Assert.IsTrue(0 != hr, "TestSetupHardwareInsert should not return 0 without a user"); hr = DbAPI.DbAPI.TestSetups.TestSetupHardwareInsert(null, con, hwRecord); Assert.IsTrue(0 != hr, "TestSetupHardwareInsert should not return 0 without a connection"); hr = DbAPI.DbAPI.TestSetups.TestSetupHardwareInsert(_user, con, null); Assert.IsTrue(ErrorCodes.ERROR_MISSING_PARAMETER == hr, "TestSetupHardwareInsert should return missing parameter with empty hardware"); _ = DbAPI.DbAPI.TestSetups.TestSetupHardwareInsert(_user, con, hwRecord); hr = DbAPI.DbAPI.TestSetups.TestSetupHardwareGet(null, con, con.ClientDbVersion, null, out var hardwareRecords); Assert.IsTrue(0 != hr, "TestSetupHardwareGet with null user should not return 0"); hr = DbAPI.DbAPI.TestSetups.TestSetupHardwareGet(_user, null, clientDbVersion, null, out hardwareRecords); Assert.IsTrue(0 != hr, "TestSetupHardwareGet with null connection should not return 0"); hr = DbAPI.DbAPI.TestSetups.TestSetupHardwareGet(_user, con, con.ClientDbVersion, test.Id + 1, out hardwareRecords); Assert.IsTrue(0 != hr || null == hardwareRecords || 0 == hardwareRecords.Length, "TestSetupHardwareGet with a different test id should not return the hardware record"); var hwRecordToUpdate = new TestSetupHardwareRecord(hwRecord); hwRecordToUpdate.SamplesPerSecond = 10000; hwRecordToUpdate.AddDAS = false; hr = DbAPI.DbAPI.TestSetups.TestSetupHardwareUpdate(null, con, hwRecordToUpdate); Assert.IsTrue(0 != hr, "TestSetupHardwareUpdate with null user should not return 0"); hr = DbAPI.DbAPI.TestSetups.TestSetupHardwareUpdate(_user, null, hwRecordToUpdate); Assert.IsTrue(0 != hr, "TestSetupHardwareUpdate with null connection should not return 0"); hr = DbAPI.DbAPI.TestSetups.TestSetupHardwareUpdate(_user, con, null); Assert.IsTrue(ErrorCodes.ERROR_MISSING_PARAMETER == hr, "TestSetupHardwareUpdate with null hardware should return missing parameter"); hr = DbAPI.DbAPI.TestSetups.TestSetupHardwareDelete(null, con, null, hwRecord.DASId, null); Assert.IsTrue(0 != hr, "TestSetupHardwareDelete with null user should not return 0"); hr = DbAPI.DbAPI.TestSetups.TestSetupHardwareDelete(_user, null, null, hwRecord.DASId, null); Assert.IsTrue(0 != hr, "TestSetupHardwareDelete with null connection should not return 0"); hr = DbAPI.DbAPI.TestSetups.TestSetupHardwareDelete(_user, con, null, null, null); Assert.IsTrue(ErrorCodes.ERROR_MISSING_PARAMETER == hr, "TestSetupHardwareDelete with no parameters should return missing parameter"); _ = DbAPI.DbAPI.TestSetups.TestSetupHardwareDelete(_user, con, null, hwRecord.DASId, null); _ = DbAPI.DbAPI.TestSetups.TestSetupsDeleteById(_user, con, new[] { test.Id }); _ = DbAPI.DbAPI.DAS.DASDelete(_user, con, hardware.DASId, hardware.SerialNumber, false); } } }