This commit is contained in:
2026-04-17 14:55:32 -04:00
commit bc3ac1d4c9
18017 changed files with 4371742 additions and 0 deletions

View File

@@ -0,0 +1,204 @@
using DTS.Common.Classes.Tags;
using DTS.Common.Interface.Sensors;
using DTS.Common.Interface.Tags;
using DTS.Common.Interface.TestSetups.TestSetupsList;
using NUnit.Framework;
using System;
using System.Linq;
namespace DatabaseUnitTesting
{
[TestFixture]
public partial class DBAPITests
{
[Test]
public void TagsTestGetNegatives()
{
if (!_setup) { Setup(); }
TestLogin();
var connections = DbAPI.DbAPI.Connections.GetActiveConnections();
var tag = CreateFakeTag();
//insert a tag just so that we have something that _might_ be returned
var hr = DbAPI.DbAPI.Tags.TagsInsert(_user, connections.First(), ref tag);
Assert.IsTrue(0 == hr, "TagsInsert returned 0");
hr = DbAPI.DbAPI.Tags.TagsGet(null, connections.First(), null, out var records);
Assert.IsTrue(0 != hr && (null == records || 0 == records.Length), "TagsGet should not allow null user");
hr = DbAPI.DbAPI.Tags.TagsGet(_user, null, null, out records);
Assert.IsTrue(0 != hr && (null == records || 0 == records.Length), "TagsGet should not allow null connection");
hr = DbAPI.DbAPI.Tags.TagsGetId(null, connections.First(), tag.Text, out var id);
Assert.IsTrue(0 != hr && null == id, "TagsGetId should not allow null user");
hr = DbAPI.DbAPI.Tags.TagsGetId(_user, null, tag.Text, out id);
Assert.IsTrue(0 != hr && null == id, "TagsGetId should not allow null connection");
ITag tag2 = null;
hr = DbAPI.DbAPI.Tags.TagsInsert(_user, connections.First(), ref tag2);
Assert.IsTrue(DbAPI.Errors.ErrorCodes.ERROR_MISSING_PARAMETER == hr, "TagsInsert with null does return missing parameter");
hr = DbAPI.DbAPI.Tags.TagsDelete(null, connections.First(), tag.ID);
Assert.IsTrue(0 != hr, "TagsDelete should not allow null user");
hr = DbAPI.DbAPI.Tags.TagsDelete(_user, null, tag.ID);
Assert.IsTrue(0 != hr, "TagsDelete should not allow null connection");
hr = DbAPI.DbAPI.Tags.TagsDelete(_user, connections.First(), tag.ID);
Assert.IsTrue(0 == hr, "TagsDelete returns 0");
}
[Test]
public void TagsTestGetPositives()
{
if (!_setup) { Setup(); }
TestLogin();
var connections = DbAPI.DbAPI.Connections.GetActiveConnections();
var tag = CreateFakeTag();
var hr = DbAPI.DbAPI.Tags.TagsGet(_user, connections.First(), null, out var records);
Assert.IsTrue(0 == hr && (null == records || !records.Any(r => r.Text == tag.Text)),
"TagsGet returns 0 and GUID text not already found");
hr = DbAPI.DbAPI.Tags.TagsInsert(_user, connections.First(), ref tag);
Assert.IsTrue(0 == hr && -1 != tag.ID, "TagsInsert returns 0 and modifies id");
hr = DbAPI.DbAPI.Tags.TagsGet(_user, connections.First(), null, out records);
Assert.IsTrue(0 == hr && null != records && records.Any(r => r.Text == tag.Text && r.ID == tag.ID),
"TagsGet returns 0 and finds the tag");
hr = DbAPI.DbAPI.Tags.TagsGet(_user, connections.First(), tag.ID, out records);
Assert.IsTrue(0 == hr && null != records && records.Length == 1 && TagIsEqual(records[0], tag)
, "TagsGet returns 0, and returns the tag [when passing in id]");
hr = DbAPI.DbAPI.Tags.TagsGetId(_user, connections.First(), tag.Text, out var id);
Assert.IsTrue(0 == hr && null != id && (int)id == tag.ID, "TagsGetId returns 0 and retrieves right id");
hr = DbAPI.DbAPI.Tags.TagsDelete(_user, connections.First(), tag.ID);
Assert.IsTrue(0 == hr, "TagsDelete returns 0");
hr = DbAPI.DbAPI.Tags.TagsGet(_user, connections.First(), null, out records);
Assert.IsTrue(0 == hr && null == records || !records.Any(r => r.Text == tag.Text), "TagsDelete returns 0");
}
private bool TagIsEqual(ITag left, ITag right)
{
return left.ID == right.ID &&
left.IsObsolete == right.IsObsolete &&
left.Text.Equals(right.Text);
}
public static ITag CreateFakeTag()
{
var tag = new Tag();
tag.ID = -1;
tag.Text = Guid.NewGuid().ToString().Substring(0, 15);
return tag;
}
[Test]
public void TagAssignmentsPositives()
{
if (!_setup) { Setup(); }
TestLogin();
var connections = DbAPI.DbAPI.Connections.GetActiveConnections();
var tag = CreateFakeTag();
_ = DbAPI.DbAPI.Tags.TagsInsert(_user, connections.First(), ref tag);
var testSetup = CreateFakeTestSetup();
_ = DbAPI.DbAPI.TestSetups.TestSetupsUpdateInsert(_user, connections.First(), 0, ref testSetup);
var sensor = CreateFakeSensor();
_ = DbAPI.DbAPI.Sensors.SensorsAnalogUpdateInsert(_user, connections.First(), sensor);
var hr = DbAPI.DbAPI.Tags.TagAssignmentsGet(_user, connections.First(), null, out var tagAssignments);
Assert.IsTrue(0 == hr, "TagAssignmentsGet returns 0");
var taTestSetup = CreateTagAssignment(tag, testSetup);
hr = DbAPI.DbAPI.Tags.TagAssignmentsInsert(_user, connections.First(), taTestSetup);
Assert.IsTrue(0 == hr, "TagAssignmentsInsert returns 0");
var taSensor = CreateTagAssignment(tag, sensor);
hr = DbAPI.DbAPI.Tags.TagAssignmentsInsert(_user, connections.First(), taSensor);
Assert.IsTrue(0 == hr, "TagAssignmentsInsert returns 0");
hr = DbAPI.DbAPI.Tags.TagAssignmentsGet(_user, connections.First(), null, out tagAssignments);
Assert.IsTrue(0 == hr && null != tagAssignments &&
tagAssignments.Any(t => IsTagAssignmentEqual(t, taTestSetup)) &&
tagAssignments.Any(t => IsTagAssignmentEqual(t, taSensor)),
"TagAssignmentsGet returns tag assignments");
hr = DbAPI.DbAPI.Tags.TagAssignmentsGet(_user, connections.First(), TagTypes.TestSetup, out tagAssignments);
Assert.IsTrue(0 == hr && null != tagAssignments && tagAssignments.Any(t => IsTagAssignmentEqual(t, taTestSetup)),
"TagAssignmentsGet returns taTestSetup");
hr = DbAPI.DbAPI.Tags.TagAssignmentsGet(_user, connections.First(), TagTypes.Sensors, out tagAssignments);
Assert.IsTrue(0 == hr && null != tagAssignments && tagAssignments.Any(t => IsTagAssignmentEqual(t, taSensor)),
"TagAssignmentsGet returns taSensor");
hr = DbAPI.DbAPI.Tags.TagAssignmentsDelete(_user, connections.First(), taSensor.ObjectID, TagTypes.Sensors);
Assert.IsTrue(0 == hr, "TagAssignmentsDelete returns 0");
hr = DbAPI.DbAPI.Tags.TagAssignmentsDelete(_user, connections.First(), taTestSetup.ObjectID, TagTypes.TestSetup);
Assert.IsTrue(0 == hr, "TagAssignmentsDelete returns 0");
hr = DbAPI.DbAPI.Tags.TagAssignmentsGet(_user, connections.First(), null, out tagAssignments);
Assert.IsTrue(0 == hr && !tagAssignments.Any(t => IsTagAssignmentEqual(t, taSensor))
&& !tagAssignments.Any(t => IsTagAssignmentEqual(t, taTestSetup)), "TagAssignments deleted");
_ = DbAPI.DbAPI.Tags.TagsDelete(_user, connections.First(), tag.ID);
_ = DbAPI.DbAPI.Sensors.SensorsDelete(_user, connections.First(), sensor.Id, 0);
_ = DbAPI.DbAPI.TestSetups.TestSetupsDeleteById(_user, connections.First(), new[] { testSetup.Id });
}
private bool IsTagAssignmentEqual(ITagAssignment left, ITagAssignment right)
{
return left.ObjectID == right.ObjectID
&& left.ObjectType == right.ObjectType
&& left.TagID == right.TagID;
}
private ITagAssignment CreateTagAssignment(ITag tag, IAnalogDbRecord sensor)
{
var ta = new TagAssignment() { ObjectType = TagTypes.Sensors, TagID = tag.ID, ObjectID = sensor.Id };
return ta;
}
private ITagAssignment CreateTagAssignment(ITag tag, ITestSetupRecord test)
{
var ta = new TagAssignment() { ObjectID = test.Id, ObjectType = TagTypes.TestSetup, TagID = tag.ID };
return ta;
}
[Test]
public void TagAssignmentsNegatives()
{
if (!_setup) { Setup(); }
TestLogin();
var con = DbAPI.DbAPI.Connections.GetActiveConnections().First();
var tag = CreateFakeTag();
_ = DbAPI.DbAPI.Tags.TagsInsert(_user, con, ref tag);
var hr = DbAPI.DbAPI.Tags.TagAssignmentsGet(null, con, null, out var tagAssignments);
Assert.IsTrue(0 != hr, "TagAssignmentsGet should not work with null user");
hr = DbAPI.DbAPI.Tags.TagAssignmentsGet(_user, null, null, out tagAssignments);
Assert.IsTrue(0 != hr, "TagAssignmentsGet should not work with null connection");
var sensor = CreateFakeSensor();
_ = DbAPI.DbAPI.Sensors.SensorsAnalogUpdateInsert(_user, con, sensor);
var testSetup = CreateFakeTestSetup();
_ = DbAPI.DbAPI.TestSetups.TestSetupsUpdateInsert(_user, con, 0, ref testSetup);
var taSetup = CreateTagAssignment(tag, testSetup);
var taSensor = CreateTagAssignment(tag, sensor);
hr = DbAPI.DbAPI.Tags.TagAssignmentsInsert(null, con, taSetup);
Assert.IsTrue(0 != hr, "TagAssignmentsInsert should not work with null user");
hr = DbAPI.DbAPI.Tags.TagAssignmentsInsert(_user, null, taSetup);
Assert.IsTrue(0 != hr, "TagAssignmentsInsert should not work with null connection");
hr = DbAPI.DbAPI.Tags.TagAssignmentsInsert(_user, con, null);
Assert.IsTrue(DbAPI.Errors.ErrorCodes.ERROR_MISSING_PARAMETER == hr, "TagAssignmentsInsert should not work with null tagassignment");
hr = DbAPI.DbAPI.TestSetups.TestSetupsDeleteById(_user, con, new[] { testSetup.Id });
Assert.IsTrue(0 == hr, "TestSetupsDelete should work when tag assignments exist");
hr = DbAPI.DbAPI.Sensors.SensorsDelete(_user, con, sensor.Id, 0);
Assert.IsTrue(0 == hr, "SensorsDelete should work when tag assignments exist");
var sensor2 = CreateFakeSensor();
_ = DbAPI.DbAPI.Sensors.SensorsAnalogUpdateInsert(_user, con, sensor);
var taSensor2 = CreateTagAssignment(tag, sensor2);
_ = DbAPI.DbAPI.Tags.TagAssignmentsInsert(_user, con, taSensor2);
hr = DbAPI.DbAPI.Tags.TagsDelete(_user, con, tag.ID);
Assert.IsTrue(0 == hr, "TagsDelete should work when tag assignments exist");
_ = DbAPI.DbAPI.Sensors.SensorsDelete(_user, con, sensor2.Id, 0);
}
}
}