using DTS.Common.Classes.Hardware; using DTS.Common.Classes.Sensors; using DTS.Common.Enums.Sensors; using DTS.Common.Interface.Sensors; using NUnit.Framework; using System; using System.Collections.Generic; using System.Linq; namespace DatabaseUnitTesting { [TestFixture] public partial class DBAPITests { [Test] public void TestSensorsDeleteAll() { if (!_setup) { Setup(); } TestLogin(); var connections = DbAPI.DbAPI.Connections.GetActiveConnections(); var sensor = CreateFakeSensor(); var hr = DbAPI.DbAPI.Sensors.SensorsAnalogUpdateInsert(_user, connections.First(), sensor); Assert.AreEqual(0, hr, "SensorsAnalogUpdateInsert should return 0"); Assert.IsTrue(sensor.Id > 0, "Inserted sensor Id should be > 0"); hr = DbAPI.DbAPI.Sensors.SensorsAnalogGet(_user, connections.First(), null, sensor.SerialNumber, null, out var records); Assert.AreEqual(0, hr, "SensorsAnalogGet should return 0 for inserted sensor"); Assert.IsTrue(null != records && 1 == records.Length, "SensorsAnalogGet should return 1 sensor"); hr = DbAPI.DbAPI.Sensors.SensorsDeleteAll(_user, connections.First()); Assert.AreEqual(0, hr, "SensorsDeleteAll should return 0"); hr = DbAPI.DbAPI.Sensors.SensorsAnalogGet(_user, connections.First(), null, null, null, out records); Assert.AreEqual(0, hr, "SensorsAnalogGet should return 0"); Assert.IsTrue(null != records && records.Any(), "After SensorsAnalogDelete test specific A and C should exist"); Assert.IsTrue(records.Any(record => record.SerialNumber == SensorConstants.TEST_SPECIFIC_ANALOG_SERIAL) && records.Any(record => record.SerialNumber == SensorConstants.TEST_SPECIFIC_CLOCK_SERIAL), "TSA and TSC should still exist after delete"); } [Test] public void TestSensorsAnalogInsertAndDelete() { if (!_setup) { Setup(); } TestLogin(); var connections = DbAPI.DbAPI.Connections.GetActiveConnections(); var sensor = CreateFakeSensor(); var hr = DbAPI.DbAPI.Sensors.SensorsAnalogUpdateInsert(_user, connections.First(), sensor); Assert.AreEqual(0, hr, "SensorsAnalogUpdateInsert should return 0"); Assert.IsTrue(sensor.Id > 0, "Inserted sensor Id should be > 0"); hr = DbAPI.DbAPI.Sensors.SensorsAnalogGet(_user, connections.First(), null, sensor.SerialNumber, null, out var records); Assert.AreEqual(0, hr, "SensorsAnalogGet should return 0 for inserted sensor"); Assert.IsTrue(null != records && 1 == records.Length, "SensorsAnalogGet should return 1 sensor"); hr = DbAPI.DbAPI.Sensors.SensorsDelete(_user, connections.First(), sensor.Id, 0); Assert.AreEqual(0, hr, "SensorsDelete should return 0 for inserted sensor"); hr = DbAPI.DbAPI.Sensors.SensorsAnalogGet(_user, connections.First(), null, sensor.SerialNumber, null, out records); Assert.IsTrue(0 == hr && (null == records || 0 == records.Length), "Sensor should no longer return from SensorsAnalogGet"); } [Test] public void TestSensorAnalogInsertAndDeleteShouldFail() { if (!_setup) { Setup(); } TestLogin(); var connections = DbAPI.DbAPI.Connections.GetActiveConnections(); var sensor = CreateFakeSensor(); var hr = DbAPI.DbAPI.Sensors.SensorsAnalogUpdateInsert(null, connections.First(), sensor); Assert.AreNotEqual(0, hr, "SensorsAnalogUpdateInsert should fail without user"); hr = DbAPI.DbAPI.Sensors.SensorsAnalogUpdateInsert(_user, null, sensor); Assert.AreNotEqual(0, hr, "SensorsAnalogUpdateInsert should fail without connect"); hr = DbAPI.DbAPI.Sensors.SensorsAnalogUpdateInsert(_user, connections.First(), sensor); Assert.AreEqual(0, hr, "SensorsAnalogUpdateInsert should return 0"); hr = DbAPI.DbAPI.Sensors.SensorsDelete(null, connections.First(), sensor.Id, 0); Assert.AreNotEqual(0, hr, "SensorsDelete should fail without user"); hr = DbAPI.DbAPI.Sensors.SensorsDelete(_user, null, sensor.Id, 0); Assert.AreNotEqual(0, hr, "SensorsDelete should fail without connection"); hr = DbAPI.DbAPI.Sensors.SensorsDelete(_user, connections.First(), sensor.Id, 0); } [Test] public void TestSensorsAnalogBridgeResistanceGet() { if (!_setup) { Setup(); } TestLogin(); var connections = DbAPI.DbAPI.Connections.GetActiveConnections(); var sensor = CreateFakeSensor(); var hr = DbAPI.DbAPI.Sensors.SensorsAnalogUpdateInsert(_user, connections.First(), sensor); Assert.AreEqual(0, hr, "SensorsAnalogUpdateInsert should return 0"); Assert.IsTrue(sensor.Id > 0, "Inserted sensor Id should be > 0"); hr = DbAPI.DbAPI.Sensors.SensorsAnalogGet(_user, connections.First(), null, sensor.SerialNumber, null, out var records); Assert.AreEqual(0, hr, "SensorsAnalogGet should return 0 for inserted sensor"); Assert.IsTrue(null != records && 1 == records.Length, "SensorsAnalogGet should return 1 sensor"); hr = DbAPI.DbAPI.Sensors.SensorsAnalogBridgeResistanceGet(_user, connections.First(), sensor.SerialNumber, out var resistance); Assert.AreEqual(0, hr, "SensorsAnalogBridgeResistanceGet returns 0"); Assert.AreEqual(resistance, FAKE_BRIDGE_RESISTANCE_OMS, "BridgeResistance returns the same as was set"); hr = DbAPI.DbAPI.Sensors.SensorsDelete(_user, connections.First(), sensor.Id, 0); Assert.AreEqual(0, hr, "SensorsDelete should return 0 for inserted sensor"); hr = DbAPI.DbAPI.Sensors.SensorsAnalogGet(_user, connections.First(), null, sensor.SerialNumber, null, out records); Assert.IsTrue(0 == hr && (null == records || 0 == records.Length), "Sensor should no longer return from SensorsAnalogGet"); } private const double FAKE_BRIDGE_RESISTANCE_OMS = 350; private IAnalogDbRecord CreateFakeSensor() { var sensor = new AnalogDbRecord(); sensor.Created = DateTime.Now; sensor.LastModified = DateTime.Now; sensor.EId = ""; sensor.SerialNumber = new Guid().ToString(); sensor.BridgeResistance = FAKE_BRIDGE_RESISTANCE_OMS; return sensor; } } }