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

View File

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

View File

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