NormData Refactor (#30)

* Switched NormData Data property to a method

* Corrected NormData summary comment

* Updated NormData GetData to use Marshal.Copy

* Fixed warnings

* Updated NormData design
pull/85/head
mullerj 2024-05-27 16:26:42 -04:00 committed by GitHub
parent 1d91fdef33
commit 3cdb415e8a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 13 additions and 19 deletions

View File

@ -1,7 +1,7 @@
@startuml
class NormData {
~ NormData(handle:long)
+ byte[] Data <<get>>
+ byte[] GetData()
}
NormObject <|-- NormData
@enduml

View File

@ -3,7 +3,7 @@
namespace Mil.Navy.Nrl.Norm
{
/// <summary>
/// A transport object of type NORM_OBJECT_FILE.
/// A transport object of type NORM_OBJECT_DATA.
/// </summary>
/// <remarks>
/// The data storage area for the specified transport object.
@ -11,22 +11,16 @@ namespace Mil.Navy.Nrl.Norm
public class NormData : NormObject
{
/// <summary>
/// The data storage area associated with a transport object of type NORM_OBJECT_DATA.
/// Get the data storage area associated with a transport object of type NORM_OBJECT_DATA.
/// </summary>
public byte[] Data
{
get
public byte[] GetData()
{
var dataPointer = NormDataAccessData(_handle);
var length = NormObjectGetSize(_handle);
var data = new byte[length];
for (var i = 0; i < length; i++)
{
data[i] = Marshal.ReadByte(dataPointer, i);
}
Marshal.Copy(dataPointer, data, 0, length);
return data;
}
}
/// <summary>
/// Constructor of NormData

View File

@ -93,7 +93,7 @@ namespace Mil.Navy.Nrl.Norm.IntegrationTests
if (_isReceiverStarted && !_isReceiverStopped)
{
_normSession.StopReceiver();
_isSenderStopped = true;
_isReceiverStopped = true;
}
}
@ -412,7 +412,7 @@ namespace Mil.Navy.Nrl.Norm.IntegrationTests
var expectedEventTypes = new List<NormEventType> { NormEventType.NORM_TX_OBJECT_SENT, NormEventType.NORM_TX_QUEUE_EMPTY };
var actualEventTypes = GetEvents().Select(e => e.Type).ToList();
Assert.Equal(expectedEventTypes, actualEventTypes);
var actualData = normData.Data;
var actualData = normData.GetData();
Assert.Equal(expectedData, actualData);
var actualContent = Encoding.ASCII.GetString(actualData);
Assert.Equal(expectedContent, actualContent);
@ -464,9 +464,9 @@ namespace Mil.Navy.Nrl.Norm.IntegrationTests
Assert.Equivalent(expectedEventTypes, actualEventTypes);
var actualEvent = actualEvents.FirstOrDefault(e => e.Type == NormEventType.NORM_RX_OBJECT_COMPLETED);
var actualNormData = Assert.IsType<NormData>(actualEvent.Object);
var actualNormData = Assert.IsType<NormData>(actualEvent?.Object);
var actualData = actualNormData.Data;
var actualData = actualNormData.GetData();
Assert.Equal(expectedData, actualData);
var actualContent = Encoding.ASCII.GetString(actualData);
Assert.Equal(expectedContent, actualContent);