Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions src/MIDTesters.Core/Job/TestMid0038.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public void Mid0038Revision1()
string package = "00220038001 01";
var mid = _midInterpreter.Parse<Mid0038>(package);

Assert.IsNotNull(mid.JobId);
Assert.AreEqual(1, mid.JobId);
AssertEqualPackages(package, mid);
}

Expand All @@ -26,7 +26,7 @@ public void Mid0038ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse<Mid0038>(bytes);

Assert.IsNotNull(mid.JobId);
Assert.AreEqual(1, mid.JobId);
AssertEqualPackages(bytes, mid);
}

Expand All @@ -37,7 +37,7 @@ public void Mid0038Revision2()
string package = "00240038002 0001";
var mid = _midInterpreter.Parse<Mid0038>(package);

Assert.IsNotNull(mid.JobId);
Assert.AreEqual(1, mid.JobId);
AssertEqualPackages(package, mid);
}

Expand All @@ -49,8 +49,20 @@ public void Mid0038ByteRevision2()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse<Mid0038>(bytes);

Assert.IsNotNull(mid.JobId);
Assert.AreEqual(1, mid.JobId);
AssertEqualPackages(bytes, mid);
}

[TestMethod]
[TestCategory("Revision 2"), TestCategory("ByteArray")]
public void Mid0038PackRevision2()
{
var mid = new Mid0038(2);
mid.JobId = 1;
var actual = mid.PackBytes();
var package = "00240038002 0001";

CollectionAssert.AreEqual(GetAsciiBytes(package), actual);
}
}
}
4 changes: 2 additions & 2 deletions src/MIDTesters.Core/MidTester.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@ protected void AssertEqualPackages(string expected, Mid mid, bool useEmptyRevisi
Assert.AreEqual(expected, mid.Pack());
}

protected void AssertEqualPackages(IEnumerable<byte> expected, Mid mid, bool useEmptyRevision = false)
protected void AssertEqualPackages(IReadOnlyCollection<byte> expected, Mid mid, bool useEmptyRevision = false)
{
if (useEmptyRevision)
{
mid.Header.Revision = 0;
}

mid.Header.StationId = mid.Header.SpindleId = null;
Assert.IsTrue(mid.PackBytes().SequenceEqual(expected));
CollectionAssert.AreEqual(expected.ToArray(), mid.PackBytes());
}
}
}
23 changes: 13 additions & 10 deletions src/OpenProtocolInterpreter/Job/Mid0038.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,23 +58,26 @@ protected override Dictionary<int, List<DataField>> RegisterDatafields()
{
{
1, new List<DataField>()
{
DataField.Number(DataFields.JobId, 20, 2, false),
}
{
DataField.Number(DataFields.JobId, 20, GetJobIdSize(), false),
}
}
};
}

private void HandleRevision()
{
if (Header.Revision > 1)
{
GetField(1, DataFields.JobId).Size = 4;
}
else
var dataField = GetField(1, DataFields.JobId);
dataField.Size = GetJobIdSize();
}

private int GetJobIdSize()
{
return Header.StandardizedRevision switch
{
GetField(1, DataFields.JobId).Size = 2;
}
<= 1 => 2,
_ => 4
};
}

protected enum DataFields
Expand Down
6 changes: 3 additions & 3 deletions src/OpenProtocolInterpreter/MID.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ protected virtual string BuildHeader()
{
if (RevisionsByFields.Any())
{
Header.Length = 20;
for (int i = 1; i <= (Header.Revision > 0 ? Header.Revision : 1); i++)
Header.Length = Header.DefaultSize;
for (int i = 1; i <= Header.StandardizedRevision; i++)
{
if (RevisionsByFields.TryGetValue(i, out var dataFields))
{
Expand All @@ -59,7 +59,7 @@ public virtual string Pack()

var builder = new StringBuilder(header);
int prefixIndex = 1;
var revision = (Header.Revision > 0 ? Header.Revision : 1);
var revision = Header.StandardizedRevision;
for (int i = 1; i <= revision; i++)
{
builder.Append(Pack(i, ref prefixIndex));
Expand Down
Loading