Asset Library 기능 추가

This commit is contained in:
logonkhi
2025-09-26 18:08:07 +09:00
parent 52f60f3fc4
commit 607eb6a659
210 changed files with 46464 additions and 335667 deletions

View File

@@ -61,9 +61,9 @@ namespace UVC.Tests.Data
{
// 테스트에 사용할 DataObject 아이템들을 초기화합니다.
// UpdateDifferent 메서드가 Id를 기준으로 동작하므로 Id를 설정합니다.
_item1 = new DataObject { { "id", "1" }, { "value", "A" } };
_item2 = new DataObject { { "id", "2" }, { "value", "B" } };
_item3 = new DataObject { { "id", "3" }, { "value", "C" } };
_item1 = new DataObject { { "Id", "1" }, { "value", "A" } };
_item2 = new DataObject { { "Id", "2" }, { "value", "B" } };
_item3 = new DataObject { { "Id", "3" }, { "value", "C" } };
// 각 테스트 전에 DataArray를 초기화합니다.
_dataArray = new DataArray(new[] { _item1, _item2 });
@@ -110,8 +110,8 @@ namespace UVC.Tests.Data
{
// Arrange
// 기존 항목 수정, 새 항목 추가를 포함하는 다른 DataArray 생성
var item2Modified = new DataObject { { "id", "2" }, { "value", "B_modified" } };
var item4New = new DataObject { { "id", "4" }, { "value", "D" } };
var item2Modified = new DataObject { { "Id", "2" }, { "value", "B_modified" } };
var item4New = new DataObject { { "Id", "4" }, { "value", "D" } };
var otherArray = new DataArray(new[] { item2Modified, item4New });
// Act

View File

@@ -79,7 +79,7 @@ namespace UVC.Tests.Data
// 각 테스트가 실행되기 전에 DataObject를 초기화합니다.
_dataObject = new DataObject
{
{ "id", 1 },
{ "Id", 1 },
{ "name", "Test" },
{ "value", 100.5f },
{ "isActive", true }
@@ -94,7 +94,7 @@ namespace UVC.Tests.Data
// Arrange
var otherDataObject = new DataObject
{
{ "id", 1 }, // 동일한 값
{ "Id", 1 }, // 동일한 값
{ "name", "Updated Test" }, // 변경된 값
{ "newValue", "new" } // 새로 추가된 값
};
@@ -180,7 +180,7 @@ namespace UVC.Tests.Data
public void GetTypeMethods_ReturnCorrectTypes()
{
// Assert
Assert.AreEqual(1, _dataObject.GetInt("id"));
Assert.AreEqual(1, _dataObject.GetInt("Id"));
Assert.AreEqual("Test", _dataObject.GetString("name"));
Assert.AreEqual(100.5f, _dataObject.GetFloat("value"));
Assert.IsTrue(_dataObject.GetBool("isActive"));
@@ -192,7 +192,7 @@ namespace UVC.Tests.Data
// Arrange
var jObject = new JObject
{
{ "id", 10 },
{ "Id", 10 },
{ "user", "jobject_user" }
};
@@ -200,7 +200,7 @@ namespace UVC.Tests.Data
var dataObject = new DataObject(jObject);
// Assert
Assert.AreEqual(10, dataObject.GetInt("id"));
Assert.AreEqual(10, dataObject.GetInt("Id"));
Assert.AreEqual("jobject_user", dataObject.GetString("user"));
Assert.AreEqual(0, dataObject.UpdatedCount, "생성자 호출 시에는 변경 추적을 하지 않아야 합니다.");
}
@@ -209,7 +209,7 @@ namespace UVC.Tests.Data
public void IdProperty_ReturnsCorrectId()
{
// Arrange
_dataObject.IdKey = "id";
_dataObject.IdKey = "Id";
// Act & Assert
Assert.AreEqual("1", _dataObject.Id);

View File

@@ -719,9 +719,9 @@ namespace UVC.Tests.Data
// 여러 응답을 순차적으로 반환하기 위한 응답 데이터 설정
string[] mockResponses = new string[]
{
@"{""message"": ""Success"", ""data"": {""id"": 1, ""status"": ""pending"", ""timestamp"": ""2025-06-09T10:00:00Z""}}",
@"{""message"": ""Success"", ""data"": {""id"": 1, ""status"": ""processing"", ""timestamp"": ""2025-06-09T10:00:10Z""}}",
@"{""message"": ""Success"", ""data"": {""id"": 1, ""status"": ""completed"", ""timestamp"": ""2025-06-09T10:00:20Z""}}"
@"{""message"": ""Success"", ""data"": {""Id"": 1, ""status"": ""pending"", ""timestamp"": ""2025-06-09T10:00:00Z""}}",
@"{""message"": ""Success"", ""data"": {""Id"": 1, ""status"": ""processing"", ""timestamp"": ""2025-06-09T10:00:10Z""}}",
@"{""message"": ""Success"", ""data"": {""Id"": 1, ""status"": ""completed"", ""timestamp"": ""2025-06-09T10:00:20Z""}}"
};
// Mock 응답 설정
@@ -729,7 +729,7 @@ namespace UVC.Tests.Data
// DataMask와 DataMapper 설정
var dataMask = new DataMask();
dataMask["id"] = 0;
dataMask["Id"] = 0;
dataMask["status"] = "";
dataMask["timestamp"] = "";
@@ -798,12 +798,12 @@ namespace UVC.Tests.Data
int repeatInterval = 100;
// Mock 응답 설정
string mockResponse = @"{""message"": ""Success"", ""data"": {""id"": 2, ""status"": ""running"", ""timestamp"": ""2025-06-09T11:00:00Z""}}";
string mockResponse = @"{""message"": ""Success"", ""data"": {""Id"": 2, ""status"": ""running"", ""timestamp"": ""2025-06-09T11:00:00Z""}}";
MockHttpRequester.SetResponse(testUrl, mockResponse);
// DataMask와 DataMapper 설정
var dataMask = new DataMask();
dataMask["id"] = 0;
dataMask["Id"] = 0;
dataMask["status"] = "";
dataMask["timestamp"] = "";
@@ -864,15 +864,15 @@ namespace UVC.Tests.Data
int repeatInterval2 = 150;
// Mock 응답 설정
string mockResponse1 = @"{""message"": ""Success"", ""data"": {""id"": 3, ""name"": ""작업1""}}";
string mockResponse2 = @"{""message"": ""Success"", ""data"": {""id"": 4, ""name"": ""작업2""}}";
string mockResponse1 = @"{""message"": ""Success"", ""data"": {""Id"": 3, ""name"": ""작업1""}}";
string mockResponse2 = @"{""message"": ""Success"", ""data"": {""Id"": 4, ""name"": ""작업2""}}";
MockHttpRequester.SetResponse(testUrl1, mockResponse1);
MockHttpRequester.SetResponse(testUrl2, mockResponse2);
// DataMask 설정
var dataMask = new DataMask();
dataMask["id"] = 0;
dataMask["Id"] = 0;
dataMask["name"] = "";
var dataMapper = new DataMapper(dataMask);
@@ -949,12 +949,12 @@ namespace UVC.Tests.Data
int repeatInterval = 100;
// Mock 응답 설정
string mockResponse = @"{""message"": ""Success"", ""data"": {""id"": 5, ""message"": ""자동 중단 테스트""}}";
string mockResponse = @"{""message"": ""Success"", ""data"": {""Id"": 5, ""message"": ""자동 중단 테스트""}}";
MockHttpRequester.SetResponse(testUrl, mockResponse);
// DataMask 설정
var dataMask = new DataMask();
dataMask["id"] = 0;
dataMask["Id"] = 0;
dataMask["message"] = "";
var dataMapper = new DataMapper(dataMask);
@@ -988,7 +988,7 @@ namespace UVC.Tests.Data
var data = receivedData[0];
Assert.IsNotNull(data, "데이터가 null입니다");
var dataObject = data as DataObject;
Assert.AreEqual(5, dataObject?.GetInt("id"), "ID가 올바르지 않습니다");
Assert.AreEqual(5, dataObject?.GetInt("Id"), "ID가 올바르지 않습니다");
Assert.AreEqual("자동 중단 테스트", dataObject?.GetString("message"), "메시지가 올바르지 않습니다");
// 자동으로 제거되었는지 확인
@@ -1149,10 +1149,10 @@ namespace UVC.Tests.Data
bool handlerCalled = false;
IDataObject? receivedData = null;
string testUrl = "http://test.com/validator-pass";
var mockResponse = @"{""message"": ""Success"", ""data"": {""id"": 1, ""status"": ""active""}}";
var mockResponse = @"{""message"": ""Success"", ""data"": {""Id"": 1, ""status"": ""active""}}";
MockHttpRequester.SetResponse(testUrl, mockResponse);
var dataMapper = new DataMapper(new DataMask { ["id"] = 0, ["status"] = "" });
var dataMapper = new DataMapper(new DataMask { ["Id"] = 0, ["status"] = "" });
// "status" 필드가 "active"인 경우에만 유효하도록 설정
var validator = new DataValidator();
@@ -1202,10 +1202,10 @@ namespace UVC.Tests.Data
// Arrange
bool handlerCalled = false;
string testUrl = "http://test.com/validator-fail";
var mockResponse = @"{""message"": ""Success"", ""data"": {""id"": 2, ""status"": ""inactive""}}";
var mockResponse = @"{""message"": ""Success"", ""data"": {""Id"": 2, ""status"": ""inactive""}}";
MockHttpRequester.SetResponse(testUrl, mockResponse);
var dataMapper = new DataMapper(new DataMask { ["id"] = 0, ["status"] = "" });
var dataMapper = new DataMapper(new DataMask { ["Id"] = 0, ["status"] = "" });
// "status" 필드가 "active"인 경우에만 유효하도록 설정
var validator = new DataValidator();
@@ -1249,14 +1249,14 @@ namespace UVC.Tests.Data
var mockResponse = @"{
""message"": ""Success"",
""data"": [
{""id"": 1, ""value"": 10},
{""id"": 2, ""value"": 20},
{""id"": 3, ""value"": 5}
{""Id"": 1, ""value"": 10},
{""Id"": 2, ""value"": 20},
{""Id"": 3, ""value"": 5}
]
}";
MockHttpRequester.SetResponse(testUrl, mockResponse);
var dataMapper = new DataMapper(new DataMask { ["id"] = 0, ["value"] = 0 });
var dataMapper = new DataMapper(new DataMask { ["Id"] = 0, ["value"] = 0 });
// "value"가 15보다 큰 항목만 유효하도록 설정
var validator = new DataValidator();

View File

@@ -586,7 +586,7 @@ namespace UVC.Tests.Data
// Arrange
var testPipeLine = new TestMqttDataReceiver();
var handler = new TestDataHandler();
var dataMapper = new DataMapper(new DataMask { ["id"] = 0, ["status"] = "" });
var dataMapper = new DataMapper(new DataMask { ["Id"] = 0, ["status"] = "" });
// "status" 필드가 "active"인 경우에만 유효하도록 설정
var validator = new DataValidator();
@@ -603,7 +603,7 @@ namespace UVC.Tests.Data
testPipeLine.Add(pipelineInfo);
var validMessage = @"{""id"": 1, ""status"": ""active""}";
var validMessage = @"{""Id"": 1, ""status"": ""active""}";
// Act
testPipeLine.TestOnTopicMessage("test_topic", validMessage);
@@ -625,7 +625,7 @@ namespace UVC.Tests.Data
// Arrange
var testPipeLine = new TestMqttDataReceiver();
var handler = new TestDataHandler();
var dataMapper = new DataMapper(new DataMask { ["id"] = 0, ["status"] = "" });
var dataMapper = new DataMapper(new DataMask { ["Id"] = 0, ["status"] = "" });
// "status" 필드가 "active"인 경우에만 유효하도록 설정
var validator = new DataValidator();
@@ -642,7 +642,7 @@ namespace UVC.Tests.Data
testPipeLine.Add(pipelineInfo);
var invalidMessage = @"{""id"": 2, ""status"": ""inactive""}";
var invalidMessage = @"{""Id"": 2, ""status"": ""inactive""}";
// Act
testPipeLine.TestOnTopicMessage("test_topic", invalidMessage);
@@ -662,7 +662,7 @@ namespace UVC.Tests.Data
// Arrange
var testPipeLine = new TestMqttDataReceiver();
var handler = new TestDataHandler();
var dataMapper = new DataMapper(new DataMask { ["id"] = 0, ["value"] = 0 });
var dataMapper = new DataMapper(new DataMask { ["Id"] = 0, ["value"] = 0 });
// "value"가 15보다 큰 항목만 유효하도록 설정
var validator = new DataValidator();
@@ -680,9 +680,9 @@ namespace UVC.Tests.Data
testPipeLine.Add(pipelineInfo);
var arrayMessage = @"[
{""id"": 1, ""value"": 10},
{""id"": 2, ""value"": 20},
{""id"": 3, ""value"": 5}
{""Id"": 1, ""value"": 10},
{""Id"": 2, ""value"": 20},
{""Id"": 3, ""value"": 5}
]";
// Act