diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 00000000..5df9cb86
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,2 @@
+github: rickedb
+buy_me_a_coffee: rickedb
diff --git a/.github/workflows/dotnetcore.yml b/.github/workflows/dotnetcore.yml
index bfe6fb00..707186f9 100644
--- a/.github/workflows/dotnetcore.yml
+++ b/.github/workflows/dotnetcore.yml
@@ -1,6 +1,6 @@
name: dotnetcore
-on:
+on:
pull_request:
types: [opened, synchronize]
push:
@@ -15,7 +15,7 @@ jobs:
- name: Setup .NET Core
uses: actions/setup-dotnet@master
with:
- dotnet-version: |
+ dotnet-version: |
3.1.x
6.0.x
8.0.x
@@ -29,7 +29,7 @@ jobs:
- name: Setup .NET Core
uses: actions/setup-dotnet@master
with:
- dotnet-version: |
+ dotnet-version: |
3.1.x
6.0.x
8.0.x
@@ -37,4 +37,4 @@ jobs:
- name: Build and run .net core tests
run: |
dotnet build src/MIDTesters.Core/MIDTesters.Core.csproj
- dotnet test src/MIDTesters.Core/MIDTesters.Core.csproj
\ No newline at end of file
+ dotnet test src/MIDTesters.Core/MIDTesters.Core.csproj
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index d2d31a46..f2d3b578 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -13,7 +13,7 @@ jobs:
- name: Setup .NET Core
uses: actions/setup-dotnet@master
with:
- dotnet-version: |
+ dotnet-version: |
3.1.x
6.0.x
8.0.x
@@ -27,7 +27,7 @@ jobs:
- name: Setup .NET Core
uses: actions/setup-dotnet@master
with:
- dotnet-version: |
+ dotnet-version: |
3.1.x
6.0.x
8.0.x
@@ -48,4 +48,4 @@ jobs:
- name: Publish NuGet
run: |
dotnet build src/OpenProtocolInterpreter/OpenProtocolInterpreter.csproj --configuration release
- nuget push src/OpenProtocolInterpreter/bin/release/OpenProtocolInterpreter.6.1.2.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate
\ No newline at end of file
+ nuget push src/OpenProtocolInterpreter/bin/release/OpenProtocolInterpreter.6.2.0.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate
diff --git a/.gitignore b/.gitignore
index 38077a5a..92156c41 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,6 +31,7 @@ publishprofiles/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
+BenchmarkDotNet.Artifacts/
# NUNIT
*.VisualState.xml
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 6f871fb6..651bdec5 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,8 +1,13 @@
{
- "dotnet.defaultSolution": "OpenProtocolInterpreter.sln",
- "omnisharp.useModernNet": true,
- "omnisharp.enableRoslynAnalyzers": true,
- "omnisharp.enableEditorConfigSupport": true,
- "omnisharp.enableDecompilationSupport": true,
- "dotnet.completion.showCompletionItemsFromUnimportedNamespaces": true
+ "dotnet.defaultSolution": "OpenProtocolInterpreter.slnx",
+ "omnisharp.useModernNet": true,
+ "omnisharp.enableRoslynAnalyzers": true,
+ "omnisharp.enableEditorConfigSupport": true,
+ "omnisharp.enableDecompilationSupport": true,
+ "dotnet.completion.showCompletionItemsFromUnimportedNamespaces": true,
+ "chat.tools.terminal.autoApprove": {
+ "dotnet build": true,
+ "dotnet test": true
+ },
+ "dotnet.preferCSharpExtension": false
}
diff --git a/OpenProtocolInterpreter.slnx b/OpenProtocolInterpreter.slnx
index ec628101..1171772d 100644
--- a/OpenProtocolInterpreter.slnx
+++ b/OpenProtocolInterpreter.slnx
@@ -1,4 +1,5 @@
+
diff --git a/README.md b/README.md
index 49023b88..009b12e7 100644
--- a/README.md
+++ b/README.md
@@ -1,35 +1,37 @@
-
-
-
-
-
+
+
+[](https://www.nuget.org/packages/OpenProtocolInterpreter)
+[](https://www.nuget.org/packages/OpenProtocolInterpreter)
+[](https://github.com/Rickedb/OpenProtocolInterpreter/actions/workflows/release.yml)
+[](https://raw.githubusercontent.com/Rickedb/OpenProtocolIntepreter/master/LICENSE)
+[](https://github.com/sponsors/rickedb)
+
> OpenProtocol communication utility
- 1. [What is Open Protocol at all?](#what-is-open-protocol-at-all)
+ 1. [What is Open Protocol at all?](#what-is-open-protocol-at-all)
2. [What is OpenProtocolInterpreter?](#what-is-openprotocolinterpreter)
- 3. [How does it work?](#how-does-it-work)
- 4. [Usage examples](#lets-see-some-examples-of-usage)
- 5. [Available on package managers](#get-it-on-nuget)
- 6. [Advanced section](#advanced-section)
+ 3. [Get it on NuGet](#get-it-on-nuget)
+ 4. [How does it work?](#how-does-it-work)
+ 5. [Usage examples](#lets-see-some-examples-of-usage)
+ * [Parsing a package](#parsing-a-package)
+ * [Packing a MID](#packing-a-mid)
+ * [Replies and acknowledges](#replies-and-acknowledges)
+ 6. [Anatomy of a MID](#anatomy-of-a-mid)
+ * [Data field attributes](#data-field-attributes)
+ * [Available attributes](#available-attributes)
+ * [Revisions](#revisions)
+ 7. [Advanced section](#advanced-section)
+ * [MIDs identifying customization](#mids-identifying-customization)
+ * [Extra data (MID 0006, 0008 and 0009)](#extra-data-mid-0006-0008-and-0009)
+ * [MIDs overriding](#mids-overriding)
+ * [Adding MIDs that are not in documentation](#adding-mids-that-are-not-in-documentation)
* [How it was built?](#how-it-was-built)
- * [Customization](#mids-identifying-customization)
* [Advanced example](#advanced-example)
-7. [Tips](#tips)
-8. [Contribute to the project](#contribute-to-the-project)
-9. [Still unavailable mids](#list-of-still-unavailable-mids)
+ 8. [Tips](#tips)
+ 9. [Supported frameworks](#supported-frameworks)
+10. [Contribute to the project](#contribute-to-the-project)
+11. [Sponsor the project](#sponsor-the-project)
+12. [Still unavailable mids](#list-of-still-unavailable-mids)
## What is Open Protocol at all?
@@ -44,13 +46,18 @@ Most common Tightening Controllers from Atlas Copco company are **PowerFocus4000
OpenProtocolInterpreter is a **library that converts the ugly string** that came from Open Protocol packages, which is commonly called **MID**, to an **object**.
*"Substringing"* packages is such a boring thing to do, so let OpenProtocolIntepreter do it for you!
-**[If you're curious, just take a look at their documentation.](https://github.com/Rickedb/OpenProtocolIntepreter/blob/master/docs/OpenProtocol_Specification.pdf)**
+**[If you're curious, just take a look at their documentation.](docs/OpenProtocol_Specification.pdf)**
+
+## Get it on [NuGet](https://www.nuget.org/packages/OpenProtocolInterpreter)!
+```
+Install-Package OpenProtocolInterpreter
+```
## How does it work?
It's simple, you give us your byte[] or string package and we deliver you an object, simple as that!
-For example, let's imagine you received the following string package:
+For example, let's imagine you received the following string package:
``` csharp
string package = "00240005001 0018";
```
@@ -58,83 +65,212 @@ It's **MID 5**, so OpenProtocolIntepreter will return a **Mid0005** class for yo
## Let's see some examples of usage
-A simple usage:
+### Parsing a package
+
+`MidInterpreter` starts empty: you must tell it which MIDs it should know about before parsing anything.
+`UseAllMessages()` is the "give me everything" shortcut — see [MIDs identifying customization](#mids-identifying-customization) to narrow it down.
``` csharp
-var interpreter = new MidInterpreter();
-var midPackage = @"00260004001 001802";
+var interpreter = new MidInterpreter().UseAllMessages();
+
+var midPackage = "00260004001 001802";
var myMid04 = interpreter.Parse(midPackage);
-//MID 0004 is an error mid which contains which MID Failed and its error code
-//Int value of the Failed Mid
-int myFailedMid = myMid04.FailedMid;
-//An enum with Error Code
-Error errorCode = myMid04.ErrorCode;
-```
+
+//MID 0004 is an error mid which contains which MID failed and its error code
+int myFailedMid = myMid04.FailedMid; // 18
+Error errorCode = myMid04.ErrorCode; // Error.ParameterSetIdNotPresent
+```
+
+Everything a MID carries is a plain, settable property, so you can read it straight away.
+`byte[]` packages are accepted by the very same overloads:
+
+``` csharp
+byte[] rawPackage = socket.Receive();
+var mid = interpreter.Parse(rawPackage); // returns Mid, use it when you don't know what is coming
+var mid04 = interpreter.Parse(rawPackage);
+```
+
+> Use `Parse(package)` when you don't know which MID will arrive and `Parse(package)` when you do.
+> The generic overload throws `InvalidCastException` when the package turns out to be another MID.
+
+### Packing a MID
It can generate an object from a string, but can it make it to the other way?? FOR SURE!
+
``` csharp
-var jobUploadRequest = new Mid0032(1, 2); //Job id 1, revision 2
+var jobUploadRequest = new Mid0032(revision: 2) { JobId = 1 };
var package = jobUploadRequest.Pack();
//Generated package => 00240032002 0001
-```
-## Get it on [NuGet](https://www.nuget.org/packages/OpenProtocolInterpreter)!
+var bytes = jobUploadRequest.PackBytes(); // same content, encoded with Mid.DefaultEncoding (ASCII)
+var terminated = jobUploadRequest.PackWithNul(); // appends the NUL character some controllers expect
```
-Install-Package OpenProtocolInterpreter
+
+The header length is recalculated for you on every `Pack()`, based on the revision in `Header.Revision`.
+Every MID exposes a parameterless constructor (revision 1) and a `Mid(Header header)` constructor; the ones that
+have more than one documented revision also expose `Mid(int revision)`.
+
+### Replies and acknowledges
+
+MIDs advertise their relationships through marker interfaces, so it might help you to remember which MID answers which or even give a shortcut for you:
+
+``` csharp
+Mid0062 ack = new Mid0061(2).GetAcknowledge(); // IAcknowledgeable, keeps the source revision
+Mid0033 reply = new Mid0032(2).GetReply(); // IAnswerableBy
```
+## Anatomy of a MID
+
+### Data field attributes
+
+A MID has **each property is decorated with a data field attribute** describing where that value lives inside the package. Which also represents the string index/position of the package accordingly with Open Protocol documentation. E.g.:
+
+``` csharp
+public class Mid0004 : Mid, ICommunication, IController
+{
+ public const int MID = 4;
+
+ [Int32DataFieldDefinition(revision: 1, field: 1, Index = 20, Size = 4, HasPrefix = false)]
+ [Int32DataFieldDefinition(revision: 2, field: 1, Index = 20, Size = 4, HasPrefix = false)]
+ public int FailedMid { get; set; }
+
+ [Int32DataFieldDefinition(revision: 1, field: 2, Index = 24, Size = 2, HasPrefix = false)]
+ [Int32DataFieldDefinition(revision: 2, field: 2, Index = 24, Size = 3, HasPrefix = false)]
+ public Error ErrorCode { get; set; }
+
+ public Mid0004() : this(DEFAULT_REVISION) { }
+ public Mid0004(Header header) : base(header) { }
+ public Mid0004(int revision) : this(new Header { Mid = MID, Revision = revision }) { }
+}
+```
+
+Every attribute accepts:
+
+| Member | Meaning |
+| - | - |
+| `revision` | Revision this definition belongs to. |
+| `field` | Data field id/sequence/index inside the revision. |
+| `Index` | Offset of the value inside the package, counted from the start of the package (the header takes the first 20 chars). |
+| `Size` | Length of the value. Fixed automatically by some attributes that has fixed size (booleans, timestamps). |
+| `HasPrefix` | `true` when the package carries the two digit field id right before the value. |
+| `PaddingChar` | Char used to pad the value to its full size when packing. |
+| `PaddingOrientation` | Defines if char filling `RightPadded` or `LeftPadded` |
+
+Parsing and packing both flow through the same definitions: on `Parse` the slice is read, converted and **written back into the property**; on `Pack` the property value is read, converted and written into the package.
+
+### Available attributes
+
+| Attribute | Property type | Notes |
+| - | - | - |
+| `BooleanDataFieldDefinition` | `bool` | `Size` forced to 1 |
+| `StringDataFieldDefinition` | `string` | Defaultly right padded with `' '`|
+| `Int32DataFieldDefinition` | `int`, `int`-backed `enum` | left padded with `'0'` |
+| `Int64DataFieldDefinition` | `long`, `long`-backed `enum` | left padded with `'0'` |
+| `DecimalDataFieldDefinition` | `decimal` | left padded with `'0'` |
+| `TruncatedDecimalDataFieldDefinition` | `decimal` | `DecimalPoints` (default 2) implicit decimal places |
+| `TimestampDataFieldDefinition` | `DateTime` | `Size` forced to 19, `YYYY-MM-DD:HH:MM:SS` |
+| `Int32CollectionDefinition` | `List` | requires `EachFieldSize` |
+| `EnumCollectionDefinition` | `List` where `T : Enum` | one char per entry |
+| `VariableDataFieldCollectionDefinition` | `List` | the variable data fields block |
+
+### Revisions
+
+At parse/pack time only the definitions up to `Header.StandardizedRevision` are used so we can avoid confusion with revision `0` since when zero or blank it represents revision `1`.
+
## Advanced Section!
Now we will get real!
Put one thing in mind, in real world we will always need to build something more complex than the dummies examples we give to you.
**With this in mind, this section is for you:**
-#### How it was built?
-
-It used to rely on **Chain Of Responsabilities** design pattern, but since we had some problems with instance references, it changed!
-For now, instead of iterating through all Mids of the same category, it relies on a Dictionary, which every category knows which mid it attends, once it found it creates a new Instance via System.Reflection and parse it.
-
#### MIDs Identifying Customization
-We have several MIDs inside Open Protocol documentation, but do you really need all of them?
+We have several MIDs inside Open Protocol documentation, but do you really need all of them?
The answer is... **NO!**
You will probably need only to use a range of MIDs, with this in mind, we did something to make things faster. You can tell us which MIDs we should considerate!
-> *NOTE: You can register only mids you need to call "Parse" method
-
Here is an example:
``` csharp
-string package = "00260004001 001802";
var myCustomInterpreter = new MidInterpreter()
- .UseAllMessages(new Type[]
- {
- typeof(Mid0001),
- typeof(Mid0002),
- typeof(Mid0003),
- typeof(Mid0004),
- typeof(Mid0106)
- });
+ .UseAllMessages(new Type[]
+ {
+ typeof(Mid0001),
+ typeof(Mid0002),
+ typeof(Mid0003),
+ typeof(Mid0004),
+ typeof(Mid0106)
+ });
+
//Will work:
-var myMid04 = myCustomInterpreter.Parse(package);
-//Won't work, will throw NotImplementedException:
-var myMid30 = myCustomInterpreter.Parse(package);
-//Won't work, will throw InvalidCastException:
-var myMid01 = myCustomInterpreter.Parse(package);
+var myMid04 = myCustomInterpreter.Parse("00260004001 001802");
+
+//Won't work, will throw NotImplementedException, MID 0030 was never registered:
+var unknown = myCustomInterpreter.Parse("00220030001 01");
+```
+
+You can also register a whole category at once, and filter it by your role in the communication:
+
+``` csharp
+var interpreter = new MidInterpreter()
+ .UseCommunicationMessages(InterpreterMode.Integrator)
+ .UseTighteningMessages(InterpreterMode.Integrator)
+ .UseAlarmMessages(InterpreterMode.Integrator);
```
-When you don't know which package will come, use ``` Parse ``` overload, not ``` Parse ```. If you want, take a look at the sample on this repository.
-> If necessary, there is a new overload where you can define if you're the controller or the integrator, which will automatically handle implemented mids
+
+`InterpreterMode.Integrator` keeps only the MIDs a controller can send you, `InterpreterMode.Controller` keeps
+only the ones an integrator can send, and `InterpreterMode.Both` (the default) keeps everything.
+There is one `Use...Messages` extension per category, all of them accepting a mode, an `IEnumerable` or an
+`IDictionary` (see [MIDs overriding](#mids-overriding)).
+
+#### Extra data (MID 0006, 0008 and 0009)
+
+MIDs 0006 (request), 0008 (subscription) and 0009 (unsubscription) carry a free form payload whose layout
+depends on the MID being requested/subscribed. Those payloads are modelled by `ExtraData` classes, which use the very same data field attributes as a MID:
+
+``` csharp
+var subscription = new Mid0008();
+subscription.SetExtraData(new Mid1201ExtraDataSubscription
+{
+ SendAlternatives = 1,
+ DataIdentifierTimestamp = new DateTime(2026, 8, 7, 13, 45, 0),
+ SendObjectData = true
+});
+
+var package = subscription.Pack();
+//Generated package => 00590008001 12010013000000000012026-08-07:13:45:001
+```
+
+`SetExtraData` fills `SubscriptionMid`, `WantedRevision`, `ExtraDataLength` and `ExtraData` for you.
+On the receiving side, parse the container MID first and then hand its raw `ExtraData` to the matching class:
+
+``` csharp
+var mid08 = interpreter.Parse(package);
+var extraData = (Mid1201ExtraDataSubscription)new Mid1201ExtraDataSubscription(mid08.WantedRevision)
+ .Parse(mid08.ExtraData);
+
+int alternatives = extraData.SendAlternatives;
+DateTime timestamp = extraData.DataIdentifierTimestamp;
+```
+
+A MID may declare one `ExtraData` per kind, since request (`IExtraDataRequest`), subscription (`IExtraDataSubscription`) and unsubscription (`IExtraDataUnsubscription`) payloads don't necessarily share the same content.
+
+> If necessary you can add `ExtraData` manually as plain string.
#### MIDs Overriding
-Maybe you have a totally crazy controller that does not implement the Mid as the documentation says or you might want to inject your own Mid inheriting another Mid,
+Maybe you have a totally crazy controller that does not implement the Mid as the documentation says or you might want to inject your own Mid inheriting another Mid,
so you can customize it and add more properties to handle some conversions. Anyway, if you need that, it's possible to override!
Here is an example:
``` csharp
//This will override Mid 81 with my custom Mid
-var _midInterpreter new MidInterpreter().UseAllMessages()
- .UseTimeMessages(new Dictionary() { { 81, typeof(OverridedMid0081) } });
+var interpreter = new MidInterpreter()
+ .UseAllMessages()
+ .UseTimeMessages(new Dictionary { { Mid0081.MID, typeof(OverridedMid0081) } });
+
+var mid = interpreter.Parse("00390081001 2026-08-07:13:45:00");
+//mid is an OverridedMid0081
public class OverridedMid0081 : Mid0081
@@ -147,67 +283,45 @@ public class OverridedMid0081 : Mid0081
public OverridedMid0081()
{
-
- }
- public override string Pack()
- {
- Time = TestCustomMid.Now;
- return base.Pack();
}
}
```
+> Your type must expose a parameterless constructor — that's the one the interpreter compiles and calls.
+
#### Adding MIDs that are not in documentation
Maybe your controller is weird and have unknown MID numbers, MIDs that are not in the documentation and you want to inject into MidInterpreter, there is a way:
``` csharp
-var _midInterpreter new MidInterpreter().UseAllMessages()
- .UseCustomMessage(new Dictionary() { { 83, typeof(NewMid0083) } });
+var interpreter = new MidInterpreter()
+ .UseAllMessages()
+ .UseCustomMessage(new Dictionary { { NewMid0083.MID, typeof(NewMid0083) } });
public class NewMid0083 : Mid
{
- private readonly IValueConverter _dateConverter;
- private const int LAST_REVISION = 1;
public const int MID = 83;
- public DateTime Time
- {
- get => GetField(1, (int)DataFields.TIME).GetValue(_dateConverter.Convert);
- set => GetField(1, (int)DataFields.TIME).SetValue(_dateConverter.Convert, value);
- }
- public string TimeZone
- {
- get => GetField(1, (int)DataFields.TIMEZONE).Value;
- set => GetField(1, (int)DataFields.TIMEZONE).SetValue(value);
- }
+ [TimestampDataFieldDefinition(revision: 1, field: 1, Index = 20, HasPrefix = false)]
+ public DateTime Time { get; set; }
- public NewMid0083() : base(MID, LAST_REVISION)
- {
- _dateConverter = new DateConverter();
- }
+ [StringDataFieldDefinition(revision: 1, field: 2, Index = 39, Size = 2, HasPrefix = false)]
+ public string TimeZone { get; set; }
- protected override Dictionary> RegisterDatafields()
+ public NewMid0083() : base(MID, DEFAULT_REVISION)
{
- return new Dictionary>()
- {
- {
- 1, new List()
- {
- new DataField((int)DataFields.TIME, 20, 19),
- new DataField((int)DataFields.TIMEZONE, 41, 2)
- }
- }
- };
+
}
- public enum DataFields
+ public NewMid0083(Header header) : base(header)
{
- TIME,
- TIMEZONE
+
}
}
+
+//new NewMid0083 { Time = new DateTime(2026, 8, 7, 13, 45, 0), TimeZone = "BR" }.Pack()
+// => 00410083001 2026-08-07:13:45:00BR
```
> **NOTE:** Custom messages might not perform as fast as other MIDs because they don't have optimizations for finding it
@@ -217,9 +331,9 @@ public class NewMid0083 : Mid
Declared a delegate:
``` csharp
-protected delegate void ReceivedCommandActionDelegate(ReceivedMIDEventArgs e);
+protected delegate void ReceivedCommandActionDelegate(ReceivedMidEventArgs e);
```
-**ReceivedMIDEventArgs class**:
+**ReceivedMidEventArgs class**:
``` csharp
public class ReceivedMidEventArgs : EventArgs
{
@@ -253,48 +367,47 @@ protected void OnPackageReceived(string message)
var mid = Interpreter.Parse(message);
//Get Registered delegate for the MID that was identified
- var action = OnReceivedMid.FirstOrDefault(x => x.Key == mid.GetType());
-
- if (action.Equals(default(KeyValuePair)))
- return; //Stop if there is no delegate registered for the message that arrived
-
- action.Value(new ReceivedMidEventArgs() { ReceivedMid = mid }); //Call delegate
- }
- catch (Exception ex)
- {
- Console.log(ex.Message);
- }
+ if (!OnReceivedMid.TryGetValue(mid.GetType(), out var action))
+ return; //Stop if there is no delegate registered for the message that arrived
+
+ action(new ReceivedMidEventArgs { ReceivedMid = mid }); //Call delegate
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine(ex.Message);
+ }
}
```
-This would call the registered delegate which you're sure what mid it is.
-For example when a **MID_0061** (last tightening) pop up, the **onTighteningReceived** delegate will be called:
+This would call the registered delegate which you're sure what mid it is.
+For example when a **MID_0061** (last tightening) pop up, the **OnTighteningReceived** delegate will be called:
``` csharp
protected void OnTighteningReceived(ReceivedMidEventArgs e)
{
try
{
- Mid0061 tighteningMid = e.ReceivedMID as Mid0061; //Casting to the right mid
+ var tighteningMid = (Mid0061)e.ReceivedMid; //Casting to the right mid
//This method just send the ack from tightening mid
- BuildAndSendAcknowledge(tighteningMid);
- Console.log("TIGHTENING ARRIVED")
- }
- catch (Exception ex)
- {
- Console.log(ex.Message);
- }
+ BuildAndSendAcknowledge(tighteningMid);
+ Console.WriteLine("TIGHTENING ARRIVED");
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine(ex.Message);
+ }
}
-protected void BuildAndSendAcknowledge(Mid mid)
+protected void BuildAndSendAcknowledge(Mid0061 mid)
{
- TcpClient.GetStream().Write(new Mid0062().Pack()); //Send acknowledge to controller
+ var ack = mid.GetAcknowledge(); //Mid0062, on the same revision as the received mid
+ TcpClient.GetStream().Write(ack.PackBytes()); //Send acknowledge to controller
}
```
### Tips
-> Instantiate the **MIDIdentifier** class just once and keep working with it!
+> Instantiate the **MidInterpreter** class just once and keep working with it! Template lookups are cached per instance.
> **Controller Implementation Tip:** Always **TRY** to register used MIDs, not all Tightening Controllers use every available MID.
@@ -302,16 +415,31 @@ protected void BuildAndSendAcknowledge(Mid mid)
### Contribute to the project
-Lot's of effort were given to this project and by seen people using it motivated me a lot to improve it more and more.
+Bug reports, controllers that behave differently from the specification and new MIDs are all very welcome.
+Fork it, add your MID next to its category (with its tests in `src/MIDTesters.Core`) and open a pull request.
+The [Still unavailable MIDs](#list-of-still-unavailable-mids) table below is a good place to pick something up.
+
+### Sponsor the project
+
+OpenProtocolInterpreter is built and maintained on free time, and the hardware it talks to isn't exactly the
+kind of thing you keep on your desk. If this library saved you a few days of *"substringing"* packages — or if
+your company ships something on top of it — consider sponsoring its development:
+
+[](https://github.com/sponsors/rickedb)
+[](https://www.buymeacoffee.com/rickedb)
+
+* **[GitHub Sponsors](https://github.com/sponsors/rickedb)** — one-off or monthly, and it shows up right here on the repository.
+* **[Buy me a coffee](https://www.buymeacoffee.com/rickedb)** — for a quick thank you.
-Does it help you a lot? That's awesome and very rewarding!
-But if you wish, you can support and help to motivate the constant improving of this library by contributing in [OpenCollective](https://opencollective.com/open-protocol-interpreter).
+Sponsoring keeps new MIDs, new specification revisions and bug fixes coming. Not in a position to sponsor?
+Starring the repository, reporting a controller that misbehaves or sending a pull request helps just as much.
### List of still unavailable Mids
| MID | Description | Notes |
| - | - | - |
| 0007 | Reserved | Reserved by Atlas Copco |
+| 0025 | Parameter user set download request | |
| 0049 | Pairing Status Acknowledge | |
| 0700 | Tightening data download status for radio tools | |
| 0900 | Result traces curve | |
@@ -322,9 +450,6 @@ But if you wish, you can support and help to motivate the constant improving of
| 1901 | Selector socket control | |
| 2100 | Device command | |
| 2500 | Program data download | |
-| 2501 | Program data upload reply | |
-| 2502 | Password request | |
-| 2503 | Password response | |
| 2600 | Mode ID upload request | |
| 2601 | Mode ID upload reply | |
| 2602 | Mode data upload request | |
diff --git a/docs/OpenProtocolSpecification_Release_2.20.1.pdf b/docs/OpenProtocol_Specification.pdf
similarity index 100%
rename from docs/OpenProtocolSpecification_Release_2.20.1.pdf
rename to docs/OpenProtocol_Specification.pdf
diff --git a/media/icon.png b/media/icon.png
index 508640ee..f2dd5363 100644
Binary files a/media/icon.png and b/media/icon.png differ
diff --git a/media/logo.png b/media/logo.png
index 5f46bebe..25718e17 100644
Binary files a/media/logo.png and b/media/logo.png differ
diff --git a/src/MIDTesters.Core/Alarm/TestMid0070.cs b/src/MIDTesters.Core/Alarm/TestMid0070.cs
index 5a0a854c..0f73e592 100644
--- a/src/MIDTesters.Core/Alarm/TestMid0070.cs
+++ b/src/MIDTesters.Core/Alarm/TestMid0070.cs
@@ -29,5 +29,14 @@ public void Mid0070ByteAllRevisions()
Assert.IsTrue(mid.Header.NoAckFlag);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Pack")]
+ public void Mid0070PackAllRevisions()
+ {
+ string pack = @"002000700021 ";
+
+ AssertBuildAndParse(pack, new Mid0070(2, noAckFlag: true));
+ }
}
}
diff --git a/src/MIDTesters.Core/Alarm/TestMid0071.cs b/src/MIDTesters.Core/Alarm/TestMid0071.cs
index 103ab7a8..9d0ba5c0 100644
--- a/src/MIDTesters.Core/Alarm/TestMid0071.cs
+++ b/src/MIDTesters.Core/Alarm/TestMid0071.cs
@@ -1,6 +1,8 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenProtocolInterpreter.Alarm;
+using System;
+using OpenProtocolInterpreter;
namespace MIDTesters.Alarm
{
[TestClass]
@@ -14,10 +16,10 @@ public void Mid0071Revision1()
string pack = @"00530071001 01E851021031042017-12-01:20:12:45";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.ErrorCode);
- Assert.IsNotNull(mid.ControllerReadyStatus);
- Assert.IsNotNull(mid.ToolReadyStatus);
- Assert.IsNotNull(mid.Time);
+ Assert.AreEqual("E851", mid.ErrorCode);
+ Assert.IsTrue(mid.ControllerReadyStatus);
+ Assert.IsTrue(mid.ToolReadyStatus);
+ Assert.AreEqual(new DateTime(2017, 12, 1, 20, 12, 45), mid.Time);
AssertEqualPackages(pack, mid);
}
@@ -29,10 +31,10 @@ public void Mid0071ByteRevision1()
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.ErrorCode);
- Assert.IsNotNull(mid.ControllerReadyStatus);
- Assert.IsNotNull(mid.ToolReadyStatus);
- Assert.IsNotNull(mid.Time);
+ Assert.AreEqual("E851", mid.ErrorCode);
+ Assert.IsTrue(mid.ControllerReadyStatus);
+ Assert.IsTrue(mid.ToolReadyStatus);
+ Assert.AreEqual(new DateTime(2017, 12, 1, 20, 12, 45), mid.Time);
AssertEqualPackages(bytes, mid);
}
@@ -40,14 +42,13 @@ public void Mid0071ByteRevision1()
[TestCategory("Revision 2"), TestCategory("ASCII")]
public void Mid0071Revision2()
{
- string pack = @"01060071002 01E1021021031042017-12-01:20:12:4505Alarm Text ";
+ string pack = @"00540071002 01E1021021031042017-12-01:20:12:45";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.ErrorCode);
- Assert.IsNotNull(mid.ControllerReadyStatus);
- Assert.IsNotNull(mid.ToolReadyStatus);
- Assert.IsNotNull(mid.Time);
- Assert.IsNotNull(mid.AlarmText);
+ Assert.AreEqual("E1021", mid.ErrorCode);
+ Assert.IsTrue(mid.ControllerReadyStatus);
+ Assert.IsTrue(mid.ToolReadyStatus);
+ Assert.AreEqual(new DateTime(2017, 12, 1, 20, 12, 45), mid.Time);
AssertEqualPackages(pack, mid);
}
@@ -55,16 +56,93 @@ public void Mid0071Revision2()
[TestCategory("Revision 2"), TestCategory("ByteArray")]
public void Mid0071ByteRevision2()
{
- string pack = @"01060071002 01E1021021031042017-12-01:20:12:4505Alarm Text ";
+ string pack = @"00540071002 01E1021021031042017-12-01:20:12:45";
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.ErrorCode);
- Assert.IsNotNull(mid.ControllerReadyStatus);
- Assert.IsNotNull(mid.ToolReadyStatus);
- Assert.IsNotNull(mid.Time);
- Assert.IsNotNull(mid.AlarmText);
+ Assert.AreEqual("E1021", mid.ErrorCode);
+ Assert.IsTrue(mid.ControllerReadyStatus);
+ Assert.IsTrue(mid.ToolReadyStatus);
+ Assert.AreEqual(new DateTime(2017, 12, 1, 20, 12, 45), mid.Time);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 3"), TestCategory("ASCII")]
+ public void Mid0071Revision3()
+ {
+ string pack = @"01090071003 01E1021021031042017-12-01:20:12:4505106Alarm Text ";
+ var mid = _midInterpreter.Parse(pack);
+
+ Assert.AreEqual("E1021", mid.ErrorCode);
+ Assert.IsTrue(mid.ControllerReadyStatus);
+ Assert.IsTrue(mid.ToolReadyStatus);
+ Assert.AreEqual(new DateTime(2017, 12, 1, 20, 12, 45), mid.Time);
+ Assert.AreEqual("Alarm Text ", mid.AlarmText);
+ AssertEqualPackages(pack, mid);
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 3"), TestCategory("ByteArray")]
+ public void Mid0071ByteRevision3()
+ {
+ string pack = @"01090071003 01E1021021031042017-12-01:20:12:4505106Alarm Text ";
+ byte[] bytes = GetAsciiBytes(pack);
+ var mid = _midInterpreter.Parse(bytes);
+
+ Assert.AreEqual("E1021", mid.ErrorCode);
+ Assert.IsTrue(mid.ControllerReadyStatus);
+ Assert.IsTrue(mid.ToolReadyStatus);
+ Assert.AreEqual(new DateTime(2017, 12, 1, 20, 12, 45), mid.Time);
+ Assert.AreEqual("Alarm Text ", mid.AlarmText);
+ AssertEqualPackages(bytes, mid);
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0071PackRevision1()
+ {
+ string pack = @"00530071001 01E851021031042017-12-01:20:12:45";
+
+ AssertBuildAndParse(pack, new Mid0071(1)
+ {
+ ErrorCode = "E851",
+ ControllerReadyStatus = true,
+ ToolReadyStatus = true,
+ Time = new DateTime(2017, 12, 1, 20, 12, 45)
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 2"), TestCategory("Pack")]
+ public void Mid0071PackRevision2()
+ {
+ string pack = @"00540071002 01E1021021031042017-12-01:20:12:45";
+
+ AssertBuildAndParse(pack, new Mid0071(2)
+ {
+ ErrorCode = "E1021",
+ ControllerReadyStatus = true,
+ ToolReadyStatus = true,
+ Time = new DateTime(2017, 12, 1, 20, 12, 45)
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 3"), TestCategory("Pack")]
+ public void Mid0071PackRevision3()
+ {
+ string pack = @"01090071003 01E1021021031042017-12-01:20:12:4505106Alarm Text ";
+
+ AssertBuildAndParse(pack, new Mid0071(3)
+ {
+ ErrorCode = "E1021",
+ ControllerReadyStatus = true,
+ ToolReadyStatus = true,
+ Time = new DateTime(2017, 12, 1, 20, 12, 45),
+ ToolHealth = ToolHealth.Ok,
+ AlarmText = "Alarm Text"
+ });
+ }
}
}
diff --git a/src/MIDTesters.Core/Alarm/TestMid0072.cs b/src/MIDTesters.Core/Alarm/TestMid0072.cs
index c5349f25..803e33b1 100644
--- a/src/MIDTesters.Core/Alarm/TestMid0072.cs
+++ b/src/MIDTesters.Core/Alarm/TestMid0072.cs
@@ -29,5 +29,14 @@ public void Mid0072ByteAllRevisions()
Assert.AreEqual(typeof(Mid0072), mid.GetType());
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Pack")]
+ public void Mid0072PackAllRevisions()
+ {
+ string pack = @"00200072002 ";
+
+ AssertBuildAndParse(pack, new Mid0072(2));
+ }
}
}
diff --git a/src/MIDTesters.Core/Alarm/TestMid0073.cs b/src/MIDTesters.Core/Alarm/TestMid0073.cs
index 799fe970..ef5b9808 100644
--- a/src/MIDTesters.Core/Alarm/TestMid0073.cs
+++ b/src/MIDTesters.Core/Alarm/TestMid0073.cs
@@ -29,5 +29,14 @@ public void Mid0073ByteAllRevisions()
Assert.AreEqual(typeof(Mid0073), mid.GetType());
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Pack")]
+ public void Mid0073PackAllRevisions()
+ {
+ string pack = @"00200073002 ";
+
+ AssertBuildAndParse(pack, new Mid0073(2));
+ }
}
}
diff --git a/src/MIDTesters.Core/Alarm/TestMid0074.cs b/src/MIDTesters.Core/Alarm/TestMid0074.cs
index b41f608c..65e3ff02 100644
--- a/src/MIDTesters.Core/Alarm/TestMid0074.cs
+++ b/src/MIDTesters.Core/Alarm/TestMid0074.cs
@@ -14,8 +14,7 @@ public void Mid0074Revision1()
string pack = @"00240074001 E851";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.ErrorCode);
- Assert.AreEqual(4, mid.ErrorCode.Length);
+ Assert.AreEqual("E851", mid.ErrorCode);
AssertEqualPackages(pack, mid);
}
@@ -27,8 +26,7 @@ public void Mid0074ByteRevision1()
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.ErrorCode);
- Assert.AreEqual(4, mid.ErrorCode.Length);
+ Assert.AreEqual("E851", mid.ErrorCode);
AssertEqualPackages(bytes, mid);
}
@@ -39,8 +37,7 @@ public void Mid0074Revision2()
string pack = @"00250074002 E8514";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.ErrorCode);
- Assert.AreEqual(5, mid.ErrorCode.Length);
+ Assert.AreEqual("E8514", mid.ErrorCode);
AssertEqualPackages(pack, mid);
}
@@ -52,9 +49,32 @@ public void Mid0074ByteRevision2()
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.ErrorCode);
- Assert.AreEqual(5, mid.ErrorCode.Length);
+ Assert.AreEqual("E8514", mid.ErrorCode);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0074PackRevision1()
+ {
+ string pack = @"00240074001 E851";
+
+ AssertBuildAndParse(pack, new Mid0074(1)
+ {
+ ErrorCode = "E851"
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 2"), TestCategory("Pack")]
+ public void Mid0074PackRevision2()
+ {
+ string pack = @"00250074002 E8514";
+
+ AssertBuildAndParse(pack, new Mid0074(2)
+ {
+ ErrorCode = "E8514"
+ });
+ }
}
}
diff --git a/src/MIDTesters.Core/Alarm/TestMid0075.cs b/src/MIDTesters.Core/Alarm/TestMid0075.cs
index 633aa4b8..8d4d0e2d 100644
--- a/src/MIDTesters.Core/Alarm/TestMid0075.cs
+++ b/src/MIDTesters.Core/Alarm/TestMid0075.cs
@@ -29,5 +29,14 @@ public void Mid0075ByteAllRevisions()
Assert.AreEqual(typeof(Mid0075), mid.GetType());
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Pack")]
+ public void Mid0075PackAllRevisions()
+ {
+ string pack = @"00200075001 ";
+
+ AssertBuildAndParse(pack, new Mid0075(1));
+ }
}
}
diff --git a/src/MIDTesters.Core/Alarm/TestMid0076.cs b/src/MIDTesters.Core/Alarm/TestMid0076.cs
index 7baa6704..53b6f38f 100644
--- a/src/MIDTesters.Core/Alarm/TestMid0076.cs
+++ b/src/MIDTesters.Core/Alarm/TestMid0076.cs
@@ -1,5 +1,7 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
+using OpenProtocolInterpreter;
using OpenProtocolInterpreter.Alarm;
+using System;
namespace MIDTesters.Alarm
{
@@ -14,11 +16,11 @@ public void Mid0076Revision1()
string pack = @"00560076001 01102E851031041052017-01-25:10:20:20";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.AlarmStatus);
- Assert.IsNotNull(mid.ErrorCode);
- Assert.IsNotNull(mid.ControllerReadyStatus);
- Assert.IsNotNull(mid.ToolReadyStatus);
- Assert.IsNotNull(mid.Time);
+ Assert.IsTrue(mid.AlarmStatus);
+ Assert.AreEqual("E851", mid.ErrorCode);
+ Assert.IsTrue(mid.ControllerReadyStatus);
+ Assert.IsTrue(mid.ToolReadyStatus);
+ Assert.AreEqual(new DateTime(2017, 1, 25, 10, 20, 20), mid.Time);
AssertEqualPackages(pack, mid);
}
@@ -30,11 +32,11 @@ public void Mid0076ByteRevision1()
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.AlarmStatus);
- Assert.IsNotNull(mid.ErrorCode);
- Assert.IsNotNull(mid.ControllerReadyStatus);
- Assert.IsNotNull(mid.ToolReadyStatus);
- Assert.IsNotNull(mid.Time);
+ Assert.IsTrue(mid.AlarmStatus);
+ Assert.AreEqual("E851", mid.ErrorCode);
+ Assert.IsTrue(mid.ControllerReadyStatus);
+ Assert.IsTrue(mid.ToolReadyStatus);
+ Assert.AreEqual(new DateTime(2017, 1, 25, 10, 20, 20), mid.Time);
AssertEqualPackages(bytes, mid);
}
@@ -45,11 +47,11 @@ public void Mid0076Revision2()
string pack = @"00570076002 01102 E851031041052017-01-25:10:20:20";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.AlarmStatus);
- Assert.IsNotNull(mid.ErrorCode);
- Assert.IsNotNull(mid.ControllerReadyStatus);
- Assert.IsNotNull(mid.ToolReadyStatus);
- Assert.IsNotNull(mid.Time);
+ Assert.IsTrue(mid.AlarmStatus);
+ Assert.AreEqual(" E851", mid.ErrorCode);
+ Assert.IsTrue(mid.ControllerReadyStatus);
+ Assert.IsTrue(mid.ToolReadyStatus);
+ Assert.AreEqual(new DateTime(2017, 1, 25, 10, 20, 20), mid.Time);
AssertEqualPackages(pack, mid);
}
@@ -61,11 +63,11 @@ public void Mid0076ByteRevision2()
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.AlarmStatus);
- Assert.IsNotNull(mid.ErrorCode);
- Assert.IsNotNull(mid.ControllerReadyStatus);
- Assert.IsNotNull(mid.ToolReadyStatus);
- Assert.IsNotNull(mid.Time);
+ Assert.IsTrue(mid.AlarmStatus);
+ Assert.AreEqual(" E851", mid.ErrorCode);
+ Assert.IsTrue(mid.ControllerReadyStatus);
+ Assert.IsTrue(mid.ToolReadyStatus);
+ Assert.AreEqual(new DateTime(2017, 1, 25, 10, 20, 20), mid.Time);
AssertEqualPackages(bytes, mid);
}
@@ -76,12 +78,12 @@ public void Mid0076Revision3()
string pack = @"00600076003 01102 E851031041052017-01-25:10:20:20061";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.AlarmStatus);
- Assert.IsNotNull(mid.ErrorCode);
- Assert.IsNotNull(mid.ControllerReadyStatus);
- Assert.IsNotNull(mid.ToolReadyStatus);
- Assert.IsNotNull(mid.Time);
- Assert.IsNotNull(mid.ToolHealth);
+ Assert.IsTrue(mid.AlarmStatus);
+ Assert.AreEqual(" E851", mid.ErrorCode);
+ Assert.IsTrue(mid.ControllerReadyStatus);
+ Assert.IsTrue(mid.ToolReadyStatus);
+ Assert.AreEqual(new DateTime(2017, 1, 25, 10, 20, 20), mid.Time);
+ Assert.AreEqual(ToolHealth.Ok, mid.ToolHealth);
AssertEqualPackages(pack, mid);
}
@@ -93,13 +95,62 @@ public void Mid0076ByteRevision3()
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.AlarmStatus);
- Assert.IsNotNull(mid.ErrorCode);
- Assert.IsNotNull(mid.ControllerReadyStatus);
- Assert.IsNotNull(mid.ToolReadyStatus);
- Assert.IsNotNull(mid.Time);
- Assert.IsNotNull(mid.ToolHealth);
+ Assert.IsTrue(mid.AlarmStatus);
+ Assert.AreEqual(" E851", mid.ErrorCode);
+ Assert.IsTrue(mid.ControllerReadyStatus);
+ Assert.IsTrue(mid.ToolReadyStatus);
+ Assert.AreEqual(new DateTime(2017, 1, 25, 10, 20, 20), mid.Time);
+ Assert.AreEqual(ToolHealth.Ok, mid.ToolHealth);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0076PackRevision1()
+ {
+ string pack = @"00560076001 01102E851031041052017-01-25:10:20:20";
+
+ AssertBuildAndParse(pack, new Mid0076(1)
+ {
+ AlarmStatus = true,
+ ErrorCode = "E851",
+ ControllerReadyStatus = true,
+ ToolReadyStatus = true,
+ Time = new DateTime(2017, 1, 25, 10, 20, 20)
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 2"), TestCategory("Pack")]
+ public void Mid0076PackRevision2()
+ {
+ string pack = @"00570076002 01102 E851031041052017-01-25:10:20:20";
+
+ AssertBuildAndParse(pack, new Mid0076(2)
+ {
+ AlarmStatus = true,
+ ErrorCode = " E851",
+ ControllerReadyStatus = true,
+ ToolReadyStatus = true,
+ Time = new DateTime(2017, 1, 25, 10, 20, 20)
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 3"), TestCategory("Pack")]
+ public void Mid0076PackRevision3()
+ {
+ string pack = @"00600076003 01102 E851031041052017-01-25:10:20:20061";
+
+ AssertBuildAndParse(pack, new Mid0076(3)
+ {
+ AlarmStatus = true,
+ ErrorCode = " E851",
+ ControllerReadyStatus = true,
+ ToolReadyStatus = true,
+ Time = new DateTime(2017, 1, 25, 10, 20, 20),
+ ToolHealth = ToolHealth.Ok
+ });
+ }
}
}
diff --git a/src/MIDTesters.Core/Alarm/TestMid0077.cs b/src/MIDTesters.Core/Alarm/TestMid0077.cs
index e29ef62b..9263da8e 100644
--- a/src/MIDTesters.Core/Alarm/TestMid0077.cs
+++ b/src/MIDTesters.Core/Alarm/TestMid0077.cs
@@ -29,5 +29,14 @@ public void Mid0077ByteAllRevisions()
Assert.AreEqual(typeof(Mid0077), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Pack")]
+ public void Mid0077PackAllRevisions()
+ {
+ string pack = @"00200077 ";
+
+ AssertBuildAndParse(pack, new Mid0077(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Alarm/TestMid0078.cs b/src/MIDTesters.Core/Alarm/TestMid0078.cs
index 96db85a9..e2c5557c 100644
--- a/src/MIDTesters.Core/Alarm/TestMid0078.cs
+++ b/src/MIDTesters.Core/Alarm/TestMid0078.cs
@@ -29,5 +29,14 @@ public void Mid0078ByteAllRevisions()
Assert.AreEqual(typeof(Mid0078), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Pack")]
+ public void Mid0078PackAllRevisions()
+ {
+ string pack = @"00200078 ";
+
+ AssertBuildAndParse(pack, new Mid0078(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Alarm/TestMid1000.cs b/src/MIDTesters.Core/Alarm/TestMid1000.cs
index 7bafbe3d..b012d933 100644
--- a/src/MIDTesters.Core/Alarm/TestMid1000.cs
+++ b/src/MIDTesters.Core/Alarm/TestMid1000.cs
@@ -1,6 +1,9 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
+using OpenProtocolInterpreter;
using OpenProtocolInterpreter.Alarm;
+using System;
+using System.Collections.Generic;
namespace MIDTesters.Alarm
{
[TestClass]
@@ -14,10 +17,27 @@ public void Mid1000Revision1()
string pack = "00911000001 ABCDE2017-12-01:20:12:4500201700009040000000ALARMTEXT017010010100000001";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.AlarmCode);
- Assert.IsNotNull(mid.Time);
- Assert.IsNotNull(mid.AlarmDataFields);
+ Assert.AreEqual("ABCDE", mid.AlarmCode);
+ Assert.AreEqual(new DateTime(2017, 12, 1, 20, 12, 45), mid.Time);
Assert.AreEqual(2, mid.NumberOfDataFields);
+ Assert.AreEqual(2, mid.AlarmDataFields.Count);
+
+ var alarmText = mid.AlarmDataFields[0];
+ Assert.AreEqual(1700, alarmText.ParameterId);
+ Assert.AreEqual(9, alarmText.Length);
+ Assert.AreEqual(DataTypeDefinition.String, alarmText.DataType);
+ Assert.AreEqual(DataUnitType.NoUnit, alarmText.Unit);
+ Assert.AreEqual(0, alarmText.StepNumber);
+ Assert.AreEqual("ALARMTEXT", alarmText.DataValue);
+
+ var alarmFlag = mid.AlarmDataFields[1];
+ Assert.AreEqual(1701, alarmFlag.ParameterId);
+ Assert.AreEqual(1, alarmFlag.Length);
+ Assert.AreEqual(DataTypeDefinition.UnsignedInteger, alarmFlag.DataType);
+ Assert.AreEqual(DataUnitType.NoUnit, alarmFlag.Unit);
+ Assert.AreEqual(0, alarmFlag.StepNumber);
+ Assert.AreEqual("1", alarmFlag.DataValue);
+
AssertEqualPackages(pack, mid);
}
@@ -25,15 +45,51 @@ public void Mid1000Revision1()
[TestCategory("Revision 1"), TestCategory("ByteArray")]
public void Mid1000ByteRevision1()
{
- string pack = "00911000001 ABCDE2017-12-01:20:12:4500201700009040000000ALARMTEXT017010010100000001";
+ string pack = "00911000001 ABCDE2017-12-01:20:12:4500201700009040000000TEXTALARM017010010100000002";
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.AlarmCode);
- Assert.IsNotNull(mid.Time);
- Assert.IsNotNull(mid.AlarmDataFields);
+ Assert.AreEqual("ABCDE", mid.AlarmCode);
+ Assert.AreEqual(new DateTime(2017, 12, 1, 20, 12, 45), mid.Time);
Assert.AreEqual(2, mid.NumberOfDataFields);
+ Assert.AreEqual(2, mid.AlarmDataFields.Count);
+
+ var alarmText = mid.AlarmDataFields[0];
+ Assert.AreEqual(1700, alarmText.ParameterId);
+ Assert.AreEqual(9, alarmText.Length);
+ Assert.AreEqual(DataTypeDefinition.String, alarmText.DataType);
+ Assert.AreEqual(DataUnitType.NoUnit, alarmText.Unit);
+ Assert.AreEqual(0, alarmText.StepNumber);
+ Assert.AreEqual("TEXTALARM", alarmText.DataValue);
+
+ var alarmFlag = mid.AlarmDataFields[1];
+ Assert.AreEqual(1701, alarmFlag.ParameterId);
+ Assert.AreEqual(1, alarmFlag.Length);
+ Assert.AreEqual(DataTypeDefinition.UnsignedInteger, alarmFlag.DataType);
+ Assert.AreEqual(DataUnitType.NoUnit, alarmFlag.Unit);
+ Assert.AreEqual(0, alarmFlag.StepNumber);
+ Assert.AreEqual("2", alarmFlag.DataValue);
+
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid1000PackRevision1()
+ {
+ string pack = "00911000001 ABCDE2017-12-01:20:12:4500201700009040000000ALARMTEXT017010010100000001";
+
+ AssertBuildAndParse(pack, new Mid1000(1)
+ {
+ AlarmCode = "ABCDE",
+ Time = new DateTime(2017, 12, 1, 20, 12, 45),
+ NumberOfDataFields = 2,
+ AlarmDataFields = new List()
+ {
+ new VariableDataField() { ParameterId = 1700, Length = 9, DataType = DataTypeDefinition.String, Unit = DataUnitType.NoUnit, StepNumber = 0, DataValue = "ALARMTEXT" },
+ new VariableDataField() { ParameterId = 1701, Length = 1, DataType = DataTypeDefinition.UnsignedInteger, Unit = DataUnitType.NoUnit, StepNumber = 0, DataValue = "1" }
+ }
+ });
+ }
}
}
diff --git a/src/MIDTesters.Core/Alarm/TestMid1001.cs b/src/MIDTesters.Core/Alarm/TestMid1001.cs
index 6f11c29e..d864dcdf 100644
--- a/src/MIDTesters.Core/Alarm/TestMid1001.cs
+++ b/src/MIDTesters.Core/Alarm/TestMid1001.cs
@@ -29,5 +29,14 @@ public void Mid1001ByteAllRevisions()
Assert.AreEqual(typeof(Mid1001), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Pack")]
+ public void Mid1001PackAllRevisions()
+ {
+ string pack = @"00201001 ";
+
+ AssertBuildAndParse(pack, new Mid1001(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/ApplicationController/TestMid0270.cs b/src/MIDTesters.Core/ApplicationController/TestMid0270.cs
index e44a9f07..b8e2cf32 100644
--- a/src/MIDTesters.Core/ApplicationController/TestMid0270.cs
+++ b/src/MIDTesters.Core/ApplicationController/TestMid0270.cs
@@ -29,5 +29,14 @@ public void Mid0270ByteRevision1()
Assert.AreEqual(typeof(Mid0270), mid.GetType());
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0270PackRevision1()
+ {
+ string package = "00200270001 ";
+
+ AssertBuildAndParse(package, new Mid0270());
+ }
}
}
diff --git a/src/MIDTesters.Core/ApplicationSelector/TestMid0250.cs b/src/MIDTesters.Core/ApplicationSelector/TestMid0250.cs
index e244baab..090dd90f 100644
--- a/src/MIDTesters.Core/ApplicationSelector/TestMid0250.cs
+++ b/src/MIDTesters.Core/ApplicationSelector/TestMid0250.cs
@@ -31,5 +31,14 @@ public void Mid0250ByteRevision1()
Assert.IsTrue(mid.Header.NoAckFlag);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0250PackRevision1()
+ {
+ string package = "00200250 1 ";
+
+ AssertBuildAndParse(package, new Mid0250(noAckFlag: true), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/ApplicationSelector/TestMid0251.cs b/src/MIDTesters.Core/ApplicationSelector/TestMid0251.cs
index 1523ce2e..569cc6f0 100644
--- a/src/MIDTesters.Core/ApplicationSelector/TestMid0251.cs
+++ b/src/MIDTesters.Core/ApplicationSelector/TestMid0251.cs
@@ -1,5 +1,6 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenProtocolInterpreter.ApplicationSelector;
+using System.Collections.Generic;
namespace MIDTesters.ApplicationSelector
{
@@ -15,9 +16,21 @@ public void Mid0251Revision1()
var mid = _midInterpreter.Parse(package);
Assert.IsTrue(mid.Header.NoAckFlag);
- Assert.IsNotNull(mid.DeviceId);
- Assert.IsNotNull(mid.NumberOfSockets);
- Assert.IsNotNull(mid.SocketStatus);
+ Assert.AreEqual(50, mid.DeviceId);
+ Assert.AreEqual(10, mid.NumberOfSockets);
+ CollectionAssert.AreEqual(new List
+ {
+ false,
+ true,
+ false,
+ true,
+ true,
+ false,
+ true,
+ true,
+ true,
+ false
+ }, mid.SocketStatus);
AssertEqualPackages(package, mid, true);
}
@@ -29,10 +42,37 @@ public void Mid0251ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.DeviceId);
- Assert.IsNotNull(mid.NumberOfSockets);
- Assert.IsNotNull(mid.SocketStatus);
+ Assert.AreEqual(50, mid.DeviceId);
+ Assert.AreEqual(10, mid.NumberOfSockets);
+ CollectionAssert.AreEqual(new List
+ {
+ false,
+ true,
+ false,
+ true,
+ true,
+ false,
+ true,
+ true,
+ true,
+ false
+ }, mid.SocketStatus);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0251PackRevision1()
+ {
+ string package = "00400251 1 01500210030101101110";
+
+ AssertBuildAndParse(package, new Mid0251()
+ {
+ Header = { NoAckFlag = true },
+ DeviceId = 50,
+ NumberOfSockets = 10,
+ SocketStatus = new List() { false, true, false, true, true, false, true, true, true, false }
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/ApplicationSelector/TestMid0252.cs b/src/MIDTesters.Core/ApplicationSelector/TestMid0252.cs
index 5d49289c..2ce1cd4e 100644
--- a/src/MIDTesters.Core/ApplicationSelector/TestMid0252.cs
+++ b/src/MIDTesters.Core/ApplicationSelector/TestMid0252.cs
@@ -29,5 +29,14 @@ public void Mid0252ByteRevision1()
Assert.AreEqual(typeof(Mid0252), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0252PackRevision1()
+ {
+ string package = "00200252 ";
+
+ AssertBuildAndParse(package, new Mid0252(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/ApplicationSelector/TestMid0253.cs b/src/MIDTesters.Core/ApplicationSelector/TestMid0253.cs
index 882f5e67..5c6403a7 100644
--- a/src/MIDTesters.Core/ApplicationSelector/TestMid0253.cs
+++ b/src/MIDTesters.Core/ApplicationSelector/TestMid0253.cs
@@ -29,5 +29,14 @@ public void Mid0253ByteRevision1()
Assert.AreEqual(typeof(Mid0253), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0253PackRevision1()
+ {
+ string package = "00200253 ";
+
+ AssertBuildAndParse(package, new Mid0253(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/ApplicationSelector/TestMid0254.cs b/src/MIDTesters.Core/ApplicationSelector/TestMid0254.cs
index 5380f173..dd814606 100644
--- a/src/MIDTesters.Core/ApplicationSelector/TestMid0254.cs
+++ b/src/MIDTesters.Core/ApplicationSelector/TestMid0254.cs
@@ -1,5 +1,7 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
+using OpenProtocolInterpreter;
using OpenProtocolInterpreter.ApplicationSelector;
+using System.Collections.Generic;
namespace MIDTesters.ApplicationSelector
{
@@ -14,8 +16,10 @@ public void Mid0254Revision1()
string package = "00340254 01110201221022";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.DeviceId);
- Assert.IsNotNull(mid.GreenLights);
+ Assert.AreEqual(11, mid.DeviceId);
+ CollectionAssert.AreEqual(
+ new List { LightCommand.Off, LightCommand.Steady, LightCommand.Flashing, LightCommand.Flashing, LightCommand.Steady, LightCommand.Off, LightCommand.Flashing, LightCommand.Flashing },
+ mid.GreenLights);
AssertEqualPackages(package, mid, true);
}
@@ -27,9 +31,36 @@ public void Mid0254ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.DeviceId);
- Assert.IsNotNull(mid.GreenLights);
+ Assert.AreEqual(11, mid.DeviceId);
+ CollectionAssert.AreEqual(new List
+ {
+ LightCommand.Off,
+ LightCommand.Steady,
+ LightCommand.Flashing,
+ LightCommand.Flashing,
+ LightCommand.Steady,
+ LightCommand.Off,
+ LightCommand.Flashing,
+ LightCommand.Flashing
+ }, mid.GreenLights);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0254PackRevision1()
+ {
+ string package = "00340254 01110201221022";
+
+ AssertBuildAndParse(package, new Mid0254()
+ {
+ DeviceId = 11,
+ GreenLights = new List()
+ {
+ LightCommand.Off, LightCommand.Steady, LightCommand.Flashing, LightCommand.Flashing,
+ LightCommand.Steady, LightCommand.Off, LightCommand.Flashing, LightCommand.Flashing
+ }
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/ApplicationSelector/TestMid0255.cs b/src/MIDTesters.Core/ApplicationSelector/TestMid0255.cs
index 3d0a277d..5cef2769 100644
--- a/src/MIDTesters.Core/ApplicationSelector/TestMid0255.cs
+++ b/src/MIDTesters.Core/ApplicationSelector/TestMid0255.cs
@@ -1,5 +1,7 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
+using OpenProtocolInterpreter;
using OpenProtocolInterpreter.ApplicationSelector;
+using System.Collections.Generic;
namespace MIDTesters.ApplicationSelector
{
@@ -14,8 +16,18 @@ public void Mid0255Revision1()
string package = "00340255 01510221112022";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.DeviceId);
- Assert.IsNotNull(mid.RedLights);
+ Assert.AreEqual(51, mid.DeviceId);
+ CollectionAssert.AreEqual(new List
+ {
+ LightCommand.Flashing,
+ LightCommand.Steady,
+ LightCommand.Steady,
+ LightCommand.Steady,
+ LightCommand.Flashing,
+ LightCommand.Off,
+ LightCommand.Flashing,
+ LightCommand.Flashing
+ }, mid.RedLights);
AssertEqualPackages(package, mid, true);
}
@@ -27,9 +39,36 @@ public void Mid0255ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.DeviceId);
- Assert.IsNotNull(mid.RedLights);
+ Assert.AreEqual(51, mid.DeviceId);
+ CollectionAssert.AreEqual(new List
+ {
+ LightCommand.Flashing,
+ LightCommand.Steady,
+ LightCommand.Steady,
+ LightCommand.Steady,
+ LightCommand.Flashing,
+ LightCommand.Off,
+ LightCommand.Flashing,
+ LightCommand.Flashing
+ }, mid.RedLights);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0255PackRevision1()
+ {
+ string package = "00340255 01510221112022";
+
+ AssertBuildAndParse(package, new Mid0255()
+ {
+ DeviceId = 51,
+ RedLights = new List()
+ {
+ LightCommand.Flashing, LightCommand.Steady, LightCommand.Steady, LightCommand.Steady,
+ LightCommand.Flashing, LightCommand.Off, LightCommand.Flashing, LightCommand.Flashing
+ }
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0260.cs b/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0260.cs
index 5d9406f9..2f468829 100644
--- a/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0260.cs
+++ b/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0260.cs
@@ -29,5 +29,14 @@ public void Mid0260ByteRevision1()
Assert.AreEqual(typeof(Mid0260), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0260PackRevision1()
+ {
+ string package = "00200260 ";
+
+ AssertBuildAndParse(package, new Mid0260(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0261.cs b/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0261.cs
index ff2e734d..dd23d33b 100644
--- a/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0261.cs
+++ b/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0261.cs
@@ -31,5 +31,14 @@ public void Mid0261ByteRevision1()
Assert.IsTrue(mid.Header.NoAckFlag);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0261PackRevision1()
+ {
+ string package = "00200261 1 ";
+
+ AssertBuildAndParse(package, new Mid0261(noAckFlag: true), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0262.cs b/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0262.cs
index c3ef80ef..0b6b3a24 100644
--- a/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0262.cs
+++ b/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0262.cs
@@ -14,7 +14,7 @@ public void Mid0262Revision1()
string package = "00300262001 013200078D";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.ToolTagId);
+ Assert.AreEqual("3200078D", mid.ToolTagId);
AssertEqualPackages(package, mid);
}
@@ -26,8 +26,20 @@ public void Mid0262ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.ToolTagId);
+ Assert.AreEqual("3200078D", mid.ToolTagId);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0262PackRevision1()
+ {
+ string package = "00300262001 013200078D";
+
+ AssertBuildAndParse(package, new Mid0262()
+ {
+ ToolTagId = "3200078D"
+ });
+ }
}
}
diff --git a/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0263.cs b/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0263.cs
index 64687345..fd5e1717 100644
--- a/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0263.cs
+++ b/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0263.cs
@@ -29,5 +29,14 @@ public void Mid0263ByteRevision1()
Assert.AreEqual(typeof(Mid0263), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0263PackRevision1()
+ {
+ string package = "00200263 ";
+
+ AssertBuildAndParse(package, new Mid0263(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0264.cs b/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0264.cs
index c9e6321e..d326f9d8 100644
--- a/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0264.cs
+++ b/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0264.cs
@@ -29,5 +29,14 @@ public void Mid0264ByteRevision1()
Assert.AreEqual(typeof(Mid0264), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0264PackRevision1()
+ {
+ string package = "00200264 ";
+
+ AssertBuildAndParse(package, new Mid0264(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0265.cs b/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0265.cs
index 46d9669d..7158a224 100644
--- a/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0265.cs
+++ b/src/MIDTesters.Core/ApplicationToolLocationSystem/TestMid0265.cs
@@ -1,4 +1,5 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
+using OpenProtocolInterpreter;
using OpenProtocolInterpreter.ApplicationToolLocationSystem;
namespace MIDTesters.ApplicationToolLocationSystem
@@ -14,8 +15,8 @@ public void Mid0265Revision1()
string package = "00340265001 013200078D0202";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.ToolTagId);
- Assert.IsNotNull(mid.ToolStatus);
+ Assert.AreEqual("3200078D", mid.ToolTagId);
+ Assert.AreEqual(ToolStatus.Inoperable, mid.ToolStatus);
AssertEqualPackages(package, mid);
}
@@ -27,9 +28,22 @@ public void Mid0265ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.ToolTagId);
- Assert.IsNotNull(mid.ToolStatus);
+ Assert.AreEqual("3200078D", mid.ToolTagId);
+ Assert.AreEqual(ToolStatus.Inoperable, mid.ToolStatus);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0265PackRevision1()
+ {
+ string package = "00340265001 013200078D0202";
+
+ AssertBuildAndParse(package, new Mid0265()
+ {
+ ToolTagId = "3200078D",
+ ToolStatus = ToolStatus.Inoperable
+ });
+ }
}
}
diff --git a/src/MIDTesters.Core/AutomaticManualMode/TestMid0400.cs b/src/MIDTesters.Core/AutomaticManualMode/TestMid0400.cs
index 5c61e97a..e14c2f97 100644
--- a/src/MIDTesters.Core/AutomaticManualMode/TestMid0400.cs
+++ b/src/MIDTesters.Core/AutomaticManualMode/TestMid0400.cs
@@ -31,5 +31,14 @@ public void Mid0400ByteRevision1()
Assert.IsTrue(mid.Header.NoAckFlag);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0400PackRevision1()
+ {
+ string package = "00200400 1 ";
+
+ AssertBuildAndParse(package, new Mid0400(noAckFlag: true), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/AutomaticManualMode/TestMid0401.cs b/src/MIDTesters.Core/AutomaticManualMode/TestMid0401.cs
index 40c61900..8f66b601 100644
--- a/src/MIDTesters.Core/AutomaticManualMode/TestMid0401.cs
+++ b/src/MIDTesters.Core/AutomaticManualMode/TestMid0401.cs
@@ -14,7 +14,7 @@ public void Mid0401Revision1()
string package = "00210401 1 1";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.ManualAutomaticMode);
+ Assert.IsTrue(mid.ManualAutomaticMode);
AssertEqualPackages(package, mid, true);
}
@@ -26,8 +26,21 @@ public void Mid0401ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.ManualAutomaticMode);
+ Assert.IsTrue(mid.ManualAutomaticMode);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0401PackRevision1()
+ {
+ string package = "00210401 1 1";
+
+ AssertBuildAndParse(package, new Mid0401()
+ {
+ Header = { NoAckFlag = true },
+ ManualAutomaticMode = true
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/AutomaticManualMode/TestMid0402.cs b/src/MIDTesters.Core/AutomaticManualMode/TestMid0402.cs
index 2305c9e3..40799294 100644
--- a/src/MIDTesters.Core/AutomaticManualMode/TestMid0402.cs
+++ b/src/MIDTesters.Core/AutomaticManualMode/TestMid0402.cs
@@ -29,5 +29,14 @@ public void Mid0402ByteRevision1()
Assert.AreEqual(typeof(Mid0402), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0402PackRevision1()
+ {
+ string package = "00200402 ";
+
+ AssertBuildAndParse(package, new Mid0402(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/AutomaticManualMode/TestMid0403.cs b/src/MIDTesters.Core/AutomaticManualMode/TestMid0403.cs
index 0adb4741..1eafd083 100644
--- a/src/MIDTesters.Core/AutomaticManualMode/TestMid0403.cs
+++ b/src/MIDTesters.Core/AutomaticManualMode/TestMid0403.cs
@@ -29,5 +29,14 @@ public void Mid0403ByteRevision1()
Assert.AreEqual(typeof(Mid0403), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0403PackRevision1()
+ {
+ string package = "00200403 ";
+
+ AssertBuildAndParse(package, new Mid0403(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/AutomaticManualMode/TestMid0410.cs b/src/MIDTesters.Core/AutomaticManualMode/TestMid0410.cs
index 7b8e1a6f..5ac40d81 100644
--- a/src/MIDTesters.Core/AutomaticManualMode/TestMid0410.cs
+++ b/src/MIDTesters.Core/AutomaticManualMode/TestMid0410.cs
@@ -29,5 +29,14 @@ public void Mid0410ByteRevision1()
Assert.AreEqual(typeof(Mid0410), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0410PackRevision1()
+ {
+ string package = "00200410 ";
+
+ AssertBuildAndParse(package, new Mid0410(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/AutomaticManualMode/TestMid0411.cs b/src/MIDTesters.Core/AutomaticManualMode/TestMid0411.cs
index 92e92db6..de8b10c3 100644
--- a/src/MIDTesters.Core/AutomaticManualMode/TestMid0411.cs
+++ b/src/MIDTesters.Core/AutomaticManualMode/TestMid0411.cs
@@ -14,8 +14,8 @@ public void Mid0411Revision1()
string package = "00240411 0105";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.AutoDisableSetting);
- Assert.IsNotNull(mid.CurrentBatch);
+ Assert.AreEqual(1, mid.AutoDisableSetting);
+ Assert.AreEqual(5, mid.CurrentBatch);
AssertEqualPackages(package, mid, true);
}
@@ -27,9 +27,22 @@ public void Mid0411ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.AutoDisableSetting);
- Assert.IsNotNull(mid.CurrentBatch);
+ Assert.AreEqual(1, mid.AutoDisableSetting);
+ Assert.AreEqual(5, mid.CurrentBatch);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0411PackRevision1()
+ {
+ string package = "00240411 0105";
+
+ AssertBuildAndParse(package, new Mid0411()
+ {
+ AutoDisableSetting = 1,
+ CurrentBatch = 5
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Communication/TestMid0001.cs b/src/MIDTesters.Core/Communication/TestMid0001.cs
index 4d3d1f0f..e292ab4b 100644
--- a/src/MIDTesters.Core/Communication/TestMid0001.cs
+++ b/src/MIDTesters.Core/Communication/TestMid0001.cs
@@ -37,7 +37,7 @@ public void Mid0001Revision7()
var package = "00230001007 011";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.OptionalKeepAlive);
+ Assert.IsTrue(mid.OptionalKeepAlive);
AssertEqualPackages(package, mid);
}
@@ -49,8 +49,29 @@ public void Mid0001ByteRevision7()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.OptionalKeepAlive);
+ Assert.IsTrue(mid.OptionalKeepAlive);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Pack")]
+ public void Mid0001PackAllRevisions()
+ {
+ var package = "00200001003 ";
+
+ AssertBuildAndParse(package, new Mid0001(3));
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 7"), TestCategory("Pack")]
+ public void Mid0001PackRevision7()
+ {
+ var package = "00230001007 011";
+
+ AssertBuildAndParse(package, new Mid0001(7)
+ {
+ OptionalKeepAlive = true
+ });
+ }
}
}
diff --git a/src/MIDTesters.Core/Communication/TestMid0002.cs b/src/MIDTesters.Core/Communication/TestMid0002.cs
index d3db436b..14a6f40f 100644
--- a/src/MIDTesters.Core/Communication/TestMid0002.cs
+++ b/src/MIDTesters.Core/Communication/TestMid0002.cs
@@ -1,5 +1,6 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenProtocolInterpreter.Communication;
+using OpenProtocolInterpreter;
namespace MIDTesters.Communication
{
@@ -14,9 +15,9 @@ public void Mid0002Revision1()
string pack = @"00570002001 010001020103Airbag1 ";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.CellId);
- Assert.IsNotNull(mid.ChannelId);
- Assert.IsNotNull(mid.ControllerName);
+ Assert.AreEqual(1, mid.CellId);
+ Assert.AreEqual(1, mid.ChannelId);
+ Assert.AreEqual("Airbag1", mid.ControllerName.TrimEnd());
AssertEqualPackages(pack, mid);
}
@@ -28,9 +29,9 @@ public void Mid0002ByteRevision1()
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.CellId);
- Assert.IsNotNull(mid.ChannelId);
- Assert.IsNotNull(mid.ControllerName);
+ Assert.AreEqual(1, mid.CellId);
+ Assert.AreEqual(1, mid.ChannelId);
+ Assert.AreEqual("Airbag1", mid.ControllerName.TrimEnd());
AssertEqualPackages(bytes, mid);
}
@@ -41,10 +42,10 @@ public void Mid0002Revision2()
string pack = @"00620002002 010001020103Airbag1 04ACT";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.CellId);
- Assert.IsNotNull(mid.ChannelId);
- Assert.IsNotNull(mid.ControllerName);
- Assert.IsNotNull(mid.SupplierCode);
+ Assert.AreEqual(1, mid.CellId);
+ Assert.AreEqual(1, mid.ChannelId);
+ Assert.AreEqual("Airbag1", mid.ControllerName.TrimEnd());
+ Assert.AreEqual("ACT", mid.SupplierCode);
AssertEqualPackages(pack, mid);
}
@@ -56,10 +57,10 @@ public void Mid0002ByteRevision2()
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.CellId);
- Assert.IsNotNull(mid.ChannelId);
- Assert.IsNotNull(mid.ControllerName);
- Assert.IsNotNull(mid.SupplierCode);
+ Assert.AreEqual(1, mid.CellId);
+ Assert.AreEqual(1, mid.ChannelId);
+ Assert.AreEqual("Airbag1", mid.ControllerName.TrimEnd());
+ Assert.AreEqual("ACT", mid.SupplierCode);
AssertEqualPackages(bytes, mid);
}
@@ -70,13 +71,13 @@ public void Mid0002Revision3()
string pack = @"01250002003 010001020103Airbag1 04ACT05OpenProtocolVersion06Version 19.0.0.0 07Version 01.0.0.0 ";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.CellId);
- Assert.IsNotNull(mid.ChannelId);
- Assert.IsNotNull(mid.ControllerName);
- Assert.IsNotNull(mid.SupplierCode);
- Assert.IsNotNull(mid.OpenProtocolVersion);
- Assert.IsNotNull(mid.ControllerSoftwareVersion);
- Assert.IsNotNull(mid.ToolSoftwareVersion);
+ Assert.AreEqual(1, mid.CellId);
+ Assert.AreEqual(1, mid.ChannelId);
+ Assert.AreEqual("Airbag1", mid.ControllerName.TrimEnd());
+ Assert.AreEqual("ACT", mid.SupplierCode);
+ Assert.AreEqual("OpenProtocolVersion", mid.OpenProtocolVersion);
+ Assert.AreEqual("Version 19.0.0.0", mid.ControllerSoftwareVersion.TrimEnd());
+ Assert.AreEqual("Version 01.0.0.0", mid.ToolSoftwareVersion.TrimEnd());
AssertEqualPackages(pack, mid);
}
@@ -88,13 +89,13 @@ public void Mid0002ByteRevision3()
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.CellId);
- Assert.IsNotNull(mid.ChannelId);
- Assert.IsNotNull(mid.ControllerName);
- Assert.IsNotNull(mid.SupplierCode);
- Assert.IsNotNull(mid.OpenProtocolVersion);
- Assert.IsNotNull(mid.ControllerSoftwareVersion);
- Assert.IsNotNull(mid.ToolSoftwareVersion);
+ Assert.AreEqual(1, mid.CellId);
+ Assert.AreEqual(1, mid.ChannelId);
+ Assert.AreEqual("Airbag1", mid.ControllerName.TrimEnd());
+ Assert.AreEqual("ACT", mid.SupplierCode);
+ Assert.AreEqual("OpenProtocolVersion", mid.OpenProtocolVersion);
+ Assert.AreEqual("Version 19.0.0.0", mid.ControllerSoftwareVersion.TrimEnd());
+ Assert.AreEqual("Version 01.0.0.0", mid.ToolSoftwareVersion.TrimEnd());
AssertEqualPackages(bytes, mid);
}
@@ -105,15 +106,15 @@ public void Mid0002Revision4()
string pack = @"01630002004 010001020103Airbag1 04ACT05OpenProtocolVersion06Version 19.0.0.0 07Version 01.0.0.0 08RBUType 09Serial ";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.CellId);
- Assert.IsNotNull(mid.ChannelId);
- Assert.IsNotNull(mid.ControllerName);
- Assert.IsNotNull(mid.SupplierCode);
- Assert.IsNotNull(mid.OpenProtocolVersion);
- Assert.IsNotNull(mid.ControllerSoftwareVersion);
- Assert.IsNotNull(mid.ToolSoftwareVersion);
- Assert.IsNotNull(mid.RBUType);
- Assert.IsNotNull(mid.ControllerSerialNumber);
+ Assert.AreEqual(1, mid.CellId);
+ Assert.AreEqual(1, mid.ChannelId);
+ Assert.AreEqual("Airbag1", mid.ControllerName.TrimEnd());
+ Assert.AreEqual("ACT", mid.SupplierCode);
+ Assert.AreEqual("OpenProtocolVersion", mid.OpenProtocolVersion);
+ Assert.AreEqual("Version 19.0.0.0", mid.ControllerSoftwareVersion.TrimEnd());
+ Assert.AreEqual("Version 01.0.0.0", mid.ToolSoftwareVersion.TrimEnd());
+ Assert.AreEqual("RBUType", mid.RBUType.TrimEnd());
+ Assert.AreEqual("Serial", mid.ControllerSerialNumber.TrimEnd());
AssertEqualPackages(pack, mid);
}
@@ -125,15 +126,15 @@ public void Mid0002ByteRevision4()
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.CellId);
- Assert.IsNotNull(mid.ChannelId);
- Assert.IsNotNull(mid.ControllerName);
- Assert.IsNotNull(mid.SupplierCode);
- Assert.IsNotNull(mid.OpenProtocolVersion);
- Assert.IsNotNull(mid.ControllerSoftwareVersion);
- Assert.IsNotNull(mid.ToolSoftwareVersion);
- Assert.IsNotNull(mid.RBUType);
- Assert.IsNotNull(mid.ControllerSerialNumber);
+ Assert.AreEqual(1, mid.CellId);
+ Assert.AreEqual(1, mid.ChannelId);
+ Assert.AreEqual("Airbag1", mid.ControllerName.TrimEnd());
+ Assert.AreEqual("ACT", mid.SupplierCode);
+ Assert.AreEqual("OpenProtocolVersion", mid.OpenProtocolVersion);
+ Assert.AreEqual("Version 19.0.0.0", mid.ControllerSoftwareVersion.TrimEnd());
+ Assert.AreEqual("Version 01.0.0.0", mid.ToolSoftwareVersion.TrimEnd());
+ Assert.AreEqual("RBUType", mid.RBUType.TrimEnd());
+ Assert.AreEqual("Serial", mid.ControllerSerialNumber.TrimEnd());
AssertEqualPackages(bytes, mid);
}
@@ -144,17 +145,17 @@ public void Mid0002Revision5()
string pack = @"01730002005 010001020103Airbag1 04ACT05OpenProtocolVersion06Version 19.0.0.0 07Version 01.0.0.0 08RBUType 09Serial 1000211002";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.CellId);
- Assert.IsNotNull(mid.ChannelId);
- Assert.IsNotNull(mid.ControllerName);
- Assert.IsNotNull(mid.SupplierCode);
- Assert.IsNotNull(mid.OpenProtocolVersion);
- Assert.IsNotNull(mid.ControllerSoftwareVersion);
- Assert.IsNotNull(mid.ToolSoftwareVersion);
- Assert.IsNotNull(mid.RBUType);
- Assert.IsNotNull(mid.ControllerSerialNumber);
- Assert.IsNotNull(mid.SystemType);
- Assert.IsNotNull(mid.SystemSubType);
+ Assert.AreEqual(1, mid.CellId);
+ Assert.AreEqual(1, mid.ChannelId);
+ Assert.AreEqual("Airbag1", mid.ControllerName.TrimEnd());
+ Assert.AreEqual("ACT", mid.SupplierCode);
+ Assert.AreEqual("OpenProtocolVersion", mid.OpenProtocolVersion);
+ Assert.AreEqual("Version 19.0.0.0", mid.ControllerSoftwareVersion.TrimEnd());
+ Assert.AreEqual("Version 01.0.0.0", mid.ToolSoftwareVersion.TrimEnd());
+ Assert.AreEqual("RBUType", mid.RBUType.TrimEnd());
+ Assert.AreEqual("Serial", mid.ControllerSerialNumber.TrimEnd());
+ Assert.AreEqual(SystemType.PowerMacs4000, mid.SystemType);
+ Assert.AreEqual(SystemSubType.SystemRunningPresses, mid.SystemSubType);
AssertEqualPackages(pack, mid);
}
@@ -166,17 +167,17 @@ public void Mid0002ByteRevision5()
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.CellId);
- Assert.IsNotNull(mid.ChannelId);
- Assert.IsNotNull(mid.ControllerName);
- Assert.IsNotNull(mid.SupplierCode);
- Assert.IsNotNull(mid.OpenProtocolVersion);
- Assert.IsNotNull(mid.ControllerSoftwareVersion);
- Assert.IsNotNull(mid.ToolSoftwareVersion);
- Assert.IsNotNull(mid.RBUType);
- Assert.IsNotNull(mid.ControllerSerialNumber);
- Assert.IsNotNull(mid.SystemType);
- Assert.IsNotNull(mid.SystemSubType);
+ Assert.AreEqual(1, mid.CellId);
+ Assert.AreEqual(1, mid.ChannelId);
+ Assert.AreEqual("Airbag1", mid.ControllerName.TrimEnd());
+ Assert.AreEqual("ACT", mid.SupplierCode);
+ Assert.AreEqual("OpenProtocolVersion", mid.OpenProtocolVersion);
+ Assert.AreEqual("Version 19.0.0.0", mid.ControllerSoftwareVersion.TrimEnd());
+ Assert.AreEqual("Version 01.0.0.0", mid.ToolSoftwareVersion.TrimEnd());
+ Assert.AreEqual("RBUType", mid.RBUType.TrimEnd());
+ Assert.AreEqual("Serial", mid.ControllerSerialNumber.TrimEnd());
+ Assert.AreEqual(SystemType.PowerMacs4000, mid.SystemType);
+ Assert.AreEqual(SystemSubType.SystemRunningPresses, mid.SystemSubType);
AssertEqualPackages(bytes, mid);
}
@@ -187,22 +188,22 @@ public void Mid0002Revision6()
string pack = @"02210002006 010001020103Airbag1 04ACT05OpenProtocolVersion06Version 19.0.0.0 07Version 01.0.0.0 08RBUType 09Serial 100021100212013114429496729515Station Or Cell Name 16A";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.CellId);
- Assert.IsNotNull(mid.ChannelId);
- Assert.IsNotNull(mid.ControllerName);
- Assert.IsNotNull(mid.SupplierCode);
- Assert.IsNotNull(mid.OpenProtocolVersion);
- Assert.IsNotNull(mid.ControllerSoftwareVersion);
- Assert.IsNotNull(mid.ToolSoftwareVersion);
- Assert.IsNotNull(mid.RBUType);
- Assert.IsNotNull(mid.ControllerSerialNumber);
- Assert.IsNotNull(mid.SystemType);
- Assert.IsNotNull(mid.SystemSubType);
- Assert.IsNotNull(mid.SequenceNumberSupport);
- Assert.IsNotNull(mid.LinkingHandlingSupport);
- Assert.AreNotEqual(0, mid.StationCellId);
- Assert.IsNotNull(mid.StationCellName);
- Assert.IsNotNull(mid.ClientId);
+ Assert.AreEqual(1, mid.CellId);
+ Assert.AreEqual(1, mid.ChannelId);
+ Assert.AreEqual("Airbag1", mid.ControllerName.TrimEnd());
+ Assert.AreEqual("ACT", mid.SupplierCode);
+ Assert.AreEqual("OpenProtocolVersion", mid.OpenProtocolVersion);
+ Assert.AreEqual("Version 19.0.0.0", mid.ControllerSoftwareVersion.TrimEnd());
+ Assert.AreEqual("Version 01.0.0.0", mid.ToolSoftwareVersion.TrimEnd());
+ Assert.AreEqual("RBUType", mid.RBUType.TrimEnd());
+ Assert.AreEqual("Serial", mid.ControllerSerialNumber.TrimEnd());
+ Assert.AreEqual(SystemType.PowerMacs4000, mid.SystemType);
+ Assert.AreEqual(SystemSubType.SystemRunningPresses, mid.SystemSubType);
+ Assert.IsFalse(mid.SequenceNumberSupport);
+ Assert.IsTrue(mid.LinkingHandlingSupport);
+ Assert.AreEqual(4294967295L, mid.StationCellId);
+ Assert.AreEqual("Station Or Cell Name", mid.StationCellName.TrimEnd());
+ Assert.AreEqual("A", mid.ClientId);
AssertEqualPackages(pack, mid);
}
@@ -214,22 +215,22 @@ public void Mid0002ByteRevision6()
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.CellId);
- Assert.IsNotNull(mid.ChannelId);
- Assert.IsNotNull(mid.ControllerName);
- Assert.IsNotNull(mid.SupplierCode);
- Assert.IsNotNull(mid.OpenProtocolVersion);
- Assert.IsNotNull(mid.ControllerSoftwareVersion);
- Assert.IsNotNull(mid.ToolSoftwareVersion);
- Assert.IsNotNull(mid.RBUType);
- Assert.IsNotNull(mid.ControllerSerialNumber);
- Assert.IsNotNull(mid.SystemType);
- Assert.IsNotNull(mid.SystemSubType);
- Assert.IsNotNull(mid.SequenceNumberSupport);
- Assert.IsNotNull(mid.LinkingHandlingSupport);
- Assert.AreNotEqual(0, mid.StationCellId);
- Assert.IsNotNull(mid.StationCellName);
- Assert.IsNotNull(mid.ClientId);
+ Assert.AreEqual(1, mid.CellId);
+ Assert.AreEqual(1, mid.ChannelId);
+ Assert.AreEqual("Airbag1", mid.ControllerName.TrimEnd());
+ Assert.AreEqual("ACT", mid.SupplierCode);
+ Assert.AreEqual("OpenProtocolVersion", mid.OpenProtocolVersion);
+ Assert.AreEqual("Version 19.0.0.0", mid.ControllerSoftwareVersion.TrimEnd());
+ Assert.AreEqual("Version 01.0.0.0", mid.ToolSoftwareVersion.TrimEnd());
+ Assert.AreEqual("RBUType", mid.RBUType.TrimEnd());
+ Assert.AreEqual("Serial", mid.ControllerSerialNumber.TrimEnd());
+ Assert.AreEqual(SystemType.PowerMacs4000, mid.SystemType);
+ Assert.AreEqual(SystemSubType.SystemRunningPresses, mid.SystemSubType);
+ Assert.IsFalse(mid.SequenceNumberSupport);
+ Assert.IsTrue(mid.LinkingHandlingSupport);
+ Assert.AreEqual(4294967295L, mid.StationCellId);
+ Assert.AreEqual("Station Or Cell Name", mid.StationCellName.TrimEnd());
+ Assert.AreEqual("A", mid.ClientId);
AssertEqualPackages(bytes, mid);
}
@@ -240,23 +241,23 @@ public void Mid0002Revision7()
string pack = @"02240002007 010001020103Airbag1 04ACT05OpenProtocolVersion06Version 19.0.0.0 07Version 01.0.0.0 08RBUType 09Serial 100021100212013114429496729515Station Or Cell Name 16A171";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.CellId);
- Assert.IsNotNull(mid.ChannelId);
- Assert.IsNotNull(mid.ControllerName);
- Assert.IsNotNull(mid.SupplierCode);
- Assert.IsNotNull(mid.OpenProtocolVersion);
- Assert.IsNotNull(mid.ControllerSoftwareVersion);
- Assert.IsNotNull(mid.ToolSoftwareVersion);
- Assert.IsNotNull(mid.RBUType);
- Assert.IsNotNull(mid.ControllerSerialNumber);
- Assert.IsNotNull(mid.SystemType);
- Assert.IsNotNull(mid.SystemSubType);
- Assert.IsNotNull(mid.SequenceNumberSupport);
- Assert.IsNotNull(mid.LinkingHandlingSupport);
- Assert.AreNotEqual(0, mid.StationCellId);
- Assert.IsNotNull(mid.StationCellName);
- Assert.IsNotNull(mid.ClientId);
- Assert.IsNotNull(mid.OptionalKeepAlive);
+ Assert.AreEqual(1, mid.CellId);
+ Assert.AreEqual(1, mid.ChannelId);
+ Assert.AreEqual("Airbag1", mid.ControllerName.TrimEnd());
+ Assert.AreEqual("ACT", mid.SupplierCode);
+ Assert.AreEqual("OpenProtocolVersion", mid.OpenProtocolVersion);
+ Assert.AreEqual("Version 19.0.0.0", mid.ControllerSoftwareVersion.TrimEnd());
+ Assert.AreEqual("Version 01.0.0.0", mid.ToolSoftwareVersion.TrimEnd());
+ Assert.AreEqual("RBUType", mid.RBUType.TrimEnd());
+ Assert.AreEqual("Serial", mid.ControllerSerialNumber.TrimEnd());
+ Assert.AreEqual(SystemType.PowerMacs4000, mid.SystemType);
+ Assert.AreEqual(SystemSubType.SystemRunningPresses, mid.SystemSubType);
+ Assert.IsFalse(mid.SequenceNumberSupport);
+ Assert.IsTrue(mid.LinkingHandlingSupport);
+ Assert.AreEqual(4294967295L, mid.StationCellId);
+ Assert.AreEqual("Station Or Cell Name", mid.StationCellName.TrimEnd());
+ Assert.AreEqual("A", mid.ClientId);
+ Assert.IsTrue(mid.OptionalKeepAlive);
AssertEqualPackages(pack, mid);
}
@@ -268,24 +269,168 @@ public void Mid0002ByteRevision7()
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.CellId);
- Assert.IsNotNull(mid.ChannelId);
- Assert.IsNotNull(mid.ControllerName);
- Assert.IsNotNull(mid.SupplierCode);
- Assert.IsNotNull(mid.OpenProtocolVersion);
- Assert.IsNotNull(mid.ControllerSoftwareVersion);
- Assert.IsNotNull(mid.ToolSoftwareVersion);
- Assert.IsNotNull(mid.RBUType);
- Assert.IsNotNull(mid.ControllerSerialNumber);
- Assert.IsNotNull(mid.SystemType);
- Assert.IsNotNull(mid.SystemSubType);
- Assert.IsNotNull(mid.SequenceNumberSupport);
- Assert.IsNotNull(mid.LinkingHandlingSupport);
- Assert.AreNotEqual(0, mid.StationCellId);
- Assert.IsNotNull(mid.StationCellName);
- Assert.IsNotNull(mid.ClientId);
- Assert.IsNotNull(mid.OptionalKeepAlive);
+ Assert.AreEqual(1, mid.CellId);
+ Assert.AreEqual(1, mid.ChannelId);
+ Assert.AreEqual("Airbag1", mid.ControllerName.TrimEnd());
+ Assert.AreEqual("ACT", mid.SupplierCode);
+ Assert.AreEqual("OpenProtocolVersion", mid.OpenProtocolVersion);
+ Assert.AreEqual("Version 19.0.0.0", mid.ControllerSoftwareVersion.TrimEnd());
+ Assert.AreEqual("Version 01.0.0.0", mid.ToolSoftwareVersion.TrimEnd());
+ Assert.AreEqual("RBUType", mid.RBUType.TrimEnd());
+ Assert.AreEqual("Serial", mid.ControllerSerialNumber.TrimEnd());
+ Assert.AreEqual(SystemType.PowerMacs4000, mid.SystemType);
+ Assert.AreEqual(SystemSubType.SystemRunningPresses, mid.SystemSubType);
+ Assert.IsFalse(mid.SequenceNumberSupport);
+ Assert.IsTrue(mid.LinkingHandlingSupport);
+ Assert.AreEqual(4294967295L, mid.StationCellId);
+ Assert.AreEqual("Station Or Cell Name", mid.StationCellName.TrimEnd());
+ Assert.AreEqual("A", mid.ClientId);
+ Assert.IsTrue(mid.OptionalKeepAlive);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0002PackRevision1()
+ {
+ string pack = @"00570002001 010001020103Airbag1 ";
+
+ AssertBuildAndParse(pack, new Mid0002(1)
+ {
+ CellId = 1,
+ ChannelId = 1,
+ ControllerName = "Airbag1"
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 2"), TestCategory("Pack")]
+ public void Mid0002PackRevision2()
+ {
+ string pack = @"00620002002 010001020103Airbag1 04ACT";
+
+ AssertBuildAndParse(pack, new Mid0002(2)
+ {
+ CellId = 1,
+ ChannelId = 1,
+ ControllerName = "Airbag1",
+ SupplierCode = "ACT"
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 3"), TestCategory("Pack")]
+ public void Mid0002PackRevision3()
+ {
+ string pack = @"01250002003 010001020103Airbag1 04ACT05OpenProtocolVersion06Version 19.0.0.0 07Version 01.0.0.0 ";
+
+ AssertBuildAndParse(pack, new Mid0002(3)
+ {
+ CellId = 1,
+ ChannelId = 1,
+ ControllerName = "Airbag1",
+ SupplierCode = "ACT",
+ OpenProtocolVersion = "OpenProtocolVersion",
+ ControllerSoftwareVersion = "Version 19.0.0.0",
+ ToolSoftwareVersion = "Version 01.0.0.0"
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 4"), TestCategory("Pack")]
+ public void Mid0002PackRevision4()
+ {
+ string pack = @"01630002004 010001020103Airbag1 04ACT05OpenProtocolVersion06Version 19.0.0.0 07Version 01.0.0.0 08RBUType 09Serial ";
+
+ AssertBuildAndParse(pack, new Mid0002(4)
+ {
+ CellId = 1,
+ ChannelId = 1,
+ ControllerName = "Airbag1",
+ SupplierCode = "ACT",
+ OpenProtocolVersion = "OpenProtocolVersion",
+ ControllerSoftwareVersion = "Version 19.0.0.0",
+ ToolSoftwareVersion = "Version 01.0.0.0",
+ RBUType = "RBUType",
+ ControllerSerialNumber = "Serial"
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 5"), TestCategory("Pack")]
+ public void Mid0002PackRevision5()
+ {
+ string pack = @"01730002005 010001020103Airbag1 04ACT05OpenProtocolVersion06Version 19.0.0.0 07Version 01.0.0.0 08RBUType 09Serial 1000211002";
+
+ AssertBuildAndParse(pack, new Mid0002(5)
+ {
+ CellId = 1,
+ ChannelId = 1,
+ ControllerName = "Airbag1",
+ SupplierCode = "ACT",
+ OpenProtocolVersion = "OpenProtocolVersion",
+ ControllerSoftwareVersion = "Version 19.0.0.0",
+ ToolSoftwareVersion = "Version 01.0.0.0",
+ RBUType = "RBUType",
+ ControllerSerialNumber = "Serial",
+ SystemType = SystemType.PowerMacs4000,
+ SystemSubType = SystemSubType.SystemRunningPresses
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 6"), TestCategory("Pack")]
+ public void Mid0002PackRevision6()
+ {
+ string pack = @"02210002006 010001020103Airbag1 04ACT05OpenProtocolVersion06Version 19.0.0.0 07Version 01.0.0.0 08RBUType 09Serial 100021100212013114429496729515Station Or Cell Name 16A";
+
+ AssertBuildAndParse(pack, new Mid0002(6)
+ {
+ CellId = 1,
+ ChannelId = 1,
+ ControllerName = "Airbag1",
+ SupplierCode = "ACT",
+ OpenProtocolVersion = "OpenProtocolVersion",
+ ControllerSoftwareVersion = "Version 19.0.0.0",
+ ToolSoftwareVersion = "Version 01.0.0.0",
+ RBUType = "RBUType",
+ ControllerSerialNumber = "Serial",
+ SystemType = SystemType.PowerMacs4000,
+ SystemSubType = SystemSubType.SystemRunningPresses,
+ SequenceNumberSupport = false,
+ LinkingHandlingSupport = true,
+ StationCellId = 4294967295L,
+ StationCellName = "Station Or Cell Name",
+ ClientId = "A"
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 7"), TestCategory("Pack")]
+ public void Mid0002PackRevision7()
+ {
+ string pack = @"02240002007 010001020103Airbag1 04ACT05OpenProtocolVersion06Version 19.0.0.0 07Version 01.0.0.0 08RBUType 09Serial 100021100212013114429496729515Station Or Cell Name 16A171";
+
+ AssertBuildAndParse(pack, new Mid0002(7)
+ {
+ CellId = 1,
+ ChannelId = 1,
+ ControllerName = "Airbag1",
+ SupplierCode = "ACT",
+ OpenProtocolVersion = "OpenProtocolVersion",
+ ControllerSoftwareVersion = "Version 19.0.0.0",
+ ToolSoftwareVersion = "Version 01.0.0.0",
+ RBUType = "RBUType",
+ ControllerSerialNumber = "Serial",
+ SystemType = SystemType.PowerMacs4000,
+ SystemSubType = SystemSubType.SystemRunningPresses,
+ SequenceNumberSupport = false,
+ LinkingHandlingSupport = true,
+ StationCellId = 4294967295L,
+ StationCellName = "Station Or Cell Name",
+ ClientId = "A",
+ OptionalKeepAlive = true
+ });
+ }
}
}
diff --git a/src/MIDTesters.Core/Communication/TestMid0003.cs b/src/MIDTesters.Core/Communication/TestMid0003.cs
index 26e9239d..c9b7f9ce 100644
--- a/src/MIDTesters.Core/Communication/TestMid0003.cs
+++ b/src/MIDTesters.Core/Communication/TestMid0003.cs
@@ -27,5 +27,14 @@ public void Mid0003ByteRevision1()
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0003PackRevision1()
+ {
+ string pack = @"00200003001 ";
+
+ AssertBuildAndParse(pack, new Mid0003());
+ }
}
}
diff --git a/src/MIDTesters.Core/Communication/TestMid0004.cs b/src/MIDTesters.Core/Communication/TestMid0004.cs
index 800a81b0..051ca64b 100644
--- a/src/MIDTesters.Core/Communication/TestMid0004.cs
+++ b/src/MIDTesters.Core/Communication/TestMid0004.cs
@@ -1,5 +1,6 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenProtocolInterpreter.Communication;
+using OpenProtocolInterpreter;
namespace MIDTesters.Communication
{
@@ -14,8 +15,8 @@ public void Mid0004Revision1()
string pack = @"00260004 001802";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.FailedMid);
- Assert.IsNotNull(mid.ErrorCode);
+ Assert.AreEqual(18, mid.FailedMid);
+ Assert.AreEqual(Error.ParameterSetIdNotPresent, mid.ErrorCode);
AssertEqualPackages(pack, mid, true);
}
@@ -27,8 +28,8 @@ public void Mid0004ByteRevision1()
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.FailedMid);
- Assert.IsNotNull(mid.ErrorCode);
+ Assert.AreEqual(18, mid.FailedMid);
+ Assert.AreEqual(Error.ParameterSetIdNotPresent, mid.ErrorCode);
AssertEqualPackages(bytes, mid, true);
}
@@ -39,8 +40,8 @@ public void Mid0004Revision2()
string pack = @"00270004002 0018021";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.FailedMid);
- Assert.IsNotNull(mid.ErrorCode);
+ Assert.AreEqual(18, mid.FailedMid);
+ Assert.AreEqual(Error.JobNotRunning, mid.ErrorCode);
AssertEqualPackages(pack, mid);
}
@@ -52,9 +53,35 @@ public void Mid0004ByteRevision2()
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.FailedMid);
- Assert.IsNotNull(mid.ErrorCode);
+ Assert.AreEqual(18, mid.FailedMid);
+ Assert.AreEqual(Error.JobNotRunning, mid.ErrorCode);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0004PackRevision1()
+ {
+ string pack = @"00260004 001802";
+
+ AssertBuildAndParse(pack, new Mid0004(1)
+ {
+ FailedMid = 18,
+ ErrorCode = Error.ParameterSetIdNotPresent
+ }, true);
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 2"), TestCategory("Pack")]
+ public void Mid0004PackRevision2()
+ {
+ string pack = @"00270004002 0018021";
+
+ AssertBuildAndParse(pack, new Mid0004(2)
+ {
+ FailedMid = 18,
+ ErrorCode = Error.JobNotRunning
+ });
+ }
}
}
diff --git a/src/MIDTesters.Core/Communication/TestMid0005.cs b/src/MIDTesters.Core/Communication/TestMid0005.cs
index b294268d..c046c59a 100644
--- a/src/MIDTesters.Core/Communication/TestMid0005.cs
+++ b/src/MIDTesters.Core/Communication/TestMid0005.cs
@@ -14,7 +14,7 @@ public void Mid0005Revision1()
string pack = @"00240005 0018";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.MidAccepted);
+ Assert.AreEqual(18, mid.MidAccepted);
AssertEqualPackages(pack, mid, true);
}
@@ -26,8 +26,20 @@ public void Mid0005ByteRevision1()
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.MidAccepted);
+ Assert.AreEqual(18, mid.MidAccepted);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0005PackRevision1()
+ {
+ string pack = @"00240005 0018";
+
+ AssertBuildAndParse(pack, new Mid0005(1)
+ {
+ MidAccepted = 18
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Communication/TestMid0006.cs b/src/MIDTesters.Core/Communication/TestMid0006.cs
index c100bee8..27a92304 100644
--- a/src/MIDTesters.Core/Communication/TestMid0006.cs
+++ b/src/MIDTesters.Core/Communication/TestMid0006.cs
@@ -1,4 +1,5 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
+using OpenProtocolInterpreter;
using OpenProtocolInterpreter.Communication;
namespace MIDTesters.Communication
@@ -15,10 +16,10 @@ public void Mid0006Revision1()
var mid = _midInterpreter.Parse(pack);
Assert.AreEqual(typeof(Mid0006), mid.GetType());
- Assert.IsNotNull(mid.RequestedMid);
- Assert.IsNotNull(mid.WantedRevision);
- Assert.IsNotNull(mid.ExtraDataLength);
- Assert.IsNotNull(mid.ExtraData);
+ Assert.AreEqual(18, mid.RequestedMid);
+ Assert.AreEqual(2, mid.WantedRevision);
+ Assert.AreEqual(14, mid.ExtraDataLength);
+ Assert.AreEqual("lengthequals14", mid.ExtraData);
AssertEqualPackages(pack, mid, true);
}
@@ -31,11 +32,25 @@ public void Mid0006ByteRevision1()
var mid = _midInterpreter.Parse(bytes);
Assert.AreEqual(typeof(Mid0006), mid.GetType());
- Assert.IsNotNull(mid.RequestedMid);
- Assert.IsNotNull(mid.WantedRevision);
- Assert.IsNotNull(mid.ExtraDataLength);
- Assert.IsNotNull(mid.ExtraData);
+ Assert.AreEqual(18, mid.RequestedMid);
+ Assert.AreEqual(2, mid.WantedRevision);
+ Assert.AreEqual(14, mid.ExtraDataLength);
+ Assert.AreEqual("lengthequals14", mid.ExtraData);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0006PackRevision1()
+ {
+ string pack = @"00430006 001800214lengthequals14";
+
+ AssertBuildAndParse(pack, new Mid0006()
+ {
+ RequestedMid = 18,
+ WantedRevision = 2,
+ ExtraData = "lengthequals14"
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Communication/TestMid0008.cs b/src/MIDTesters.Core/Communication/TestMid0008.cs
index 89439739..a05c9fbe 100644
--- a/src/MIDTesters.Core/Communication/TestMid0008.cs
+++ b/src/MIDTesters.Core/Communication/TestMid0008.cs
@@ -14,10 +14,10 @@ public void Mid0008Revision1()
string pack = @"00430008 002200214lengthequals14";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.SubscriptionMid);
- Assert.IsNotNull(mid.WantedRevision);
- Assert.IsNotNull(mid.ExtraDataLength);
- Assert.IsNotNull(mid.ExtraData);
+ Assert.AreEqual(22, mid.SubscriptionMid);
+ Assert.AreEqual(2, mid.WantedRevision);
+ Assert.AreEqual(14, mid.ExtraDataLength);
+ Assert.AreEqual("lengthequals14", mid.ExtraData);
AssertEqualPackages(pack, mid, true);
}
@@ -29,11 +29,25 @@ public void Mid0008ByteRevision1()
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.SubscriptionMid);
- Assert.IsNotNull(mid.WantedRevision);
- Assert.IsNotNull(mid.ExtraDataLength);
- Assert.IsNotNull(mid.ExtraData);
+ Assert.AreEqual(22, mid.SubscriptionMid);
+ Assert.AreEqual(2, mid.WantedRevision);
+ Assert.AreEqual(14, mid.ExtraDataLength);
+ Assert.AreEqual("lengthequals14", mid.ExtraData);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0008PackRevision1()
+ {
+ string pack = @"00430008 002200214lengthequals14";
+
+ AssertBuildAndParse(pack, new Mid0008()
+ {
+ SubscriptionMid = 22,
+ WantedRevision = 2,
+ ExtraData = "lengthequals14"
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Communication/TestMid0009.cs b/src/MIDTesters.Core/Communication/TestMid0009.cs
index f346e6a6..131e9808 100644
--- a/src/MIDTesters.Core/Communication/TestMid0009.cs
+++ b/src/MIDTesters.Core/Communication/TestMid0009.cs
@@ -14,10 +14,10 @@ public void Mid0009Revision1()
string pack = @"00430009 002200214lengthequals14";
var mid = _midInterpreter.Parse(pack);
- Assert.IsNotNull(mid.UnsubscriptionMid);
- Assert.IsNotNull(mid.ExtraDataRevision);
- Assert.IsNotNull(mid.ExtraDataLength);
- Assert.IsNotNull(mid.ExtraData);
+ Assert.AreEqual(22, mid.UnsubscriptionMid);
+ Assert.AreEqual(2, mid.ExtraDataRevision);
+ Assert.AreEqual(14, mid.ExtraDataLength);
+ Assert.AreEqual("lengthequals14", mid.ExtraData);
AssertEqualPackages(pack, mid, true);
}
@@ -29,11 +29,25 @@ public void Mid0009ByteRevision1()
byte[] bytes = GetAsciiBytes(pack);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.UnsubscriptionMid);
- Assert.IsNotNull(mid.ExtraDataRevision);
- Assert.IsNotNull(mid.ExtraDataLength);
- Assert.IsNotNull(mid.ExtraData);
+ Assert.AreEqual(22, mid.UnsubscriptionMid);
+ Assert.AreEqual(2, mid.ExtraDataRevision);
+ Assert.AreEqual(14, mid.ExtraDataLength);
+ Assert.AreEqual("lengthequals14", mid.ExtraData);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0009PackRevision1()
+ {
+ string pack = @"00430009 002200214lengthequals14";
+
+ AssertBuildAndParse(pack, new Mid0009()
+ {
+ UnsubscriptionMid = 22,
+ ExtraDataRevision = 2,
+ ExtraData = "lengthequals14"
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Converters/BooleanConverterTest.cs b/src/MIDTesters.Core/Converters/BooleanConverterTest.cs
index 7603dd24..78339411 100644
--- a/src/MIDTesters.Core/Converters/BooleanConverterTest.cs
+++ b/src/MIDTesters.Core/Converters/BooleanConverterTest.cs
@@ -3,7 +3,7 @@
using System.Threading;
using System.Threading.Tasks;
-namespace MIDTesters.Core.Converters
+namespace MIDTesters.Converters
{
[TestClass]
[TestCategory("Converters")]
diff --git a/src/MIDTesters.Core/Converters/ByteConverterTest.cs b/src/MIDTesters.Core/Converters/ByteConverterTest.cs
index a769489a..24ad2668 100644
--- a/src/MIDTesters.Core/Converters/ByteConverterTest.cs
+++ b/src/MIDTesters.Core/Converters/ByteConverterTest.cs
@@ -4,7 +4,7 @@
using System.Threading.Tasks;
using System.Threading;
-namespace MIDTesters.Core.Converters
+namespace MIDTesters.Converters
{
[TestClass]
[TestCategory("Converters")]
diff --git a/src/MIDTesters.Core/Converters/DateTimeConverterTest.cs b/src/MIDTesters.Core/Converters/DateTimeConverterTest.cs
index f7c893ea..8c5faf54 100644
--- a/src/MIDTesters.Core/Converters/DateTimeConverterTest.cs
+++ b/src/MIDTesters.Core/Converters/DateTimeConverterTest.cs
@@ -4,7 +4,7 @@
using System.Threading;
using System.Threading.Tasks;
-namespace MIDTesters.Core.Converters
+namespace MIDTesters.Converters
{
[TestClass]
[TestCategory("Converters")]
diff --git a/src/MIDTesters.Core/Converters/DecimalConverterTest.cs b/src/MIDTesters.Core/Converters/DecimalConverterTest.cs
index f8d0ca44..b44dfa90 100644
--- a/src/MIDTesters.Core/Converters/DecimalConverterTest.cs
+++ b/src/MIDTesters.Core/Converters/DecimalConverterTest.cs
@@ -3,7 +3,7 @@
using System.Threading;
using System.Threading.Tasks;
-namespace MIDTesters.Core.Converters
+namespace MIDTesters.Converters
{
[TestClass]
[TestCategory("Converters")]
diff --git a/src/MIDTesters.Core/Converters/Int32ConverterTest.cs b/src/MIDTesters.Core/Converters/Int32ConverterTest.cs
index 06c7405f..168ba220 100644
--- a/src/MIDTesters.Core/Converters/Int32ConverterTest.cs
+++ b/src/MIDTesters.Core/Converters/Int32ConverterTest.cs
@@ -3,7 +3,7 @@
using System.Threading;
using System.Threading.Tasks;
-namespace MIDTesters.Core.Converters
+namespace MIDTesters.Converters
{
[TestClass]
[TestCategory("Converters")]
diff --git a/src/MIDTesters.Core/Converters/Int64ConverterTest.cs b/src/MIDTesters.Core/Converters/Int64ConverterTest.cs
index 93bd89fd..9bde847e 100644
--- a/src/MIDTesters.Core/Converters/Int64ConverterTest.cs
+++ b/src/MIDTesters.Core/Converters/Int64ConverterTest.cs
@@ -3,7 +3,7 @@
using System.Threading;
using System.Threading.Tasks;
-namespace MIDTesters.Core.Converters
+namespace MIDTesters.Converters
{
[TestClass]
[TestCategory("Converters")]
diff --git a/src/MIDTesters.Core/Converters/PaddingConverterTest.cs b/src/MIDTesters.Core/Converters/PaddingConverterTest.cs
index 79a9b1e5..6b1a3d1d 100644
--- a/src/MIDTesters.Core/Converters/PaddingConverterTest.cs
+++ b/src/MIDTesters.Core/Converters/PaddingConverterTest.cs
@@ -1,7 +1,7 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenProtocolInterpreter;
-namespace MIDTesters.Core.Converters
+namespace MIDTesters.Converters
{
[TestClass]
[TestCategory("Converters")]
diff --git a/src/MIDTesters.Core/Converters/TruncatedDecimalConverterTest.cs b/src/MIDTesters.Core/Converters/TruncatedDecimalConverterTest.cs
index 0c6cc426..825c50d8 100644
--- a/src/MIDTesters.Core/Converters/TruncatedDecimalConverterTest.cs
+++ b/src/MIDTesters.Core/Converters/TruncatedDecimalConverterTest.cs
@@ -3,7 +3,7 @@
using System.Threading;
using System.Threading.Tasks;
-namespace MIDTesters.Core.Converters
+namespace MIDTesters.Converters
{
[TestClass]
[TestCategory("Converters")]
diff --git a/src/MIDTesters.Core/IOInterface/TestMid0200.cs b/src/MIDTesters.Core/IOInterface/TestMid0200.cs
index 465c14ec..71369d90 100644
--- a/src/MIDTesters.Core/IOInterface/TestMid0200.cs
+++ b/src/MIDTesters.Core/IOInterface/TestMid0200.cs
@@ -1,5 +1,6 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenProtocolInterpreter.IOInterface;
+using OpenProtocolInterpreter;
namespace MIDTesters.IOInterface
{
@@ -14,16 +15,16 @@ public void Mid0200Revision1()
string package = "00300200 1231231230";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.StatusRelayOne);
- Assert.IsNotNull(mid.StatusRelayTwo);
- Assert.IsNotNull(mid.StatusRelayThree);
- Assert.IsNotNull(mid.StatusRelayFour);
- Assert.IsNotNull(mid.StatusRelayFive);
- Assert.IsNotNull(mid.StatusRelaySix);
- Assert.IsNotNull(mid.StatusRelaySeven);
- Assert.IsNotNull(mid.StatusRelayEight);
- Assert.IsNotNull(mid.StatusRelayNine);
- Assert.IsNotNull(mid.StatusRelayTen);
+ Assert.AreEqual(RelayStatus.On, mid.StatusRelayOne);
+ Assert.AreEqual(RelayStatus.Flashing, mid.StatusRelayTwo);
+ Assert.AreEqual(RelayStatus.KeepCurrentStatus, mid.StatusRelayThree);
+ Assert.AreEqual(RelayStatus.On, mid.StatusRelayFour);
+ Assert.AreEqual(RelayStatus.Flashing, mid.StatusRelayFive);
+ Assert.AreEqual(RelayStatus.KeepCurrentStatus, mid.StatusRelaySix);
+ Assert.AreEqual(RelayStatus.On, mid.StatusRelaySeven);
+ Assert.AreEqual(RelayStatus.Flashing, mid.StatusRelayEight);
+ Assert.AreEqual(RelayStatus.KeepCurrentStatus, mid.StatusRelayNine);
+ Assert.AreEqual(RelayStatus.Off, mid.StatusRelayTen);
AssertEqualPackages(package, mid, true);
}
@@ -35,17 +36,38 @@ public void Mid0200ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.StatusRelayOne);
- Assert.IsNotNull(mid.StatusRelayTwo);
- Assert.IsNotNull(mid.StatusRelayThree);
- Assert.IsNotNull(mid.StatusRelayFour);
- Assert.IsNotNull(mid.StatusRelayFive);
- Assert.IsNotNull(mid.StatusRelaySix);
- Assert.IsNotNull(mid.StatusRelaySeven);
- Assert.IsNotNull(mid.StatusRelayEight);
- Assert.IsNotNull(mid.StatusRelayNine);
- Assert.IsNotNull(mid.StatusRelayTen);
+ Assert.AreEqual(RelayStatus.On, mid.StatusRelayOne);
+ Assert.AreEqual(RelayStatus.Flashing, mid.StatusRelayTwo);
+ Assert.AreEqual(RelayStatus.KeepCurrentStatus, mid.StatusRelayThree);
+ Assert.AreEqual(RelayStatus.On, mid.StatusRelayFour);
+ Assert.AreEqual(RelayStatus.Flashing, mid.StatusRelayFive);
+ Assert.AreEqual(RelayStatus.KeepCurrentStatus, mid.StatusRelaySix);
+ Assert.AreEqual(RelayStatus.On, mid.StatusRelaySeven);
+ Assert.AreEqual(RelayStatus.Flashing, mid.StatusRelayEight);
+ Assert.AreEqual(RelayStatus.KeepCurrentStatus, mid.StatusRelayNine);
+ Assert.AreEqual(RelayStatus.Off, mid.StatusRelayTen);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0200PackRevision1()
+ {
+ string package = "00300200 1231231230";
+
+ AssertBuildAndParse(package, new Mid0200()
+ {
+ StatusRelayOne = RelayStatus.On,
+ StatusRelayTwo = RelayStatus.Flashing,
+ StatusRelayThree = RelayStatus.KeepCurrentStatus,
+ StatusRelayFour = RelayStatus.On,
+ StatusRelayFive = RelayStatus.Flashing,
+ StatusRelaySix = RelayStatus.KeepCurrentStatus,
+ StatusRelaySeven = RelayStatus.On,
+ StatusRelayEight = RelayStatus.Flashing,
+ StatusRelayNine = RelayStatus.KeepCurrentStatus,
+ StatusRelayTen = RelayStatus.Off
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/IOInterface/TestMid0210.cs b/src/MIDTesters.Core/IOInterface/TestMid0210.cs
index fe034936..87481642 100644
--- a/src/MIDTesters.Core/IOInterface/TestMid0210.cs
+++ b/src/MIDTesters.Core/IOInterface/TestMid0210.cs
@@ -31,5 +31,14 @@ public void Mid0210ByteRevision1()
Assert.IsTrue(mid.Header.NoAckFlag);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0210PackRevision1()
+ {
+ string package = "00200210 1 ";
+
+ AssertBuildAndParse(package, new Mid0210(noAckFlag: true), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/IOInterface/TestMid0211.cs b/src/MIDTesters.Core/IOInterface/TestMid0211.cs
index 8acea432..03dd47f9 100644
--- a/src/MIDTesters.Core/IOInterface/TestMid0211.cs
+++ b/src/MIDTesters.Core/IOInterface/TestMid0211.cs
@@ -15,14 +15,14 @@ public void Mid0211Revision1()
var mid = _midInterpreter.Parse(package);
Assert.IsTrue(mid.Header.NoAckFlag);
- Assert.IsNotNull(mid.StatusDigInOne);
- Assert.IsNotNull(mid.StatusDigInTwo);
- Assert.IsNotNull(mid.StatusDigInThree);
- Assert.IsNotNull(mid.StatusDigInFour);
- Assert.IsNotNull(mid.StatusDigInFive);
- Assert.IsNotNull(mid.StatusDigInSix);
- Assert.IsNotNull(mid.StatusDigInSeven);
- Assert.IsNotNull(mid.StatusDigInEight);
+ Assert.IsTrue(mid.StatusDigInOne);
+ Assert.IsFalse(mid.StatusDigInTwo);
+ Assert.IsTrue(mid.StatusDigInThree);
+ Assert.IsFalse(mid.StatusDigInFour);
+ Assert.IsTrue(mid.StatusDigInFive);
+ Assert.IsFalse(mid.StatusDigInSix);
+ Assert.IsTrue(mid.StatusDigInSeven);
+ Assert.IsTrue(mid.StatusDigInEight);
AssertEqualPackages(package, mid, true);
}
@@ -35,15 +35,35 @@ public void Mid0211ByteRevision1()
var mid = _midInterpreter.Parse(bytes);
Assert.IsTrue(mid.Header.NoAckFlag);
- Assert.IsNotNull(mid.StatusDigInOne);
- Assert.IsNotNull(mid.StatusDigInTwo);
- Assert.IsNotNull(mid.StatusDigInThree);
- Assert.IsNotNull(mid.StatusDigInFour);
- Assert.IsNotNull(mid.StatusDigInFive);
- Assert.IsNotNull(mid.StatusDigInSix);
- Assert.IsNotNull(mid.StatusDigInSeven);
- Assert.IsNotNull(mid.StatusDigInEight);
+ Assert.IsTrue(mid.StatusDigInOne);
+ Assert.IsFalse(mid.StatusDigInTwo);
+ Assert.IsTrue(mid.StatusDigInThree);
+ Assert.IsFalse(mid.StatusDigInFour);
+ Assert.IsTrue(mid.StatusDigInFive);
+ Assert.IsFalse(mid.StatusDigInSix);
+ Assert.IsTrue(mid.StatusDigInSeven);
+ Assert.IsTrue(mid.StatusDigInEight);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0211PackRevision1()
+ {
+ string package = "00280211 1 10101011";
+
+ AssertBuildAndParse(package, new Mid0211()
+ {
+ Header = { NoAckFlag = true },
+ StatusDigInOne = true,
+ StatusDigInTwo = false,
+ StatusDigInThree = true,
+ StatusDigInFour = false,
+ StatusDigInFive = true,
+ StatusDigInSix = false,
+ StatusDigInSeven = true,
+ StatusDigInEight = true
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/IOInterface/TestMid0212.cs b/src/MIDTesters.Core/IOInterface/TestMid0212.cs
index ba0c6231..91a18bf0 100644
--- a/src/MIDTesters.Core/IOInterface/TestMid0212.cs
+++ b/src/MIDTesters.Core/IOInterface/TestMid0212.cs
@@ -29,5 +29,14 @@ public void Mid0212ByteRevision1()
Assert.AreEqual(typeof(Mid0212), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0212PackRevision1()
+ {
+ string package = "00200212 ";
+
+ AssertBuildAndParse(package, new Mid0212(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/IOInterface/TestMid0213.cs b/src/MIDTesters.Core/IOInterface/TestMid0213.cs
index 7256d8f6..9e9c5b20 100644
--- a/src/MIDTesters.Core/IOInterface/TestMid0213.cs
+++ b/src/MIDTesters.Core/IOInterface/TestMid0213.cs
@@ -29,5 +29,14 @@ public void Mid0213ByteRevision1()
Assert.AreEqual(typeof(Mid0213), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0213PackRevision1()
+ {
+ string package = "00200213 ";
+
+ AssertBuildAndParse(package, new Mid0213(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/IOInterface/TestMid0214.cs b/src/MIDTesters.Core/IOInterface/TestMid0214.cs
index 4cd06126..8ace127b 100644
--- a/src/MIDTesters.Core/IOInterface/TestMid0214.cs
+++ b/src/MIDTesters.Core/IOInterface/TestMid0214.cs
@@ -14,7 +14,7 @@ public void Mid0214AllRevisions()
string package = "00220214002 10";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.DeviceNumber);
+ Assert.AreEqual(10, mid.DeviceNumber);
AssertEqualPackages(package, mid);
}
@@ -26,8 +26,20 @@ public void Mid0214ByteAllRevisions()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.DeviceNumber);
+ Assert.AreEqual(10, mid.DeviceNumber);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Pack")]
+ public void Mid0214PackAllRevisions()
+ {
+ string package = "00220214002 10";
+
+ AssertBuildAndParse(package, new Mid0214(2)
+ {
+ DeviceNumber = 10
+ });
+ }
}
}
diff --git a/src/MIDTesters.Core/IOInterface/TestMid0215.cs b/src/MIDTesters.Core/IOInterface/TestMid0215.cs
index 0707194d..ad58419b 100644
--- a/src/MIDTesters.Core/IOInterface/TestMid0215.cs
+++ b/src/MIDTesters.Core/IOInterface/TestMid0215.cs
@@ -1,6 +1,8 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenProtocolInterpreter.IOInterface;
+using System.Collections.Generic;
+using OpenProtocolInterpreter;
namespace MIDTesters.IOInterface
{
[TestClass]
@@ -14,9 +16,7 @@ public void Mid0215Revision1()
string package = "00920215001 010302001000210031004010012000300140010300110020003100410051006100700080";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.IODeviceId);
- Assert.IsNotNull(mid.Relays);
- Assert.IsNotNull(mid.DigitalInputs);
+ Assert.AreEqual(3, mid.IODeviceId);
Assert.AreEqual(8, mid.Relays.Count);
Assert.AreEqual(8, mid.DigitalInputs.Count);
@@ -31,9 +31,7 @@ public void Mid0215ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.IODeviceId);
- Assert.IsNotNull(mid.Relays);
- Assert.IsNotNull(mid.DigitalInputs);
+ Assert.AreEqual(3, mid.IODeviceId);
Assert.AreEqual(8, mid.Relays.Count);
Assert.AreEqual(8, mid.DigitalInputs.Count);
@@ -44,18 +42,15 @@ public void Mid0215ByteRevision1()
[TestCategory("Revision 2"), TestCategory("ASCII")]
public void Mid0215Revision2()
{
- string package = "00920215002 010302070300100021003100400051006000710407050011002000310041005100610070";
+ string package = @"00920215002 010302070300100021003100400051006000710407050011002000310041005100610070";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.IODeviceId);
- Assert.IsNotNull(mid.Relays);
- Assert.IsNotNull(mid.DigitalInputs);
+ Assert.AreEqual(3, mid.IODeviceId);
+ Assert.AreEqual(7, mid.NumberOfRelays);
Assert.AreEqual(7, mid.Relays.Count);
+ Assert.AreEqual(7, mid.NumberOfDigitalInputs);
Assert.AreEqual(7, mid.DigitalInputs.Count);
- Assert.IsNotNull(mid.NumberOfDigitalInputs);
- Assert.IsNotNull(mid.NumberOfRelays);
-
AssertEqualPackages(package, mid);
}
@@ -67,16 +62,81 @@ public void Mid0215ByteRevision2()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.IODeviceId);
- Assert.IsNotNull(mid.Relays);
- Assert.IsNotNull(mid.DigitalInputs);
+ Assert.AreEqual(3, mid.IODeviceId);
Assert.AreEqual(7, mid.Relays.Count);
Assert.AreEqual(7, mid.DigitalInputs.Count);
-
- Assert.IsNotNull(mid.NumberOfDigitalInputs);
- Assert.IsNotNull(mid.NumberOfRelays);
+ Assert.AreEqual(7, mid.NumberOfRelays);
+ Assert.AreEqual(7, mid.NumberOfDigitalInputs);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0215PackRevision1()
+ {
+ string package = "00920215001 010302001000210031004010012000300140010300110020003100410051006100700080";
+
+ AssertBuildAndParse(package, new Mid0215(1)
+ {
+ IODeviceId = 3,
+ Relays = new List()
+ {
+ new Relay(RelayNumber.Ok, false),
+ new Relay(RelayNumber.Nok, true),
+ new Relay(RelayNumber.Low, true),
+ new Relay(RelayNumber.High, false),
+ new Relay(RelayNumber.ExternalControlled8, true),
+ new Relay((RelayNumber)200, false),
+ new Relay(RelayNumber.TrackingDisabled, true),
+ new Relay((RelayNumber)400, true)
+ },
+ DigitalInputs = new List()
+ {
+ new DigitalInput(DigitalInputNumber.ResetBatch, true),
+ new DigitalInput(DigitalInputNumber.UnlockTool, false),
+ new DigitalInput(DigitalInputNumber.ToolDisableNo, true),
+ new DigitalInput(DigitalInputNumber.ToolDisableNc, true),
+ new DigitalInput(DigitalInputNumber.ToolTighteningDisable, true),
+ new DigitalInput(DigitalInputNumber.ToolLooseningDisable, true),
+ new DigitalInput(DigitalInputNumber.RemoteStartPulse, false),
+ new DigitalInput(DigitalInputNumber.RemoteStartCont, false)
+ }
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 2"), TestCategory("Pack")]
+ public void Mid0215PackRevision2()
+ {
+ string package = @"00920215002 010302070300100021003100400051006000710407050011002000310041005100610070";
+
+ AssertBuildAndParse(package, new Mid0215(2)
+ {
+ IODeviceId = 3,
+ NumberOfRelays = 7,
+ Relays = new List()
+ {
+ new Relay(RelayNumber.Ok, false),
+ new Relay(RelayNumber.Nok, true),
+ new Relay(RelayNumber.Low, true),
+ new Relay(RelayNumber.High, false),
+ new Relay(RelayNumber.LowTorque, true),
+ new Relay(RelayNumber.HighTorque, false),
+ new Relay(RelayNumber.LowAngle, true)
+ },
+ NumberOfDigitalInputs = 7,
+ DigitalInputs = new List()
+ {
+ new DigitalInput(DigitalInputNumber.ResetBatch, true),
+ new DigitalInput(DigitalInputNumber.UnlockTool, false),
+ new DigitalInput(DigitalInputNumber.ToolDisableNo, true),
+ new DigitalInput(DigitalInputNumber.ToolDisableNc, true),
+ new DigitalInput(DigitalInputNumber.ToolTighteningDisable, true),
+ new DigitalInput(DigitalInputNumber.ToolLooseningDisable, true),
+ new DigitalInput(DigitalInputNumber.RemoteStartPulse, false)
+ }
+ });
+ }
}
}
diff --git a/src/MIDTesters.Core/IOInterface/TestMid0216.cs b/src/MIDTesters.Core/IOInterface/TestMid0216.cs
index 083ac9fa..1f03819e 100644
--- a/src/MIDTesters.Core/IOInterface/TestMid0216.cs
+++ b/src/MIDTesters.Core/IOInterface/TestMid0216.cs
@@ -1,4 +1,5 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
+using OpenProtocolInterpreter;
using OpenProtocolInterpreter.IOInterface;
namespace MIDTesters.IOInterface
@@ -14,7 +15,7 @@ public void Mid0216Revision1()
string package = "00230216 1 026";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.RelayNumber);
+ Assert.AreEqual(RelayNumber.ToolRunning, mid.RelayNumber);
AssertEqualPackages(package, mid, true);
}
@@ -26,8 +27,20 @@ public void Mid0216ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.RelayNumber);
+ Assert.AreEqual(RelayNumber.ToolRunning, mid.RelayNumber);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0216PackRevision1()
+ {
+ string package = "00230216 1 026";
+
+ AssertBuildAndParse(package, new Mid0216(noAckFlag: true)
+ {
+ RelayNumber = RelayNumber.ToolRunning
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/IOInterface/TestMid0217.cs b/src/MIDTesters.Core/IOInterface/TestMid0217.cs
index 7859b1ce..c98ebf0b 100644
--- a/src/MIDTesters.Core/IOInterface/TestMid0217.cs
+++ b/src/MIDTesters.Core/IOInterface/TestMid0217.cs
@@ -1,4 +1,5 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
+using OpenProtocolInterpreter;
using OpenProtocolInterpreter.IOInterface;
namespace MIDTesters.IOInterface
@@ -14,8 +15,8 @@ public void Mid0217Revision1()
string package = "00280217 1 01026021";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.RelayNumber);
- Assert.IsNotNull(mid.RelayStatus);
+ Assert.AreEqual(RelayNumber.ToolRunning, mid.RelayNumber);
+ Assert.IsTrue(mid.RelayStatus);
AssertEqualPackages(package, mid, true);
}
@@ -27,9 +28,23 @@ public void Mid0217ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.RelayNumber);
- Assert.IsNotNull(mid.RelayStatus);
+ Assert.AreEqual(RelayNumber.ToolRunning, mid.RelayNumber);
+ Assert.IsTrue(mid.RelayStatus);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0217PackRevision1()
+ {
+ string package = "00280217 1 01026021";
+
+ AssertBuildAndParse(package, new Mid0217()
+ {
+ Header = { NoAckFlag = true },
+ RelayNumber = RelayNumber.ToolRunning,
+ RelayStatus = true
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/IOInterface/TestMid0218.cs b/src/MIDTesters.Core/IOInterface/TestMid0218.cs
index d3f8cb3c..5bbd5483 100644
--- a/src/MIDTesters.Core/IOInterface/TestMid0218.cs
+++ b/src/MIDTesters.Core/IOInterface/TestMid0218.cs
@@ -29,5 +29,14 @@ public void Mid0218ByteRevision1()
Assert.AreEqual(typeof(Mid0218), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0218PackRevision1()
+ {
+ string package = "00200218 ";
+
+ AssertBuildAndParse(package, new Mid0218(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/IOInterface/TestMid0219.cs b/src/MIDTesters.Core/IOInterface/TestMid0219.cs
index cc0af51d..ce8ca4d9 100644
--- a/src/MIDTesters.Core/IOInterface/TestMid0219.cs
+++ b/src/MIDTesters.Core/IOInterface/TestMid0219.cs
@@ -1,4 +1,5 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
+using OpenProtocolInterpreter;
using OpenProtocolInterpreter.IOInterface;
namespace MIDTesters.IOInterface
@@ -14,7 +15,7 @@ public void Mid0219Revision1()
string package = "00230219 102";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.RelayNumber);
+ Assert.AreEqual(RelayNumber.ExternalControlled10, mid.RelayNumber);
AssertEqualPackages(package, mid, true);
}
@@ -26,8 +27,20 @@ public void Mid0219ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.RelayNumber);
+ Assert.AreEqual(RelayNumber.ExternalControlled10, mid.RelayNumber);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0219PackRevision1()
+ {
+ string package = "00230219 102";
+
+ AssertBuildAndParse(package, new Mid0219()
+ {
+ RelayNumber = RelayNumber.ExternalControlled10
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/IOInterface/TestMid0220.cs b/src/MIDTesters.Core/IOInterface/TestMid0220.cs
index 964bc829..b3e70df5 100644
--- a/src/MIDTesters.Core/IOInterface/TestMid0220.cs
+++ b/src/MIDTesters.Core/IOInterface/TestMid0220.cs
@@ -1,4 +1,5 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
+using OpenProtocolInterpreter;
using OpenProtocolInterpreter.IOInterface;
namespace MIDTesters.IOInterface
@@ -14,7 +15,7 @@ public void Mid0220Revision1()
string package = "00230220 120";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.DigitalInputNumber);
+ Assert.AreEqual(DigitalInputNumber.ForcedCcwOnce, mid.DigitalInputNumber);
AssertEqualPackages(package, mid, true);
}
@@ -26,8 +27,20 @@ public void Mid0220ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.DigitalInputNumber);
+ Assert.AreEqual(DigitalInputNumber.ForcedCcwOnce, mid.DigitalInputNumber);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0220PackRevision1()
+ {
+ string package = "00230220 120";
+
+ AssertBuildAndParse(package, new Mid0220()
+ {
+ DigitalInputNumber = DigitalInputNumber.ForcedCcwOnce
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/IOInterface/TestMid0221.cs b/src/MIDTesters.Core/IOInterface/TestMid0221.cs
index 23d0ffab..0d15ec48 100644
--- a/src/MIDTesters.Core/IOInterface/TestMid0221.cs
+++ b/src/MIDTesters.Core/IOInterface/TestMid0221.cs
@@ -1,4 +1,5 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
+using OpenProtocolInterpreter;
using OpenProtocolInterpreter.IOInterface;
namespace MIDTesters.IOInterface
@@ -14,8 +15,8 @@ public void Mid0221Revision1()
string package = "00280221 01120021";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.DigitalInputNumber);
- Assert.IsNotNull(mid.DigitalInputStatus);
+ Assert.AreEqual(DigitalInputNumber.ForcedCcwOnce, mid.DigitalInputNumber);
+ Assert.IsTrue(mid.DigitalInputStatus);
AssertEqualPackages(package, mid, true);
}
@@ -27,9 +28,22 @@ public void Mid0221ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.DigitalInputNumber);
- Assert.IsNotNull(mid.DigitalInputStatus);
+ Assert.AreEqual(DigitalInputNumber.ForcedCcwOnce, mid.DigitalInputNumber);
+ Assert.IsTrue(mid.DigitalInputStatus);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0221PackRevision1()
+ {
+ string package = "00280221 01120021";
+
+ AssertBuildAndParse(package, new Mid0221()
+ {
+ DigitalInputNumber = DigitalInputNumber.ForcedCcwOnce,
+ DigitalInputStatus = true
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/IOInterface/TestMid0222.cs b/src/MIDTesters.Core/IOInterface/TestMid0222.cs
index c9d94aad..7ea1f623 100644
--- a/src/MIDTesters.Core/IOInterface/TestMid0222.cs
+++ b/src/MIDTesters.Core/IOInterface/TestMid0222.cs
@@ -29,5 +29,14 @@ public void Mid0222ByteRevision1()
Assert.AreEqual(typeof(Mid0222), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0222PackRevision1()
+ {
+ string package = "00200222 ";
+
+ AssertBuildAndParse(package, new Mid0222(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/IOInterface/TestMid0223.cs b/src/MIDTesters.Core/IOInterface/TestMid0223.cs
index fb5fa02a..2f1da974 100644
--- a/src/MIDTesters.Core/IOInterface/TestMid0223.cs
+++ b/src/MIDTesters.Core/IOInterface/TestMid0223.cs
@@ -1,4 +1,5 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
+using OpenProtocolInterpreter;
using OpenProtocolInterpreter.IOInterface;
namespace MIDTesters.IOInterface
@@ -14,7 +15,7 @@ public void Mid0223Revision1()
string package = "00230223 066";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.DigitalInputNumber);
+ Assert.AreEqual(DigitalInputNumber.IdCard, mid.DigitalInputNumber);
AssertEqualPackages(package, mid, true);
}
@@ -26,8 +27,20 @@ public void Mid0223ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.DigitalInputNumber);
+ Assert.AreEqual(DigitalInputNumber.IdCard, mid.DigitalInputNumber);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0223PackRevision1()
+ {
+ string package = "00230223 066";
+
+ AssertBuildAndParse(package, new Mid0223()
+ {
+ DigitalInputNumber = DigitalInputNumber.IdCard
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/IOInterface/TestMid0224.cs b/src/MIDTesters.Core/IOInterface/TestMid0224.cs
index 2e8434f6..17d62ed3 100644
--- a/src/MIDTesters.Core/IOInterface/TestMid0224.cs
+++ b/src/MIDTesters.Core/IOInterface/TestMid0224.cs
@@ -1,4 +1,5 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
+using OpenProtocolInterpreter;
using OpenProtocolInterpreter.IOInterface;
namespace MIDTesters.IOInterface
@@ -14,7 +15,7 @@ public void Mid0224Revision1()
string package = "00230224 065";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.DigitalInputNumber);
+ Assert.AreEqual(DigitalInputNumber.ClickWrench4, mid.DigitalInputNumber);
AssertEqualPackages(package, mid, true);
}
@@ -26,8 +27,20 @@ public void Mid0224ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.DigitalInputNumber);
+ Assert.AreEqual(DigitalInputNumber.ClickWrench4, mid.DigitalInputNumber);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0224PackRevision1()
+ {
+ string package = "00230224 065";
+
+ AssertBuildAndParse(package, new Mid0224()
+ {
+ DigitalInputNumber = DigitalInputNumber.ClickWrench4
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/IOInterface/TestMid0225.cs b/src/MIDTesters.Core/IOInterface/TestMid0225.cs
index 7bb705aa..b2a98909 100644
--- a/src/MIDTesters.Core/IOInterface/TestMid0225.cs
+++ b/src/MIDTesters.Core/IOInterface/TestMid0225.cs
@@ -1,4 +1,5 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
+using OpenProtocolInterpreter;
using OpenProtocolInterpreter.IOInterface;
namespace MIDTesters.IOInterface
@@ -14,7 +15,7 @@ public void Mid0225Revision1()
string package = "00230225 055";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.DigitalInputNumber);
+ Assert.AreEqual(DigitalInputNumber.EndOfCycle, mid.DigitalInputNumber);
AssertEqualPackages(package, mid, true);
}
@@ -26,8 +27,20 @@ public void Mid0225ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.DigitalInputNumber);
+ Assert.AreEqual(DigitalInputNumber.EndOfCycle, mid.DigitalInputNumber);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0225PackRevision1()
+ {
+ string package = "00230225 055";
+
+ AssertBuildAndParse(package, new Mid0225()
+ {
+ DigitalInputNumber = DigitalInputNumber.EndOfCycle
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/Advanced/TestMid0120.cs b/src/MIDTesters.Core/Job/Advanced/TestMid0120.cs
index 18f00627..37f0b187 100644
--- a/src/MIDTesters.Core/Job/Advanced/TestMid0120.cs
+++ b/src/MIDTesters.Core/Job/Advanced/TestMid0120.cs
@@ -31,5 +31,14 @@ public void Mid0120ByteRevision1()
Assert.IsTrue(mid.Header.NoAckFlag);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0120PackRevision1()
+ {
+ string package = "00200120 1 ";
+
+ AssertBuildAndParse(package, new Mid0120(noAckFlag: true), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/Advanced/TestMid0121.cs b/src/MIDTesters.Core/Job/Advanced/TestMid0121.cs
index 557e6bed..d3075c33 100644
--- a/src/MIDTesters.Core/Job/Advanced/TestMid0121.cs
+++ b/src/MIDTesters.Core/Job/Advanced/TestMid0121.cs
@@ -31,5 +31,17 @@ public void Mid0121ByteRevision1()
Assert.IsTrue(mid.Header.NoAckFlag);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0121PackRevision1()
+ {
+ string package = "00200121 1 ";
+
+ AssertBuildAndParse(package, new Mid0121()
+ {
+ Header = { NoAckFlag = true }
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/Advanced/TestMid0122.cs b/src/MIDTesters.Core/Job/Advanced/TestMid0122.cs
index 6acc0c4b..c45f2973 100644
--- a/src/MIDTesters.Core/Job/Advanced/TestMid0122.cs
+++ b/src/MIDTesters.Core/Job/Advanced/TestMid0122.cs
@@ -31,5 +31,17 @@ public void Mid0122ByteRevision1()
Assert.IsTrue(mid.Header.NoAckFlag);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0122PackRevision1()
+ {
+ string package = "00200122 1 ";
+
+ AssertBuildAndParse(package, new Mid0122()
+ {
+ Header = { NoAckFlag = true }
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/Advanced/TestMid0123.cs b/src/MIDTesters.Core/Job/Advanced/TestMid0123.cs
index d2e8d8e6..fbbb06ee 100644
--- a/src/MIDTesters.Core/Job/Advanced/TestMid0123.cs
+++ b/src/MIDTesters.Core/Job/Advanced/TestMid0123.cs
@@ -31,5 +31,17 @@ public void Mid0123ByteRevision1()
Assert.IsTrue(mid.Header.NoAckFlag);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0123PackRevision1()
+ {
+ string package = "00200123 1 ";
+
+ AssertBuildAndParse(package, new Mid0123()
+ {
+ Header = { NoAckFlag = true }
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/Advanced/TestMid0124.cs b/src/MIDTesters.Core/Job/Advanced/TestMid0124.cs
index fdc9e38e..5463beaa 100644
--- a/src/MIDTesters.Core/Job/Advanced/TestMid0124.cs
+++ b/src/MIDTesters.Core/Job/Advanced/TestMid0124.cs
@@ -31,5 +31,17 @@ public void Mid0124ByteRevision1()
Assert.IsTrue(mid.Header.NoAckFlag);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0124PackRevision1()
+ {
+ string package = "00200124 1 ";
+
+ AssertBuildAndParse(package, new Mid0124()
+ {
+ Header = { NoAckFlag = true }
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/Advanced/TestMid0125.cs b/src/MIDTesters.Core/Job/Advanced/TestMid0125.cs
index d4cdfe84..4ba4508e 100644
--- a/src/MIDTesters.Core/Job/Advanced/TestMid0125.cs
+++ b/src/MIDTesters.Core/Job/Advanced/TestMid0125.cs
@@ -29,5 +29,14 @@ public void Mid0125ByteRevision1()
Assert.AreEqual(typeof(Mid0125), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0125PackRevision1()
+ {
+ string package = "00200125 ";
+
+ AssertBuildAndParse(package, new Mid0125(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/Advanced/TestMid0126.cs b/src/MIDTesters.Core/Job/Advanced/TestMid0126.cs
index fbbc665a..f2417805 100644
--- a/src/MIDTesters.Core/Job/Advanced/TestMid0126.cs
+++ b/src/MIDTesters.Core/Job/Advanced/TestMid0126.cs
@@ -29,5 +29,14 @@ public void Mid0126ByteRevision1()
Assert.AreEqual(typeof(Mid0126), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0126PackRevision1()
+ {
+ string package = "00200126 ";
+
+ AssertBuildAndParse(package, new Mid0126(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/Advanced/TestMid0127.cs b/src/MIDTesters.Core/Job/Advanced/TestMid0127.cs
index 0a61ed2b..1aa125b6 100644
--- a/src/MIDTesters.Core/Job/Advanced/TestMid0127.cs
+++ b/src/MIDTesters.Core/Job/Advanced/TestMid0127.cs
@@ -29,5 +29,14 @@ public void Mid0127ByteRevision1()
Assert.AreEqual(typeof(Mid0127), mid.GetType());
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0127PackRevision1()
+ {
+ string package = "00200127001 ";
+
+ AssertBuildAndParse(package, new Mid0127());
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/Advanced/TestMid0128.cs b/src/MIDTesters.Core/Job/Advanced/TestMid0128.cs
index 22426340..2dcce0ce 100644
--- a/src/MIDTesters.Core/Job/Advanced/TestMid0128.cs
+++ b/src/MIDTesters.Core/Job/Advanced/TestMid0128.cs
@@ -29,5 +29,14 @@ public void Mid0128ByteRevision1()
Assert.AreEqual(typeof(Mid0128), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0128PackRevision1()
+ {
+ string package = "00200128 ";
+
+ AssertBuildAndParse(package, new Mid0128(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/Advanced/TestMid0129.cs b/src/MIDTesters.Core/Job/Advanced/TestMid0129.cs
index 6a9e84ea..26aaed32 100644
--- a/src/MIDTesters.Core/Job/Advanced/TestMid0129.cs
+++ b/src/MIDTesters.Core/Job/Advanced/TestMid0129.cs
@@ -37,8 +37,8 @@ public void Mid0129Revision2()
string package = "00290129002 010302123";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.ChannelId);
- Assert.IsNotNull(mid.ParameterSetId);
+ Assert.AreEqual(3, mid.ChannelId);
+ Assert.AreEqual(123, mid.ParameterSetId);
AssertEqualPackages(package, mid);
}
@@ -50,9 +50,31 @@ public void Mid0129ByteRevision2()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.ChannelId);
- Assert.IsNotNull(mid.ParameterSetId);
+ Assert.AreEqual(3, mid.ChannelId);
+ Assert.AreEqual(123, mid.ParameterSetId);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0129PackRevision1()
+ {
+ string package = "00200129 ";
+
+ AssertBuildAndParse(package, new Mid0129(1), true);
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 2"), TestCategory("Pack")]
+ public void Mid0129PackRevision2()
+ {
+ string package = "00290129002 010302123";
+
+ AssertBuildAndParse(package, new Mid0129(2)
+ {
+ ChannelId = 3,
+ ParameterSetId = 123
+ });
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/Advanced/TestMid0130.cs b/src/MIDTesters.Core/Job/Advanced/TestMid0130.cs
index c6788966..630696ae 100644
--- a/src/MIDTesters.Core/Job/Advanced/TestMid0130.cs
+++ b/src/MIDTesters.Core/Job/Advanced/TestMid0130.cs
@@ -14,7 +14,7 @@ public void Mid0130Revision1()
string package = "00210130 1";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.JobOffStatus);
+ Assert.IsTrue(mid.JobOffStatus);
AssertEqualPackages(package, mid, true);
}
@@ -26,8 +26,20 @@ public void Mid0130ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.JobOffStatus);
+ Assert.IsTrue(mid.JobOffStatus);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0130PackRevision1()
+ {
+ string package = "00210130 1";
+
+ AssertBuildAndParse(package, new Mid0130()
+ {
+ JobOffStatus = true
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/Advanced/TestMid0131.cs b/src/MIDTesters.Core/Job/Advanced/TestMid0131.cs
index c345aa71..066f1584 100644
--- a/src/MIDTesters.Core/Job/Advanced/TestMid0131.cs
+++ b/src/MIDTesters.Core/Job/Advanced/TestMid0131.cs
@@ -29,5 +29,14 @@ public void Mid0131ByteRevision1()
Assert.AreEqual(typeof(Mid0131), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0131PackRevision1()
+ {
+ string package = "00200131 ";
+
+ AssertBuildAndParse(package, new Mid0131(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/Advanced/TestMid0132.cs b/src/MIDTesters.Core/Job/Advanced/TestMid0132.cs
index c7d0798f..1196999d 100644
--- a/src/MIDTesters.Core/Job/Advanced/TestMid0132.cs
+++ b/src/MIDTesters.Core/Job/Advanced/TestMid0132.cs
@@ -29,5 +29,14 @@ public void Mid0132ByteRevision1()
Assert.AreEqual(typeof(Mid0132), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0132PackRevision1()
+ {
+ string package = "00200132 ";
+
+ AssertBuildAndParse(package, new Mid0132(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/Advanced/TestMid0133.cs b/src/MIDTesters.Core/Job/Advanced/TestMid0133.cs
index bd48c2d6..5853cb38 100644
--- a/src/MIDTesters.Core/Job/Advanced/TestMid0133.cs
+++ b/src/MIDTesters.Core/Job/Advanced/TestMid0133.cs
@@ -29,5 +29,14 @@ public void Mid0133ByteRevision1()
Assert.AreEqual(typeof(Mid0133), mid.GetType());
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0133PackRevision1()
+ {
+ string package = "00200133 ";
+
+ AssertBuildAndParse(package, new Mid0133(), true);
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/Advanced/TestMid0140.cs b/src/MIDTesters.Core/Job/Advanced/TestMid0140.cs
index 42ba4dec..f57022bc 100644
--- a/src/MIDTesters.Core/Job/Advanced/TestMid0140.cs
+++ b/src/MIDTesters.Core/Job/Advanced/TestMid0140.cs
@@ -3,7 +3,8 @@
using OpenProtocolInterpreter.Job.Advanced;
using System.Threading;
-namespace MIDTesters.Core.Job.Advanced
+using System.Collections.Generic;
+namespace MIDTesters.Job.Advanced
{
[TestClass]
[TestCategory("Job"), TestCategory("Advanced Job")]
@@ -17,20 +18,19 @@ public void Mid0140Revision1()
var mid = _midInterpreter.Parse(package);
Assert.AreEqual(typeof(Mid0140), mid.GetType());
- Assert.AreNotEqual(0, mid.JobId);
- Assert.AreNotEqual(string.Empty, mid.JobName);
- Assert.AreNotEqual(0, mid.NumberOfParameterSets);
- Assert.IsNotNull(mid.JobList);
- Assert.AreNotEqual(0, mid.JobList.Count);
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual("Job 1", mid.JobName.TrimEnd());
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.JobList.Count);
Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
Assert.IsTrue(mid.LockAtJobDone);
Assert.AreEqual(ToolLoosening.EnableOnlyOnNokTightenings, mid.ToolLoosening);
Assert.IsTrue(mid.RepeatJob);
Assert.AreEqual(BatchMode.BothOkAndNok, mid.BatchMode);
Assert.IsTrue(mid.DecrementBatchAtOkLoosening);
- Assert.AreNotEqual(0, mid.MaxTimeForFirstTightening);
- Assert.AreNotEqual(0, mid.MaxTimeToCompleteJob);
- Assert.AreNotEqual(0, mid.DisplayResultAtAutoSelect);
+ Assert.AreEqual(100, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(10000, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(90, mid.DisplayResultAtAutoSelect);
Assert.IsTrue(mid.UsingLineControl);
Assert.AreEqual(IdentifierPart.Other, mid.IdentifierResultPart);
Assert.IsTrue(mid.ResultOfNonTightenings);
@@ -48,20 +48,19 @@ public void Mid0140ByteRevision1()
var mid = _midInterpreter.Parse(bytes);
Assert.AreEqual(typeof(Mid0140), mid.GetType());
- Assert.AreNotEqual(0, mid.JobId);
- Assert.AreNotEqual(string.Empty, mid.JobName);
- Assert.AreNotEqual(0, mid.NumberOfParameterSets);
- Assert.IsNotNull(mid.JobList);
- Assert.AreNotEqual(0, mid.JobList.Count);
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual("Job 1", mid.JobName.TrimEnd());
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.JobList.Count);
Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
Assert.IsTrue(mid.LockAtJobDone);
Assert.AreEqual(ToolLoosening.EnableOnlyOnNokTightenings, mid.ToolLoosening);
Assert.IsTrue(mid.RepeatJob);
Assert.AreEqual(BatchMode.BothOkAndNok, mid.BatchMode);
Assert.IsTrue(mid.DecrementBatchAtOkLoosening);
- Assert.AreNotEqual(0, mid.MaxTimeForFirstTightening);
- Assert.AreNotEqual(0, mid.MaxTimeToCompleteJob);
- Assert.AreNotEqual(0, mid.DisplayResultAtAutoSelect);
+ Assert.AreEqual(100, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(10000, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(90, mid.DisplayResultAtAutoSelect);
Assert.IsTrue(mid.UsingLineControl);
Assert.AreEqual(IdentifierPart.Other, mid.IdentifierResultPart);
Assert.IsTrue(mid.ResultOfNonTightenings);
@@ -76,28 +75,27 @@ public void Mid0140Revision2()
{
string package = "02250140002 01000102Job 1 03020415:045:0:22:02:10:0107:Job Action 1 :01;15:045:0:12:12:13:0407:Job Action 2 :02;05106107208109110111112010013100001400901511611711811912000120";
var mid = _midInterpreter.Parse(package);
-
+
Assert.AreEqual(typeof(Mid0140), mid.GetType());
- Assert.AreNotEqual(0, mid.JobId);
- Assert.AreNotEqual(string.Empty, mid.JobName);
- Assert.AreNotEqual(0, mid.NumberOfParameterSets);
- Assert.IsNotNull(mid.JobList);
- Assert.AreNotEqual(0, mid.JobList.Count);
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual("Job 1", mid.JobName.TrimEnd());
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.JobList.Count);
Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
Assert.IsTrue(mid.LockAtJobDone);
Assert.AreEqual(ToolLoosening.EnableOnlyOnNokTightenings, mid.ToolLoosening);
Assert.IsTrue(mid.RepeatJob);
Assert.AreEqual(BatchMode.BothOkAndNok, mid.BatchMode);
Assert.IsTrue(mid.DecrementBatchAtOkLoosening);
- Assert.AreNotEqual(0, mid.MaxTimeForFirstTightening);
- Assert.AreNotEqual(0, mid.MaxTimeToCompleteJob);
- Assert.AreNotEqual(0, mid.DisplayResultAtAutoSelect);
+ Assert.AreEqual(100, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(10000, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(90, mid.DisplayResultAtAutoSelect);
Assert.IsTrue(mid.UsingLineControl);
Assert.AreEqual(IdentifierPart.Other, mid.IdentifierResultPart);
Assert.IsTrue(mid.ResultOfNonTightenings);
Assert.IsTrue(mid.ResetAllIdentifiersAtJobDone);
Assert.AreEqual(Reserved.G, mid.Reserved);
- Assert.AreNotEqual(0, mid.JobSequenceNumber);
+ Assert.AreEqual(120, mid.JobSequenceNumber);
AssertEqualPackages(package, mid);
}
@@ -110,9 +108,9 @@ public void Mid0140ByteRevision2()
var mid = _midInterpreter.Parse(bytes);
Assert.AreEqual(typeof(Mid0140), mid.GetType());
- Assert.AreNotEqual(0, mid.JobId);
- Assert.AreNotEqual(string.Empty, mid.JobName);
- Assert.AreNotEqual(0, mid.NumberOfParameterSets);
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual("Job 1", mid.JobName.TrimEnd());
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
AssertEqualPackages(bytes, mid);
}
@@ -124,23 +122,22 @@ public void Mid0140Revision3()
var mid = _midInterpreter.Parse(package);
Assert.AreEqual(typeof(Mid0140), mid.GetType());
- Assert.AreNotEqual(0, mid.JobId);
- Assert.AreNotEqual(string.Empty, mid.JobName);
- Assert.AreNotEqual(0, mid.NumberOfParameterSets);
- Assert.IsNotNull(mid.JobList);
- Assert.AreNotEqual(0, mid.JobList.Count);
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual("Job 1", mid.JobName.TrimEnd());
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.JobList.Count);
Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
Assert.IsTrue(mid.LockAtJobDone);
Assert.IsTrue(mid.RepeatJob);
- Assert.AreNotEqual(0, mid.MaxTimeForFirstTightening);
- Assert.AreNotEqual(0, mid.MaxTimeToCompleteJob);
- Assert.AreNotEqual(0, mid.DisplayResultAtAutoSelect);
+ Assert.AreEqual(100, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(900, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(90, mid.DisplayResultAtAutoSelect);
Assert.IsTrue(mid.UsingLineControl);
Assert.AreEqual(IdentifierPart.Other, mid.IdentifierResultPart);
Assert.IsTrue(mid.ResultOfNonTightenings);
Assert.IsTrue(mid.ResetAllIdentifiersAtJobDone);
Assert.AreEqual(Reserved.G, mid.Reserved);
- Assert.AreNotEqual(0, mid.JobSequenceNumber);
+ Assert.AreEqual(5000, mid.JobSequenceNumber);
AssertEqualPackages(package, mid);
}
@@ -153,23 +150,22 @@ public void Mid0140ByteRevision3()
var mid = _midInterpreter.Parse(bytes);
Assert.AreEqual(typeof(Mid0140), mid.GetType());
- Assert.AreNotEqual(0, mid.JobId);
- Assert.AreNotEqual(string.Empty, mid.JobName);
- Assert.AreNotEqual(0, mid.NumberOfParameterSets);
- Assert.IsNotNull(mid.JobList);
- Assert.AreNotEqual(0, mid.JobList.Count);
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual("Job 1", mid.JobName.TrimEnd());
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.JobList.Count);
Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
Assert.IsTrue(mid.LockAtJobDone);
Assert.IsTrue(mid.RepeatJob);
- Assert.AreNotEqual(0, mid.MaxTimeForFirstTightening);
- Assert.AreNotEqual(0, mid.MaxTimeToCompleteJob);
- Assert.AreNotEqual(0, mid.DisplayResultAtAutoSelect);
+ Assert.AreEqual(100, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(900, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(90, mid.DisplayResultAtAutoSelect);
Assert.IsTrue(mid.UsingLineControl);
Assert.AreEqual(IdentifierPart.Other, mid.IdentifierResultPart);
Assert.IsTrue(mid.ResultOfNonTightenings);
Assert.IsTrue(mid.ResetAllIdentifiersAtJobDone);
Assert.AreEqual(Reserved.G, mid.Reserved);
- Assert.AreNotEqual(0, mid.JobSequenceNumber);
+ Assert.AreEqual(5000, mid.JobSequenceNumber);
AssertEqualPackages(bytes, mid);
}
@@ -181,23 +177,22 @@ public void Mid0140Revision4()
var mid = _midInterpreter.Parse(package);
Assert.AreEqual(typeof(Mid0140), mid.GetType());
- Assert.AreNotEqual(0, mid.JobId);
- Assert.AreNotEqual(string.Empty, mid.JobName);
- Assert.AreNotEqual(0, mid.NumberOfParameterSets);
- Assert.IsNotNull(mid.JobList);
- Assert.AreNotEqual(0, mid.JobList.Count);
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual("Job 1", mid.JobName.TrimEnd());
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.JobList.Count);
Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
Assert.IsTrue(mid.LockAtJobDone);
Assert.IsTrue(mid.RepeatJob);
- Assert.AreNotEqual(0, mid.MaxTimeForFirstTightening);
- Assert.AreNotEqual(0, mid.MaxTimeToCompleteJob);
- Assert.AreNotEqual(0, mid.DisplayResultAtAutoSelect);
+ Assert.AreEqual(100, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(900, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(90, mid.DisplayResultAtAutoSelect);
Assert.IsTrue(mid.UsingLineControl);
Assert.AreEqual(IdentifierPart.Other, mid.IdentifierResultPart);
Assert.IsTrue(mid.ResultOfNonTightenings);
Assert.IsTrue(mid.ResetAllIdentifiersAtJobDone);
Assert.AreEqual(Reserved.G, mid.Reserved);
- Assert.AreNotEqual(0, mid.JobSequenceNumber);
+ Assert.AreEqual(5000, mid.JobSequenceNumber);
AssertEqualPackages(package, mid);
}
@@ -210,24 +205,220 @@ public void Mid0140ByteRevision4()
var mid = _midInterpreter.Parse(bytes);
Assert.AreEqual(typeof(Mid0140), mid.GetType());
- Assert.AreNotEqual(0, mid.JobId);
- Assert.AreNotEqual(string.Empty, mid.JobName);
- Assert.AreNotEqual(0, mid.NumberOfParameterSets);
- Assert.IsNotNull(mid.JobList);
- Assert.AreNotEqual(0, mid.JobList.Count);
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual("Job 1", mid.JobName.TrimEnd());
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.JobList.Count);
+ Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
+ Assert.IsTrue(mid.LockAtJobDone);
+ Assert.IsTrue(mid.RepeatJob);
+ Assert.AreEqual(100, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(900, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(90, mid.DisplayResultAtAutoSelect);
+ Assert.IsTrue(mid.UsingLineControl);
+ Assert.AreEqual(IdentifierPart.Other, mid.IdentifierResultPart);
+ Assert.IsTrue(mid.ResultOfNonTightenings);
+ Assert.IsTrue(mid.ResetAllIdentifiersAtJobDone);
+ Assert.AreEqual(Reserved.G, mid.Reserved);
+ Assert.AreEqual(5000, mid.JobSequenceNumber);
+ AssertEqualPackages(bytes, mid);
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 999"), TestCategory("ASCII")]
+ public void Mid0140Revision999()
+ {
+ string package = "01500140999 01000102Job 1 03020414:045:0:22:02:10;01:013:1:10:01:05;0510610720810911011111201001310000140090151161171181191";
+ var mid = _midInterpreter.Parse(package);
+
+ Assert.AreEqual(typeof(Mid0140), mid.GetType());
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual("Job 1", mid.JobName.TrimEnd());
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.JobList.Count);
+ Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
+ Assert.IsTrue(mid.LockAtJobDone);
+ Assert.AreEqual(ToolLoosening.EnableOnlyOnNokTightenings, mid.ToolLoosening);
+ Assert.IsTrue(mid.RepeatJob);
+ Assert.AreEqual(BatchMode.BothOkAndNok, mid.BatchMode);
+ Assert.IsTrue(mid.DecrementBatchAtOkLoosening);
+ Assert.AreEqual(100, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(10000, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(90, mid.DisplayResultAtAutoSelect);
+ Assert.IsTrue(mid.UsingLineControl);
+ Assert.AreEqual(IdentifierPart.Other, mid.IdentifierResultPart);
+ Assert.IsTrue(mid.ResultOfNonTightenings);
+ Assert.IsTrue(mid.ResetAllIdentifiersAtJobDone);
+ Assert.AreEqual(Reserved.G, mid.Reserved);
+ AssertEqualPackages(package, mid);
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 999"), TestCategory("ByteArray")]
+ public void Mid0140ByteRevision999()
+ {
+ string package = "01500140999 01000102Job 1 03020414:045:0:22:02:10;01:013:1:10:01:05;0510610720810911011111201001310000140090151161171181191";
+ byte[] bytes = GetAsciiBytes(package);
+ var mid = _midInterpreter.Parse(bytes);
+
+ Assert.AreEqual(typeof(Mid0140), mid.GetType());
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual("Job 1", mid.JobName.TrimEnd());
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.JobList.Count);
Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
Assert.IsTrue(mid.LockAtJobDone);
+ Assert.AreEqual(ToolLoosening.EnableOnlyOnNokTightenings, mid.ToolLoosening);
Assert.IsTrue(mid.RepeatJob);
- Assert.AreNotEqual(0, mid.MaxTimeForFirstTightening);
- Assert.AreNotEqual(0, mid.MaxTimeToCompleteJob);
- Assert.AreNotEqual(0, mid.DisplayResultAtAutoSelect);
+ Assert.AreEqual(BatchMode.BothOkAndNok, mid.BatchMode);
+ Assert.IsTrue(mid.DecrementBatchAtOkLoosening);
+ Assert.AreEqual(100, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(10000, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(90, mid.DisplayResultAtAutoSelect);
Assert.IsTrue(mid.UsingLineControl);
Assert.AreEqual(IdentifierPart.Other, mid.IdentifierResultPart);
Assert.IsTrue(mid.ResultOfNonTightenings);
Assert.IsTrue(mid.ResetAllIdentifiersAtJobDone);
Assert.AreEqual(Reserved.G, mid.Reserved);
- Assert.AreNotEqual(0, mid.JobSequenceNumber);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0140PackRevision1()
+ {
+ string package = "01440140 01000102Job 1 03020414:045:0:22:02;01:013:1:10:01;0510610720810911011111201001310000140090151161171181191";
+
+ AssertBuildAndParse(package, BuildMid0140(1, new List()
+ {
+ new AdvancedJob() { ChannelId = 14, ProgramId = 45, AutoSelect = AutoSelect.None, BatchSize = 22, MaxCoherentNok = 2 },
+ new AdvancedJob() { ChannelId = 1, ProgramId = 13, AutoSelect = AutoSelect.AutoNextChange, BatchSize = 10, MaxCoherentNok = 1 }
+ }), true);
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 2"), TestCategory("Pack")]
+ public void Mid0140PackRevision2()
+ {
+ string package = "02250140002 01000102Job 1 03020415:045:0:22:02:10:0107:Job Action 1 :01;15:045:0:12:12:13:0407:Job Action 2 :02;05106107208109110111112010013100001400901511611711811912000120";
+
+ var mid = BuildMid0140(2, new List()
+ {
+ new AdvancedJob() { ChannelId = 15, ProgramId = 45, AutoSelect = AutoSelect.None, BatchSize = 22, MaxCoherentNok = 2, BatchCounter = 10, IdentifierNumber = 107, JobStepName = "Job Action 1", JobStepType = 1 },
+ new AdvancedJob() { ChannelId = 15, ProgramId = 45, AutoSelect = AutoSelect.None, BatchSize = 12, MaxCoherentNok = 12, BatchCounter = 13, IdentifierNumber = 407, JobStepName = "Job Action 2", JobStepType = 2 }
+ });
+ mid.JobSequenceNumber = 120;
+
+ AssertBuildAndParse(package, mid);
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 3"), TestCategory("Pack")]
+ public void Mid0140PackRevision3()
+ {
+ string package = "02350140003 01000102Job 1 03020415:045:10:22:02:10:0107:Job Action 1 :01:2:1:1:2:2;15:041:10:12:12:13:0407:Job Action 2 :02:2:1:1:2:2;05106107108010009009001000901111211311411511605000";
+
+ AssertBuildAndParse(package, BuildMid0140Revision3Onwards(3, new List()
+ {
+ BuildAdvancedJobRevision3(programId: 45, batchSize: 22, maxCoherentNok: 2, batchCounter: 10, identifierNumber: 107, jobStepName: "Job Action 1", jobStepType: 1),
+ BuildAdvancedJobRevision3(programId: 41, batchSize: 12, maxCoherentNok: 12, batchCounter: 13, identifierNumber: 407, jobStepName: "Job Action 2", jobStepType: 2)
+ }));
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 4"), TestCategory("Pack")]
+ public void Mid0140PackRevision4()
+ {
+ string package = "02430140004 01000102Job 1 03020415:045:10:0022:02:0010:0107:Job Action 1 :01:2:1:1:2:2;15:041:10:0016:12:0013:0407:Job Action 2 :02:2:1:1:2:2;05106107108010009009001000901111211311411511605000";
+
+ AssertBuildAndParse(package, BuildMid0140Revision3Onwards(4, new List()
+ {
+ BuildAdvancedJobRevision3(programId: 45, batchSize: 22, maxCoherentNok: 2, batchCounter: 10, identifierNumber: 107, jobStepName: "Job Action 1", jobStepType: 1),
+ BuildAdvancedJobRevision3(programId: 41, batchSize: 16, maxCoherentNok: 12, batchCounter: 13, identifierNumber: 407, jobStepName: "Job Action 2", jobStepType: 2)
+ }));
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 999"), TestCategory("Pack")]
+ public void Mid0140PackRevision999()
+ {
+ string package = "01500140999 01000102Job 1 03020414:045:0:22:02:10;01:013:1:10:01:05;0510610720810911011111201001310000140090151161171181191";
+
+ AssertBuildAndParse(package, BuildMid0140(999, new List()
+ {
+ new AdvancedJob() { ChannelId = 14, ProgramId = 45, AutoSelect = AutoSelect.None, BatchSize = 22, MaxCoherentNok = 2, BatchCounter = 10 },
+ new AdvancedJob() { ChannelId = 1, ProgramId = 13, AutoSelect = AutoSelect.AutoNextChange, BatchSize = 10, MaxCoherentNok = 1, BatchCounter = 5 }
+ }));
+ }
+
+ private static Mid0140 BuildMid0140(int revision, List jobList)
+ {
+ return new Mid0140(revision)
+ {
+ JobId = 1,
+ JobName = "Job 1",
+ NumberOfParameterSets = 2,
+ JobList = jobList,
+ ForcedOrder = ForcedOrder.ForcedOrder,
+ LockAtJobDone = true,
+ ToolLoosening = ToolLoosening.EnableOnlyOnNokTightenings,
+ RepeatJob = true,
+ BatchMode = BatchMode.BothOkAndNok,
+ BatchStatusAtIncrement = true,
+ DecrementBatchAtOkLoosening = true,
+ MaxTimeForFirstTightening = 100,
+ MaxTimeToCompleteJob = 10000,
+ DisplayResultAtAutoSelect = 90,
+ UsingLineControl = true,
+ IdentifierResultPart = IdentifierPart.Other,
+ ResultOfNonTightenings = true,
+ ResetAllIdentifiersAtJobDone = true,
+ Reserved = Reserved.G
+ };
+ }
+
+ private static Mid0140 BuildMid0140Revision3Onwards(int revision, List jobList)
+ {
+ return new Mid0140(revision)
+ {
+ JobId = 1,
+ JobName = "Job 1",
+ NumberOfParameterSets = 2,
+ JobList = jobList,
+ ForcedOrder = ForcedOrder.ForcedOrder,
+ LockAtJobDone = true,
+ RepeatJob = true,
+ MaxTimeForFirstTightening = 100,
+ MaxTimeToCompleteJob = 900,
+ DisplayResultAtAutoSelect = 90,
+ UsingLineControl = true,
+ IdentifierResultPart = IdentifierPart.Other,
+ ResultOfNonTightenings = true,
+ ResetAllIdentifiersAtJobDone = true,
+ Reserved = Reserved.G,
+ JobSequenceNumber = 5000
+ };
+ }
+
+ private static AdvancedJob BuildAdvancedJobRevision3(int programId, int batchSize, int maxCoherentNok, int batchCounter, int identifierNumber, string jobStepName, int jobStepType)
+ {
+ return new AdvancedJob()
+ {
+ ChannelId = 15,
+ ProgramId = programId,
+ AutoSelect = AutoSelect.ToolDisplay,
+ BatchSize = batchSize,
+ MaxCoherentNok = maxCoherentNok,
+ BatchCounter = batchCounter,
+ IdentifierNumber = identifierNumber,
+ JobStepName = jobStepName,
+ JobStepType = jobStepType,
+ ToolLoosening = ToolLoosening.EnableOnlyOnNokTightenings,
+ JobBatchMode = BatchMode.BothOkAndNok,
+ BatchStatusAtIncrement = BatchStatusAtIncrement.Nok,
+ DecrementBatchAfterLoosening = DecrementBatchAfterLoosening.AfterOk,
+ CurrentBatchStatus = CurrentBatchStatus.Nok
+ };
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/TestMid0030.cs b/src/MIDTesters.Core/Job/TestMid0030.cs
index 651c298c..d9067c73 100644
--- a/src/MIDTesters.Core/Job/TestMid0030.cs
+++ b/src/MIDTesters.Core/Job/TestMid0030.cs
@@ -29,5 +29,14 @@ public void Mid0030ByteAllRevisions()
Assert.AreEqual(typeof(Mid0030), mid.GetType());
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Pack")]
+ public void Mid0030PackAllRevisions()
+ {
+ string package = "00200030002 ";
+
+ AssertBuildAndParse(package, new Mid0030(2));
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/TestMid0031.cs b/src/MIDTesters.Core/Job/TestMid0031.cs
index 2dc90c5f..5eb81de9 100644
--- a/src/MIDTesters.Core/Job/TestMid0031.cs
+++ b/src/MIDTesters.Core/Job/TestMid0031.cs
@@ -1,5 +1,6 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenProtocolInterpreter.Job;
+using System.Collections.Generic;
namespace MIDTesters.Job
{
@@ -14,8 +15,8 @@ public void Mid0031Revision1()
string package = "00300031001 0401020304";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.TotalJobs);
- Assert.IsNotNull(mid.JobIds);
+ Assert.AreEqual(4, mid.TotalJobs);
+ Assert.AreEqual(4, mid.JobIds.Count);
AssertEqualPackages(package, mid);
}
@@ -27,8 +28,8 @@ public void Mid0031ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.TotalJobs);
- Assert.IsNotNull(mid.JobIds);
+ Assert.AreEqual(4, mid.TotalJobs);
+ Assert.AreEqual(4, mid.JobIds.Count);
AssertEqualPackages(bytes, mid);
}
@@ -39,8 +40,8 @@ public void Mid0031Revision2()
string package = "00640031002 00100001000200030004000500100015001100120019";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.TotalJobs);
- Assert.IsNotNull(mid.JobIds);
+ Assert.AreEqual(10, mid.TotalJobs);
+ Assert.AreEqual(10, mid.JobIds.Count);
AssertEqualPackages(package, mid);
}
@@ -52,9 +53,35 @@ public void Mid0031ByteRevision2()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.TotalJobs);
- Assert.IsNotNull(mid.JobIds);
+ Assert.AreEqual(10, mid.TotalJobs);
+ Assert.AreEqual(10, mid.JobIds.Count);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0031PackRevision1()
+ {
+ string package = "00300031001 0401020304";
+
+ AssertBuildAndParse(package, new Mid0031(1)
+ {
+ TotalJobs = 4,
+ JobIds = new List() { 1, 2, 3, 4 }
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 2"), TestCategory("Pack")]
+ public void Mid0031PackRevision2()
+ {
+ string package = "00640031002 00100001000200030004000500100015001100120019";
+
+ AssertBuildAndParse(package, new Mid0031(2)
+ {
+ TotalJobs = 10,
+ JobIds = new List() { 1, 2, 3, 4, 5, 10, 15, 11, 12, 19 }
+ });
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/TestMid0032.cs b/src/MIDTesters.Core/Job/TestMid0032.cs
index 9238f527..9e45e5a8 100644
--- a/src/MIDTesters.Core/Job/TestMid0032.cs
+++ b/src/MIDTesters.Core/Job/TestMid0032.cs
@@ -14,7 +14,7 @@ public void Mid0032Revision1()
string package = "00220032001 04";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.JobId);
+ Assert.AreEqual(4, mid.JobId);
AssertEqualPackages(package, mid);
}
@@ -26,7 +26,7 @@ public void Mid0032ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.JobId);
+ Assert.AreEqual(4, mid.JobId);
AssertEqualPackages(bytes, mid);
}
@@ -37,7 +37,7 @@ public void Mid0032Revision2()
string package = "00240032002 0002";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.JobId);
+ Assert.AreEqual(2, mid.JobId);
AssertEqualPackages(package, mid);
}
@@ -49,7 +49,7 @@ public void Mid0032ByteRevision2()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.JobId);
+ Assert.AreEqual(2, mid.JobId);
AssertEqualPackages(bytes, mid);
}
@@ -60,7 +60,7 @@ public void Mid0032Revision3()
string package = "00240032003 0003";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.JobId);
+ Assert.AreEqual(3, mid.JobId);
AssertEqualPackages(package, mid);
}
@@ -72,7 +72,7 @@ public void Mid0032ByteRevision3()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.JobId);
+ Assert.AreEqual(3, mid.JobId);
AssertEqualPackages(bytes, mid);
}
@@ -83,7 +83,7 @@ public void Mid0032Revision4()
string package = "00240032004 0003";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.JobId);
+ Assert.AreEqual(3, mid.JobId);
AssertEqualPackages(package, mid);
}
@@ -95,8 +95,56 @@ public void Mid0032ByteRevision4()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.JobId);
+ Assert.AreEqual(3, mid.JobId);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0032PackRevision1()
+ {
+ string package = "00220032001 04";
+
+ AssertBuildAndParse(package, new Mid0032(1)
+ {
+ JobId = 4
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 2"), TestCategory("Pack")]
+ public void Mid0032PackRevision2()
+ {
+ string package = "00240032002 0002";
+
+ AssertBuildAndParse(package, new Mid0032(2)
+ {
+ JobId = 2
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 3"), TestCategory("Pack")]
+ public void Mid0032PackRevision3()
+ {
+ string package = "00240032003 0003";
+
+ AssertBuildAndParse(package, new Mid0032(3)
+ {
+ JobId = 3
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 4"), TestCategory("Pack")]
+ public void Mid0032PackRevision4()
+ {
+ string package = "00240032004 0003";
+
+ AssertBuildAndParse(package, new Mid0032(4)
+ {
+ JobId = 3
+ });
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/TestMid0033.cs b/src/MIDTesters.Core/Job/TestMid0033.cs
index 30f02b58..d6551d4e 100644
--- a/src/MIDTesters.Core/Job/TestMid0033.cs
+++ b/src/MIDTesters.Core/Job/TestMid0033.cs
@@ -1,5 +1,8 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
+using OpenProtocolInterpreter;
using OpenProtocolInterpreter.Job;
+using System.Collections.Generic;
+using JobParameterSet = OpenProtocolInterpreter.Job.ParameterSet;
namespace MIDTesters.Job
{
@@ -14,19 +17,19 @@ public void Mid0033Revision1()
string package = "01150033001 010402My Job 4 031045000057000406107108109110211112021315:011:1:02;11:015:1:02;";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobName);
- Assert.IsNotNull(mid.ForcedOrder);
- Assert.IsNotNull(mid.MaxTimeForFirstTightening);
- Assert.IsNotNull(mid.MaxTimeToCompleteJob);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.LockAtJobDone);
- Assert.IsNotNull(mid.UseLineControl);
- Assert.IsNotNull(mid.RepeatJob);
- Assert.IsNotNull(mid.ToolLoosening);
- Assert.IsNotNull(mid.Reserved);
- Assert.IsNotNull(mid.NumberOfParameterSets);
- Assert.IsNotNull(mid.ParameterSetList);
+ Assert.AreEqual(4, mid.JobId);
+ Assert.AreEqual("My Job 4", mid.JobName.TrimEnd());
+ Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
+ Assert.AreEqual(5000, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(70004, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(JobBatchMode.OkAndNokTightenings, mid.JobBatchMode);
+ Assert.IsTrue(mid.LockAtJobDone);
+ Assert.IsTrue(mid.UseLineControl);
+ Assert.IsTrue(mid.RepeatJob);
+ Assert.AreEqual(ToolLoosening.EnableOnlyOnNokTightenings, mid.ToolLoosening);
+ Assert.AreEqual(Reserved.G, mid.Reserved);
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.ParameterSetList.Count);
AssertEqualPackages(package, mid);
}
@@ -38,19 +41,19 @@ public void Mid0033ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobName);
- Assert.IsNotNull(mid.ForcedOrder);
- Assert.IsNotNull(mid.MaxTimeForFirstTightening);
- Assert.IsNotNull(mid.MaxTimeToCompleteJob);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.LockAtJobDone);
- Assert.IsNotNull(mid.UseLineControl);
- Assert.IsNotNull(mid.RepeatJob);
- Assert.IsNotNull(mid.ToolLoosening);
- Assert.IsNotNull(mid.Reserved);
- Assert.IsNotNull(mid.NumberOfParameterSets);
- Assert.IsNotNull(mid.ParameterSetList);
+ Assert.AreEqual(4, mid.JobId);
+ Assert.AreEqual("My Job 4", mid.JobName.TrimEnd());
+ Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
+ Assert.AreEqual(5000, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(70004, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(JobBatchMode.OkAndNokTightenings, mid.JobBatchMode);
+ Assert.IsTrue(mid.LockAtJobDone);
+ Assert.IsTrue(mid.UseLineControl);
+ Assert.IsTrue(mid.RepeatJob);
+ Assert.AreEqual(ToolLoosening.EnableOnlyOnNokTightenings, mid.ToolLoosening);
+ Assert.AreEqual(Reserved.G, mid.Reserved);
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.ParameterSetList.Count);
AssertEqualPackages(bytes, mid);
}
@@ -61,19 +64,19 @@ public void Mid0033Revision2()
string package = "01170033002 01000402My Job 4 031045000057000406107108109110211112021315:011:1:02;11:015:1:02;";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobName);
- Assert.IsNotNull(mid.ForcedOrder);
- Assert.IsNotNull(mid.MaxTimeForFirstTightening);
- Assert.IsNotNull(mid.MaxTimeToCompleteJob);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.LockAtJobDone);
- Assert.IsNotNull(mid.UseLineControl);
- Assert.IsNotNull(mid.RepeatJob);
- Assert.IsNotNull(mid.ToolLoosening);
- Assert.IsNotNull(mid.Reserved);
- Assert.IsNotNull(mid.NumberOfParameterSets);
- Assert.IsNotNull(mid.ParameterSetList);
+ Assert.AreEqual(4, mid.JobId);
+ Assert.AreEqual("My Job 4", mid.JobName.TrimEnd());
+ Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
+ Assert.AreEqual(5000, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(70004, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(JobBatchMode.OkAndNokTightenings, mid.JobBatchMode);
+ Assert.IsTrue(mid.LockAtJobDone);
+ Assert.IsTrue(mid.UseLineControl);
+ Assert.IsTrue(mid.RepeatJob);
+ Assert.AreEqual(ToolLoosening.EnableOnlyOnNokTightenings, mid.ToolLoosening);
+ Assert.AreEqual(Reserved.G, mid.Reserved);
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.ParameterSetList.Count);
AssertEqualPackages(package, mid);
}
@@ -85,19 +88,19 @@ public void Mid0033ByteRevision2()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobName);
- Assert.IsNotNull(mid.ForcedOrder);
- Assert.IsNotNull(mid.MaxTimeForFirstTightening);
- Assert.IsNotNull(mid.MaxTimeToCompleteJob);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.LockAtJobDone);
- Assert.IsNotNull(mid.UseLineControl);
- Assert.IsNotNull(mid.RepeatJob);
- Assert.IsNotNull(mid.ToolLoosening);
- Assert.IsNotNull(mid.Reserved);
- Assert.IsNotNull(mid.NumberOfParameterSets);
- Assert.IsNotNull(mid.ParameterSetList);
+ Assert.AreEqual(4, mid.JobId);
+ Assert.AreEqual("My Job 4", mid.JobName.TrimEnd());
+ Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
+ Assert.AreEqual(5000, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(70004, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(JobBatchMode.OkAndNokTightenings, mid.JobBatchMode);
+ Assert.IsTrue(mid.LockAtJobDone);
+ Assert.IsTrue(mid.UseLineControl);
+ Assert.IsTrue(mid.RepeatJob);
+ Assert.AreEqual(ToolLoosening.EnableOnlyOnNokTightenings, mid.ToolLoosening);
+ Assert.AreEqual(Reserved.G, mid.Reserved);
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.ParameterSetList.Count);
AssertEqualPackages(bytes, mid);
}
@@ -108,19 +111,19 @@ public void Mid0033Revision3()
string package = "01810033003 01000402My Job 4 031045000057000406107108109110211112021315:011:1:02:02:Job Step 1 Name :03;11:015:1:02:01:Job Step 2 Name :05;";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobName);
- Assert.IsNotNull(mid.ForcedOrder);
- Assert.IsNotNull(mid.MaxTimeForFirstTightening);
- Assert.IsNotNull(mid.MaxTimeToCompleteJob);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.LockAtJobDone);
- Assert.IsNotNull(mid.UseLineControl);
- Assert.IsNotNull(mid.RepeatJob);
- Assert.IsNotNull(mid.ToolLoosening);
- Assert.IsNotNull(mid.Reserved);
- Assert.IsNotNull(mid.NumberOfParameterSets);
- Assert.IsNotNull(mid.ParameterSetList);
+ Assert.AreEqual(4, mid.JobId);
+ Assert.AreEqual("My Job 4", mid.JobName.TrimEnd());
+ Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
+ Assert.AreEqual(5000, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(70004, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(JobBatchMode.OkAndNokTightenings, mid.JobBatchMode);
+ Assert.IsTrue(mid.LockAtJobDone);
+ Assert.IsTrue(mid.UseLineControl);
+ Assert.IsTrue(mid.RepeatJob);
+ Assert.AreEqual(ToolLoosening.EnableOnlyOnNokTightenings, mid.ToolLoosening);
+ Assert.AreEqual(Reserved.G, mid.Reserved);
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.ParameterSetList.Count);
AssertEqualPackages(package, mid);
}
@@ -132,19 +135,19 @@ public void Mid0033ByteRevision3()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobName);
- Assert.IsNotNull(mid.ForcedOrder);
- Assert.IsNotNull(mid.MaxTimeForFirstTightening);
- Assert.IsNotNull(mid.MaxTimeToCompleteJob);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.LockAtJobDone);
- Assert.IsNotNull(mid.UseLineControl);
- Assert.IsNotNull(mid.RepeatJob);
- Assert.IsNotNull(mid.ToolLoosening);
- Assert.IsNotNull(mid.Reserved);
- Assert.IsNotNull(mid.NumberOfParameterSets);
- Assert.IsNotNull(mid.ParameterSetList);
+ Assert.AreEqual(4, mid.JobId);
+ Assert.AreEqual("My Job 4", mid.JobName.TrimEnd());
+ Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
+ Assert.AreEqual(5000, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(70004, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(JobBatchMode.OkAndNokTightenings, mid.JobBatchMode);
+ Assert.IsTrue(mid.LockAtJobDone);
+ Assert.IsTrue(mid.UseLineControl);
+ Assert.IsTrue(mid.RepeatJob);
+ Assert.AreEqual(ToolLoosening.EnableOnlyOnNokTightenings, mid.ToolLoosening);
+ Assert.AreEqual(Reserved.G, mid.Reserved);
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.ParameterSetList.Count);
AssertEqualPackages(bytes, mid);
}
@@ -155,19 +158,19 @@ public void Mid0033Revision4()
string package = "01910033004 01000402My Job 4 031045000057000406107108109110211112021315:011:1:02:0002:Job Step 1 Name :03:05;11:015:1:02:0001:Job Step 2 Name :05:02;";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobName);
- Assert.IsNotNull(mid.ForcedOrder);
- Assert.IsNotNull(mid.MaxTimeForFirstTightening);
- Assert.IsNotNull(mid.MaxTimeToCompleteJob);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.LockAtJobDone);
- Assert.IsNotNull(mid.UseLineControl);
- Assert.IsNotNull(mid.RepeatJob);
- Assert.IsNotNull(mid.ToolLoosening);
- Assert.IsNotNull(mid.Reserved);
- Assert.IsNotNull(mid.NumberOfParameterSets);
- Assert.IsNotNull(mid.ParameterSetList);
+ Assert.AreEqual(4, mid.JobId);
+ Assert.AreEqual("My Job 4", mid.JobName.TrimEnd());
+ Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
+ Assert.AreEqual(5000, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(70004, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(JobBatchMode.OkAndNokTightenings, mid.JobBatchMode);
+ Assert.IsTrue(mid.LockAtJobDone);
+ Assert.IsTrue(mid.UseLineControl);
+ Assert.IsTrue(mid.RepeatJob);
+ Assert.AreEqual(ToolLoosening.EnableOnlyOnNokTightenings, mid.ToolLoosening);
+ Assert.AreEqual(Reserved.G, mid.Reserved);
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.ParameterSetList.Count);
AssertEqualPackages(package, mid);
}
@@ -179,19 +182,19 @@ public void Mid0033ByteRevision4()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobName);
- Assert.IsNotNull(mid.ForcedOrder);
- Assert.IsNotNull(mid.MaxTimeForFirstTightening);
- Assert.IsNotNull(mid.MaxTimeToCompleteJob);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.LockAtJobDone);
- Assert.IsNotNull(mid.UseLineControl);
- Assert.IsNotNull(mid.RepeatJob);
- Assert.IsNotNull(mid.ToolLoosening);
- Assert.IsNotNull(mid.Reserved);
- Assert.IsNotNull(mid.NumberOfParameterSets);
- Assert.IsNotNull(mid.ParameterSetList);
+ Assert.AreEqual(4, mid.JobId);
+ Assert.AreEqual("My Job 4", mid.JobName.TrimEnd());
+ Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
+ Assert.AreEqual(5000, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(70004, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(JobBatchMode.OkAndNokTightenings, mid.JobBatchMode);
+ Assert.IsTrue(mid.LockAtJobDone);
+ Assert.IsTrue(mid.UseLineControl);
+ Assert.IsTrue(mid.RepeatJob);
+ Assert.AreEqual(ToolLoosening.EnableOnlyOnNokTightenings, mid.ToolLoosening);
+ Assert.AreEqual(Reserved.G, mid.Reserved);
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.ParameterSetList.Count);
AssertEqualPackages(bytes, mid);
}
@@ -202,19 +205,19 @@ public void Mid0033Revision5()
string package = "01950033005 01000402My Job 4 031045000057000406107108109110211112021315:011:1:0002:0002:Job Step 1 Name :03:05;11:015:1:0002:0001:Job Step 2 Name :05:02;";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobName);
- Assert.IsNotNull(mid.ForcedOrder);
- Assert.IsNotNull(mid.MaxTimeForFirstTightening);
- Assert.IsNotNull(mid.MaxTimeToCompleteJob);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.LockAtJobDone);
- Assert.IsNotNull(mid.UseLineControl);
- Assert.IsNotNull(mid.RepeatJob);
- Assert.IsNotNull(mid.ToolLoosening);
- Assert.IsNotNull(mid.Reserved);
- Assert.IsNotNull(mid.NumberOfParameterSets);
- Assert.IsNotNull(mid.ParameterSetList);
+ Assert.AreEqual(4, mid.JobId);
+ Assert.AreEqual("My Job 4", mid.JobName.TrimEnd());
+ Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
+ Assert.AreEqual(5000, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(70004, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(JobBatchMode.OkAndNokTightenings, mid.JobBatchMode);
+ Assert.IsTrue(mid.LockAtJobDone);
+ Assert.IsTrue(mid.UseLineControl);
+ Assert.IsTrue(mid.RepeatJob);
+ Assert.AreEqual(ToolLoosening.EnableOnlyOnNokTightenings, mid.ToolLoosening);
+ Assert.AreEqual(Reserved.G, mid.Reserved);
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.ParameterSetList.Count);
AssertEqualPackages(package, mid);
}
@@ -226,20 +229,106 @@ public void Mid0033ByteRevision5()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobName);
- Assert.IsNotNull(mid.ForcedOrder);
- Assert.IsNotNull(mid.MaxTimeForFirstTightening);
- Assert.IsNotNull(mid.MaxTimeToCompleteJob);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.LockAtJobDone);
- Assert.IsNotNull(mid.UseLineControl);
- Assert.IsNotNull(mid.RepeatJob);
- Assert.IsNotNull(mid.ToolLoosening);
- Assert.IsNotNull(mid.Reserved);
- Assert.IsNotNull(mid.NumberOfParameterSets);
- Assert.IsNotNull(mid.ParameterSetList);
+ Assert.AreEqual(4, mid.JobId);
+ Assert.AreEqual("My Job 4", mid.JobName.TrimEnd());
+ Assert.AreEqual(ForcedOrder.ForcedOrder, mid.ForcedOrder);
+ Assert.AreEqual(5000, mid.MaxTimeForFirstTightening);
+ Assert.AreEqual(70004, mid.MaxTimeToCompleteJob);
+ Assert.AreEqual(JobBatchMode.OkAndNokTightenings, mid.JobBatchMode);
+ Assert.IsTrue(mid.LockAtJobDone);
+ Assert.IsTrue(mid.UseLineControl);
+ Assert.IsTrue(mid.RepeatJob);
+ Assert.AreEqual(ToolLoosening.EnableOnlyOnNokTightenings, mid.ToolLoosening);
+ Assert.AreEqual(Reserved.G, mid.Reserved);
+ Assert.AreEqual(2, mid.NumberOfParameterSets);
+ Assert.AreEqual(2, mid.ParameterSetList.Count);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0033PackRevision1()
+ {
+ string package = "01150033001 010402My Job 4 031045000057000406107108109110211112021315:011:1:02;11:015:1:02;";
+
+ AssertBuildAndParse(package, BuildMid0033(1, new List()
+ {
+ new JobParameterSet() { ChannelId = 15, TypeId = 11, AutoValue = true, BatchSize = 2 },
+ new JobParameterSet() { ChannelId = 11, TypeId = 15, AutoValue = true, BatchSize = 2 }
+ }));
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 2"), TestCategory("Pack")]
+ public void Mid0033PackRevision2()
+ {
+ string package = "01170033002 01000402My Job 4 031045000057000406107108109110211112021315:011:1:02;11:015:1:02;";
+
+ AssertBuildAndParse(package, BuildMid0033(2, new List()
+ {
+ new JobParameterSet() { ChannelId = 15, TypeId = 11, AutoValue = true, BatchSize = 2 },
+ new JobParameterSet() { ChannelId = 11, TypeId = 15, AutoValue = true, BatchSize = 2 }
+ }));
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 3"), TestCategory("Pack")]
+ public void Mid0033PackRevision3()
+ {
+ string package = "01810033003 01000402My Job 4 031045000057000406107108109110211112021315:011:1:02:02:Job Step 1 Name :03;11:015:1:02:01:Job Step 2 Name :05;";
+
+#pragma warning disable CS0618 // Socket is the revision 3 layout of the field
+ AssertBuildAndParse(package, BuildMid0033(3, new List()
+ {
+ new JobParameterSet() { ChannelId = 15, TypeId = 11, AutoValue = true, BatchSize = 2, Socket = 2, JobStepName = "Job Step 1 Name", JobStepType = 3 },
+ new JobParameterSet() { ChannelId = 11, TypeId = 15, AutoValue = true, BatchSize = 2, Socket = 1, JobStepName = "Job Step 2 Name", JobStepType = 5 }
+ }));
+#pragma warning restore CS0618
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 4"), TestCategory("Pack")]
+ public void Mid0033PackRevision4()
+ {
+ string package = "01910033004 01000402My Job 4 031045000057000406107108109110211112021315:011:1:02:0002:Job Step 1 Name :03:05;11:015:1:02:0001:Job Step 2 Name :05:02;";
+
+ AssertBuildAndParse(package, BuildMid0033(4, new List()
+ {
+ new JobParameterSet() { ChannelId = 15, TypeId = 11, AutoValue = true, BatchSize = 2, IdentifierNumber = 2, JobStepName = "Job Step 1 Name", JobStepType = 3, MaxCoherentNok = 5 },
+ new JobParameterSet() { ChannelId = 11, TypeId = 15, AutoValue = true, BatchSize = 2, IdentifierNumber = 1, JobStepName = "Job Step 2 Name", JobStepType = 5, MaxCoherentNok = 2 }
+ }));
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 5"), TestCategory("Pack")]
+ public void Mid0033PackRevision5()
+ {
+ string package = "01950033005 01000402My Job 4 031045000057000406107108109110211112021315:011:1:0002:0002:Job Step 1 Name :03:05;11:015:1:0002:0001:Job Step 2 Name :05:02;";
+
+ AssertBuildAndParse(package, BuildMid0033(5, new List()
+ {
+ new JobParameterSet() { ChannelId = 15, TypeId = 11, AutoValue = true, BatchSize = 2, IdentifierNumber = 2, JobStepName = "Job Step 1 Name", JobStepType = 3, MaxCoherentNok = 5 },
+ new JobParameterSet() { ChannelId = 11, TypeId = 15, AutoValue = true, BatchSize = 2, IdentifierNumber = 1, JobStepName = "Job Step 2 Name", JobStepType = 5, MaxCoherentNok = 2 }
+ }));
+ }
+
+ private static Mid0033 BuildMid0033(int revision, List parameterSets)
+ {
+ return new Mid0033(revision)
+ {
+ JobId = 4,
+ JobName = "My Job 4",
+ ForcedOrder = ForcedOrder.ForcedOrder,
+ MaxTimeForFirstTightening = 5000,
+ MaxTimeToCompleteJob = 70004,
+ JobBatchMode = JobBatchMode.OkAndNokTightenings,
+ LockAtJobDone = true,
+ UseLineControl = true,
+ RepeatJob = true,
+ ToolLoosening = ToolLoosening.EnableOnlyOnNokTightenings,
+ Reserved = Reserved.G,
+ ParameterSetList = parameterSets
+ };
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/TestMid0034.cs b/src/MIDTesters.Core/Job/TestMid0034.cs
index e7d5283e..a4f68e0d 100644
--- a/src/MIDTesters.Core/Job/TestMid0034.cs
+++ b/src/MIDTesters.Core/Job/TestMid0034.cs
@@ -29,5 +29,14 @@ public void Mid0034ByteAllRevisions()
Assert.AreEqual(typeof(Mid0034), mid.GetType());
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Pack")]
+ public void Mid0034PackAllRevisions()
+ {
+ string package = "00200034001 ";
+
+ AssertBuildAndParse(package, new Mid0034());
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/TestMid0035.cs b/src/MIDTesters.Core/Job/TestMid0035.cs
index 985c85aa..3dc89e9e 100644
--- a/src/MIDTesters.Core/Job/TestMid0035.cs
+++ b/src/MIDTesters.Core/Job/TestMid0035.cs
@@ -1,5 +1,7 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
+using OpenProtocolInterpreter;
using OpenProtocolInterpreter.Job;
+using System;
namespace MIDTesters.Job
{
@@ -14,12 +16,12 @@ public void Mid0035Revision1()
string package = "00630035001 0101020030040008050003062001-12-01:20:12:45";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobStatus);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.JobBatchSize);
- Assert.IsNotNull(mid.JobBatchCounter);
- Assert.IsNotNull(mid.TimeStamp);
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual(JobStatus.NotCompleted, mid.JobStatus);
+ Assert.AreEqual(JobBatchMode.OnlyOkTightenings, mid.JobBatchMode);
+ Assert.AreEqual(8, mid.JobBatchSize);
+ Assert.AreEqual(3, mid.JobBatchCounter);
+ Assert.AreEqual(new DateTime(2001, 12, 1, 20, 12, 45), mid.TimeStamp);
AssertEqualPackages(package, mid);
}
@@ -31,12 +33,12 @@ public void Mid0035ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobStatus);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.JobBatchSize);
- Assert.IsNotNull(mid.JobBatchCounter);
- Assert.IsNotNull(mid.TimeStamp);
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual(JobStatus.NotCompleted, mid.JobStatus);
+ Assert.AreEqual(JobBatchMode.OnlyOkTightenings, mid.JobBatchMode);
+ Assert.AreEqual(8, mid.JobBatchSize);
+ Assert.AreEqual(3, mid.JobBatchCounter);
+ Assert.AreEqual(new DateTime(2001, 12, 1, 20, 12, 45), mid.TimeStamp);
AssertEqualPackages(bytes, mid);
}
@@ -47,12 +49,12 @@ public void Mid0035Revision2()
string package = "00650035002 010001020030040008050003062001-12-01:20:12:45";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobStatus);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.JobBatchSize);
- Assert.IsNotNull(mid.JobBatchCounter);
- Assert.IsNotNull(mid.TimeStamp);
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual(JobStatus.NotCompleted, mid.JobStatus);
+ Assert.AreEqual(JobBatchMode.OnlyOkTightenings, mid.JobBatchMode);
+ Assert.AreEqual(8, mid.JobBatchSize);
+ Assert.AreEqual(3, mid.JobBatchCounter);
+ Assert.AreEqual(new DateTime(2001, 12, 1, 20, 12, 45), mid.TimeStamp);
AssertEqualPackages(package, mid);
}
@@ -64,12 +66,12 @@ public void Mid0035ByteRevision2()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobStatus);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.JobBatchSize);
- Assert.IsNotNull(mid.JobBatchCounter);
- Assert.IsNotNull(mid.TimeStamp);
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual(JobStatus.NotCompleted, mid.JobStatus);
+ Assert.AreEqual(JobBatchMode.OnlyOkTightenings, mid.JobBatchMode);
+ Assert.AreEqual(8, mid.JobBatchSize);
+ Assert.AreEqual(3, mid.JobBatchCounter);
+ Assert.AreEqual(new DateTime(2001, 12, 1, 20, 12, 45), mid.TimeStamp);
AssertEqualPackages(bytes, mid);
}
@@ -80,15 +82,15 @@ public void Mid0035Revision3()
string package = "00790035003 010001020030040008050003062001-12-01:20:12:4507120080100912";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobStatus);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.JobBatchSize);
- Assert.IsNotNull(mid.JobBatchCounter);
- Assert.IsNotNull(mid.TimeStamp);
- Assert.IsNotNull(mid.JobCurrentStep);
- Assert.IsNotNull(mid.JobTotalNumberOfSteps);
- Assert.IsNotNull(mid.JobStepType);
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual(JobStatus.NotCompleted, mid.JobStatus);
+ Assert.AreEqual(JobBatchMode.OnlyOkTightenings, mid.JobBatchMode);
+ Assert.AreEqual(8, mid.JobBatchSize);
+ Assert.AreEqual(3, mid.JobBatchCounter);
+ Assert.AreEqual(new DateTime(2001, 12, 1, 20, 12, 45), mid.TimeStamp);
+ Assert.AreEqual(120, mid.JobCurrentStep);
+ Assert.AreEqual(10, mid.JobTotalNumberOfSteps);
+ Assert.AreEqual(12, mid.JobStepType);
AssertEqualPackages(package, mid);
}
@@ -100,15 +102,15 @@ public void Mid0035ByteRevision3()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobStatus);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.JobBatchSize);
- Assert.IsNotNull(mid.JobBatchCounter);
- Assert.IsNotNull(mid.TimeStamp);
- Assert.IsNotNull(mid.JobCurrentStep);
- Assert.IsNotNull(mid.JobTotalNumberOfSteps);
- Assert.IsNotNull(mid.JobStepType);
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual(JobStatus.NotCompleted, mid.JobStatus);
+ Assert.AreEqual(JobBatchMode.OnlyOkTightenings, mid.JobBatchMode);
+ Assert.AreEqual(8, mid.JobBatchSize);
+ Assert.AreEqual(3, mid.JobBatchCounter);
+ Assert.AreEqual(new DateTime(2001, 12, 1, 20, 12, 45), mid.TimeStamp);
+ Assert.AreEqual(120, mid.JobCurrentStep);
+ Assert.AreEqual(10, mid.JobTotalNumberOfSteps);
+ Assert.AreEqual(12, mid.JobStepType);
AssertEqualPackages(bytes, mid);
}
@@ -119,16 +121,16 @@ public void Mid0035Revision4()
string package = "00830035004 010001020030040008050003062001-12-01:20:12:45071200801009121001";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobStatus);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.JobBatchSize);
- Assert.IsNotNull(mid.JobBatchCounter);
- Assert.IsNotNull(mid.TimeStamp);
- Assert.IsNotNull(mid.JobCurrentStep);
- Assert.IsNotNull(mid.JobTotalNumberOfSteps);
- Assert.IsNotNull(mid.JobStepType);
- Assert.IsNotNull(mid.JobTighteningStatus);
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual(JobStatus.NotCompleted, mid.JobStatus);
+ Assert.AreEqual(JobBatchMode.OnlyOkTightenings, mid.JobBatchMode);
+ Assert.AreEqual(8, mid.JobBatchSize);
+ Assert.AreEqual(3, mid.JobBatchCounter);
+ Assert.AreEqual(new DateTime(2001, 12, 1, 20, 12, 45), mid.TimeStamp);
+ Assert.AreEqual(120, mid.JobCurrentStep);
+ Assert.AreEqual(10, mid.JobTotalNumberOfSteps);
+ Assert.AreEqual(12, mid.JobStepType);
+ Assert.AreEqual(JobTighteningStatus.Nok, mid.JobTighteningStatus);
AssertEqualPackages(package, mid);
}
@@ -140,16 +142,16 @@ public void Mid0035ByteRevision4()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobStatus);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.JobBatchSize);
- Assert.IsNotNull(mid.JobBatchCounter);
- Assert.IsNotNull(mid.TimeStamp);
- Assert.IsNotNull(mid.JobCurrentStep);
- Assert.IsNotNull(mid.JobTotalNumberOfSteps);
- Assert.IsNotNull(mid.JobStepType);
- Assert.IsNotNull(mid.JobTighteningStatus);
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual(JobStatus.NotCompleted, mid.JobStatus);
+ Assert.AreEqual(JobBatchMode.OnlyOkTightenings, mid.JobBatchMode);
+ Assert.AreEqual(8, mid.JobBatchSize);
+ Assert.AreEqual(3, mid.JobBatchCounter);
+ Assert.AreEqual(new DateTime(2001, 12, 1, 20, 12, 45), mid.TimeStamp);
+ Assert.AreEqual(120, mid.JobCurrentStep);
+ Assert.AreEqual(10, mid.JobTotalNumberOfSteps);
+ Assert.AreEqual(12, mid.JobStepType);
+ Assert.AreEqual(JobTighteningStatus.Nok, mid.JobTighteningStatus);
AssertEqualPackages(bytes, mid);
}
@@ -160,21 +162,21 @@ public void Mid0035Revision5()
string package = "01980035005 010001020030040008050003062001-12-01:20:12:45071200801009121001111234512VINVINN12345678912345678913IdentifierResultPart2xxxx14IdentifierResultPart3xxxx15IdentifierResultPart4xxxx";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobStatus);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.JobBatchSize);
- Assert.IsNotNull(mid.JobBatchCounter);
- Assert.IsNotNull(mid.TimeStamp);
- Assert.IsNotNull(mid.JobCurrentStep);
- Assert.IsNotNull(mid.JobTotalNumberOfSteps);
- Assert.IsNotNull(mid.JobStepType);
- Assert.IsNotNull(mid.JobTighteningStatus);
- Assert.IsNotNull(mid.JobSequenceNumber);
- Assert.IsNotNull(mid.VinNumber);
- Assert.IsNotNull(mid.IdentifierResultPart2);
- Assert.IsNotNull(mid.IdentifierResultPart3);
- Assert.IsNotNull(mid.IdentifierResultPart4);
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual(JobStatus.NotCompleted, mid.JobStatus);
+ Assert.AreEqual(JobBatchMode.OnlyOkTightenings, mid.JobBatchMode);
+ Assert.AreEqual(8, mid.JobBatchSize);
+ Assert.AreEqual(3, mid.JobBatchCounter);
+ Assert.AreEqual(new DateTime(2001, 12, 1, 20, 12, 45), mid.TimeStamp);
+ Assert.AreEqual(120, mid.JobCurrentStep);
+ Assert.AreEqual(10, mid.JobTotalNumberOfSteps);
+ Assert.AreEqual(12, mid.JobStepType);
+ Assert.AreEqual(JobTighteningStatus.Nok, mid.JobTighteningStatus);
+ Assert.AreEqual(12345, mid.JobSequenceNumber);
+ Assert.AreEqual("VINVINN123456789123456789", mid.VinNumber);
+ Assert.AreEqual("IdentifierResultPart2xxxx", mid.IdentifierResultPart2);
+ Assert.AreEqual("IdentifierResultPart3xxxx", mid.IdentifierResultPart3);
+ Assert.AreEqual("IdentifierResultPart4xxxx", mid.IdentifierResultPart4);
AssertEqualPackages(package, mid);
}
@@ -186,22 +188,123 @@ public void Mid0035ByteRevision5()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.JobId);
- Assert.IsNotNull(mid.JobStatus);
- Assert.IsNotNull(mid.JobBatchMode);
- Assert.IsNotNull(mid.JobBatchSize);
- Assert.IsNotNull(mid.JobBatchCounter);
- Assert.IsNotNull(mid.TimeStamp);
- Assert.IsNotNull(mid.JobCurrentStep);
- Assert.IsNotNull(mid.JobTotalNumberOfSteps);
- Assert.IsNotNull(mid.JobStepType);
- Assert.IsNotNull(mid.JobTighteningStatus);
- Assert.IsNotNull(mid.JobSequenceNumber);
- Assert.IsNotNull(mid.VinNumber);
- Assert.IsNotNull(mid.IdentifierResultPart2);
- Assert.IsNotNull(mid.IdentifierResultPart3);
- Assert.IsNotNull(mid.IdentifierResultPart4);
+ Assert.AreEqual(1, mid.JobId);
+ Assert.AreEqual(JobStatus.NotCompleted, mid.JobStatus);
+ Assert.AreEqual(JobBatchMode.OnlyOkTightenings, mid.JobBatchMode);
+ Assert.AreEqual(8, mid.JobBatchSize);
+ Assert.AreEqual(3, mid.JobBatchCounter);
+ Assert.AreEqual(new DateTime(2001, 12, 1, 20, 12, 45), mid.TimeStamp);
+ Assert.AreEqual(120, mid.JobCurrentStep);
+ Assert.AreEqual(10, mid.JobTotalNumberOfSteps);
+ Assert.AreEqual(12, mid.JobStepType);
+ Assert.AreEqual(JobTighteningStatus.Nok, mid.JobTighteningStatus);
+ Assert.AreEqual(12345, mid.JobSequenceNumber);
+ Assert.AreEqual("VINVINN123456789123456789", mid.VinNumber);
+ Assert.AreEqual("IdentifierResultPart2xxxx", mid.IdentifierResultPart2);
+ Assert.AreEqual("IdentifierResultPart3xxxx", mid.IdentifierResultPart3);
+ Assert.AreEqual("IdentifierResultPart4xxxx", mid.IdentifierResultPart4);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0035PackRevision1()
+ {
+ string package = "00630035001 0101020030040008050003062001-12-01:20:12:45";
+
+ AssertBuildAndParse(package, new Mid0035(1)
+ {
+ JobId = 1,
+ JobStatus = JobStatus.NotCompleted,
+ JobBatchMode = JobBatchMode.OnlyOkTightenings,
+ JobBatchSize = 8,
+ JobBatchCounter = 3,
+ TimeStamp = new DateTime(2001, 12, 1, 20, 12, 45)
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 2"), TestCategory("Pack")]
+ public void Mid0035PackRevision2()
+ {
+ string package = "00650035002 010001020030040008050003062001-12-01:20:12:45";
+
+ AssertBuildAndParse(package, new Mid0035(2)
+ {
+ JobId = 1,
+ JobStatus = JobStatus.NotCompleted,
+ JobBatchMode = JobBatchMode.OnlyOkTightenings,
+ JobBatchSize = 8,
+ JobBatchCounter = 3,
+ TimeStamp = new DateTime(2001, 12, 1, 20, 12, 45)
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 3"), TestCategory("Pack")]
+ public void Mid0035PackRevision3()
+ {
+ string package = "00790035003 010001020030040008050003062001-12-01:20:12:4507120080100912";
+
+ AssertBuildAndParse(package, new Mid0035(3)
+ {
+ JobId = 1,
+ JobStatus = JobStatus.NotCompleted,
+ JobBatchMode = JobBatchMode.OnlyOkTightenings,
+ JobBatchSize = 8,
+ JobBatchCounter = 3,
+ TimeStamp = new DateTime(2001, 12, 1, 20, 12, 45),
+ JobCurrentStep = 120,
+ JobTotalNumberOfSteps = 10,
+ JobStepType = 12
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 4"), TestCategory("Pack")]
+ public void Mid0035PackRevision4()
+ {
+ string package = "00830035004 010001020030040008050003062001-12-01:20:12:45071200801009121001";
+
+ AssertBuildAndParse(package, new Mid0035(4)
+ {
+ JobId = 1,
+ JobStatus = JobStatus.NotCompleted,
+ JobBatchMode = JobBatchMode.OnlyOkTightenings,
+ JobBatchSize = 8,
+ JobBatchCounter = 3,
+ TimeStamp = new DateTime(2001, 12, 1, 20, 12, 45),
+ JobCurrentStep = 120,
+ JobTotalNumberOfSteps = 10,
+ JobStepType = 12,
+ JobTighteningStatus = JobTighteningStatus.Nok
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 5"), TestCategory("Pack")]
+ public void Mid0035PackRevision5()
+ {
+ string package = "01980035005 010001020030040008050003062001-12-01:20:12:45071200801009121001111234512VINVINN12345678912345678913IdentifierResultPart2xxxx14IdentifierResultPart3xxxx15IdentifierResultPart4xxxx";
+
+ AssertBuildAndParse(package, new Mid0035(5)
+ {
+ JobId = 1,
+ JobStatus = JobStatus.NotCompleted,
+ JobBatchMode = JobBatchMode.OnlyOkTightenings,
+ JobBatchSize = 8,
+ JobBatchCounter = 3,
+ TimeStamp = new DateTime(2001, 12, 1, 20, 12, 45),
+ JobCurrentStep = 120,
+ JobTotalNumberOfSteps = 10,
+ JobStepType = 12,
+ JobTighteningStatus = JobTighteningStatus.Nok,
+ JobSequenceNumber = 12345,
+ VinNumber = "VINVINN123456789123456789",
+ IdentifierResultPart2 = "IdentifierResultPart2xxxx",
+ IdentifierResultPart3 = "IdentifierResultPart3xxxx",
+ IdentifierResultPart4 = "IdentifierResultPart4xxxx"
+ });
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/TestMid0036.cs b/src/MIDTesters.Core/Job/TestMid0036.cs
index 91546d09..ca60da8e 100644
--- a/src/MIDTesters.Core/Job/TestMid0036.cs
+++ b/src/MIDTesters.Core/Job/TestMid0036.cs
@@ -29,5 +29,14 @@ public void Mid0036ByteAllRevisions()
Assert.AreEqual(typeof(Mid0036), mid.GetType());
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Pack")]
+ public void Mid0036PackAllRevisions()
+ {
+ string package = "00200036001 ";
+
+ AssertBuildAndParse(package, new Mid0036());
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/TestMid0037.cs b/src/MIDTesters.Core/Job/TestMid0037.cs
index e399f14a..5bea56d4 100644
--- a/src/MIDTesters.Core/Job/TestMid0037.cs
+++ b/src/MIDTesters.Core/Job/TestMid0037.cs
@@ -29,5 +29,14 @@ public void Mid0037ByteAllRevisions()
Assert.AreEqual(typeof(Mid0037), mid.GetType());
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Pack")]
+ public void Mid0037PackAllRevisions()
+ {
+ string package = "00200037001 ";
+
+ AssertBuildAndParse(package, new Mid0037());
+ }
}
}
diff --git a/src/MIDTesters.Core/Job/TestMid0038.cs b/src/MIDTesters.Core/Job/TestMid0038.cs
index bc412f1b..827f33ec 100644
--- a/src/MIDTesters.Core/Job/TestMid0038.cs
+++ b/src/MIDTesters.Core/Job/TestMid0038.cs
@@ -54,15 +54,27 @@ public void Mid0038ByteRevision2()
}
[TestMethod]
- [TestCategory("Revision 2"), TestCategory("ByteArray")]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0038PackRevision1()
+ {
+ string package = "00220038001 01";
+
+ AssertBuildAndParse(package, new Mid0038(1)
+ {
+ JobId = 1
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 2"), TestCategory("Pack")]
public void Mid0038PackRevision2()
{
- var mid = new Mid0038(2);
- mid.JobId = 1;
- var actual = mid.PackBytes();
- var package = "00240038002 0001";
+ string package = "00240038002 0001";
- CollectionAssert.AreEqual(GetAsciiBytes(package), actual);
+ AssertBuildAndParse(package, new Mid0038(2)
+ {
+ JobId = 1
+ });
}
}
}
diff --git a/src/MIDTesters.Core/Job/TestMid0039.cs b/src/MIDTesters.Core/Job/TestMid0039.cs
index de70ac17..8113ec38 100644
--- a/src/MIDTesters.Core/Job/TestMid0039.cs
+++ b/src/MIDTesters.Core/Job/TestMid0039.cs
@@ -14,7 +14,7 @@ public void Mid0039Revision1()
string package = "00220039001 01";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.JobId);
+ Assert.AreEqual(1, mid.JobId);
AssertEqualPackages(package, mid);
}
@@ -26,7 +26,7 @@ public void Mid0039ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.JobId);
+ Assert.AreEqual(1, mid.JobId);
AssertEqualPackages(bytes, mid);
}
@@ -37,7 +37,7 @@ public void Mid0039Revision2()
string package = "00240039002 0003";
var mid = _midInterpreter.Parse(package);
- Assert.IsNotNull(mid.JobId);
+ Assert.AreEqual(3, mid.JobId);
AssertEqualPackages(package, mid);
}
@@ -49,8 +49,32 @@ public void Mid0039ByteRevision2()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.IsNotNull(mid.JobId);
+ Assert.AreEqual(3, mid.JobId);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid0039PackRevision1()
+ {
+ string package = "00220039001 01";
+
+ AssertBuildAndParse(package, new Mid0039(1)
+ {
+ JobId = 1
+ });
+ }
+
+ [TestMethod]
+ [TestCategory("Revision 2"), TestCategory("Pack")]
+ public void Mid0039PackRevision2()
+ {
+ string package = "00240039002 0003";
+
+ AssertBuildAndParse(package, new Mid0039(2)
+ {
+ JobId = 3
+ });
+ }
}
}
diff --git a/src/MIDTesters.Core/KeepAlive/TestMid9999.cs b/src/MIDTesters.Core/KeepAlive/TestMid9999.cs
index f3084416..bcdf0c29 100644
--- a/src/MIDTesters.Core/KeepAlive/TestMid9999.cs
+++ b/src/MIDTesters.Core/KeepAlive/TestMid9999.cs
@@ -29,5 +29,16 @@ public void Mid9999ByteRevision1()
Assert.AreEqual(typeof(Mid9999), mid.GetType());
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid9999PackRevision1()
+ {
+ string package = "00209999 ";
+
+ AssertBuildAndParse(package, new Mid9999(1)
+ {
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/LinkCommunication/TestMid9997.cs b/src/MIDTesters.Core/LinkCommunication/TestMid9997.cs
index a04ec3fd..04c0ddd4 100644
--- a/src/MIDTesters.Core/LinkCommunication/TestMid9997.cs
+++ b/src/MIDTesters.Core/LinkCommunication/TestMid9997.cs
@@ -14,7 +14,7 @@ public void Mid9997Revision1()
string package = "00249997001 0061";
var mid = _midInterpreter.Parse(package);
- Assert.AreNotEqual(0, mid.MidNumber);
+ Assert.AreEqual(61, mid.MidNumber);
AssertEqualPackages(package, mid);
}
@@ -26,8 +26,20 @@ public void Mid9997ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.AreNotEqual(0, mid.MidNumber);
+ Assert.AreEqual(65, mid.MidNumber);
AssertEqualPackages(bytes, mid);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid9997PackRevision1()
+ {
+ string package = "00249997001 0061";
+
+ AssertBuildAndParse(package, new Mid9997()
+ {
+ MidNumber = 61
+ });
+ }
}
}
diff --git a/src/MIDTesters.Core/LinkCommunication/TestMid9998.cs b/src/MIDTesters.Core/LinkCommunication/TestMid9998.cs
index 309798b6..567eb355 100644
--- a/src/MIDTesters.Core/LinkCommunication/TestMid9998.cs
+++ b/src/MIDTesters.Core/LinkCommunication/TestMid9998.cs
@@ -1,4 +1,5 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
+using OpenProtocolInterpreter;
using OpenProtocolInterpreter.LinkCommunication;
namespace MIDTesters.LinkCommunication
@@ -14,8 +15,8 @@ public void Mid9998Revision1()
string package = "00289998 00610003";
var mid = _midInterpreter.Parse(package);
- Assert.AreNotEqual(0, mid.MidNumber);
- Assert.IsNotNull(mid.ErrorCode);
+ Assert.AreEqual(61, mid.MidNumber);
+ Assert.AreEqual(LinkCommunicationError.InvalidSequenceNumber, mid.ErrorCode);
AssertEqualPackages(package, mid, true);
}
@@ -27,9 +28,22 @@ public void Mid9998ByteRevision1()
byte[] bytes = GetAsciiBytes(package);
var mid = _midInterpreter.Parse(bytes);
- Assert.AreNotEqual(0, mid.MidNumber);
- Assert.IsNotNull(mid.ErrorCode);
+ Assert.AreEqual(61, mid.MidNumber);
+ Assert.AreEqual(LinkCommunicationError.InvalidSequenceNumber, mid.ErrorCode);
AssertEqualPackages(bytes, mid, true);
}
+
+ [TestMethod]
+ [TestCategory("Revision 1"), TestCategory("Pack")]
+ public void Mid9998PackRevision1()
+ {
+ string package = "00289998 00610003";
+
+ AssertBuildAndParse(package, new Mid9998()
+ {
+ MidNumber = 61,
+ ErrorCode = LinkCommunicationError.InvalidSequenceNumber
+ }, true);
+ }
}
}
diff --git a/src/MIDTesters.Core/MIDsTests.cs b/src/MIDTesters.Core/MIDsTests.cs
deleted file mode 100644
index b3092e6d..00000000
--- a/src/MIDTesters.Core/MIDsTests.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-using OpenProtocolInterpreter;
-using OpenProtocolInterpreter.Communication;
-using OpenProtocolInterpreter.MotorTuning;
-using OpenProtocolInterpreter.Tightening;
-using System;
-using System.Diagnostics;
-
-namespace MIDTesters
-{
- //[Microsoft.VisualStudio.TestTools.UnitTesting.TestClass]
- public class MIDsTests
- {
- //[Microsoft.VisualStudio.TestTools.UnitTesting.TestMethod]
- public void TestProcessingTime()
- {
- long total = 0;
- string mid61 = "02310061001 010001020103airbag7 04KPOL3456JKLO897 " +
- "05000600307000008000009010011112000840130014001400120015000739160000017099991800000" +
- "1900000202001-06-02:09:54:09212001-05-29:12:34:3322123345675 ";
- //CustomMids
- var watch = Stopwatch.StartNew();
- var myTEmplate = new MidInterpreter()
- .UseAllMessages(new Type[]
- {
- typeof(Mid0001),
- typeof(Mid0002),
- typeof(Mid0003),
- typeof(Mid0004),
- typeof(Mid0061),
- typeof(Mid0500),
- typeof(Mid0501),
- typeof(Mid0502),
- typeof(Mid0503),
- typeof(Mid0504)
- });
- watch.Stop();
- Debug.WriteLine("[CustomMIDs] Elapsed time to construct MidInterpreter: " + new TimeSpan(watch.ElapsedTicks));
-
- for (int i = 0; i < 1000000; i++)
- {
-
- watch.Restart();
- var myMid106 = myTEmplate.Parse(mid61);
- watch.Stop();
- total += watch.ElapsedTicks;
- }
- Debug.WriteLine($"[CustomMIDs] Total Elapsed: " + new TimeSpan(total));
- Debug.WriteLine($"[CustomMIDs] Average Elapsed Time: " + new TimeSpan(total / 1000000));
-
- //All MIDs
- watch.Start();
- myTEmplate = new MidInterpreter().UseAllMessages();
- watch.Stop();
- Debug.WriteLine("[AllMIDs] Elapsed time to construct MidInterpreter: " + new TimeSpan(watch.ElapsedTicks));
-
- total = 0;
- for (int i = 0; i < 1000000; i++)
- {
- watch.Restart();
- var myMid500 = myTEmplate.Parse(mid61);
- watch.Stop();
- total += watch.ElapsedTicks;
- }
-
- Debug.WriteLine($"[AllMIDs] Total Elapsed: " + new TimeSpan(total));
- Debug.WriteLine($"[AllMIDs] Average Elapsed Time: " + new TimeSpan(total / 1000000));
- }
- }
-}
diff --git a/src/MIDTesters.Core/MidTester.cs b/src/MIDTesters.Core/MidTester.cs
index 2737c9e2..3acfc628 100644
--- a/src/MIDTesters.Core/MidTester.cs
+++ b/src/MIDTesters.Core/MidTester.cs
@@ -1,8 +1,10 @@
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenProtocolInterpreter;
using System;
+using System.Collections;
using System.Collections.Generic;
using System.Linq;
+using System.Reflection;
using System.Text;
[assembly: Parallelize(Workers = 4, Scope = ExecutionScope.MethodLevel)]
@@ -10,6 +12,8 @@ namespace MIDTesters
{
public abstract class MidTester
{
+ private const int MaxComparisonDepth = 4;
+
protected readonly MidInterpreter _midInterpreter;
public MidTester()
@@ -45,5 +49,121 @@ protected void AssertEqualPackages(IReadOnlyCollection expected, Mid mid,
mid.Header.StationId = mid.Header.SpindleId = null;
CollectionAssert.AreEqual(expected.ToArray(), mid.PackBytes());
}
+
+ ///
+ /// Packs a mid built from its properties (instead of parsed from a package) and asserts both
+ /// the string and the byte array representations match .
+ ///
+ protected void AssertPackedFromProperties(string expected, Mid built, bool useEmptyRevision = false)
+ {
+ if (useEmptyRevision)
+ {
+ built.Header.Revision = 0;
+ }
+
+ built.Header.StationId = built.Header.SpindleId = null;
+ Assert.AreEqual(expected, built.Pack());
+ CollectionAssert.AreEqual(GetAsciiBytes(expected), built.PackBytes());
+ }
+
+ ///
+ /// Reverse of the usual parse/re-pack test: packs a mid built from its properties, asserts the
+ /// package matches, then parses that package back and asserts every data field bound property
+ /// of the parsed mid holds the same value as the built one.
+ ///
+ protected TMid AssertBuildAndParse(string expected, TMid built, bool useEmptyRevision = false) where TMid : Mid
+ {
+ AssertPackedFromProperties(expected, built, useEmptyRevision);
+
+ var parsed = _midInterpreter.Parse(expected);
+ AssertEqualDataFieldProperties(built, parsed, built.Header.StandardizedRevision);
+ return parsed;
+ }
+
+ ///
+ /// Compares every public property decorated with a up to
+ /// between two instances, recursing into the collections a mid may hold.
+ ///
+ protected static void AssertEqualDataFieldProperties(object expected, object actual, int revision)
+ {
+ Assert.IsNotNull(actual, $"Expected an instance of {expected.GetType().Name} but got null");
+
+ foreach (var property in GetDataFieldProperties(expected.GetType(), revision))
+ {
+ AssertEqualValues(property.GetValue(expected),
+ property.GetValue(actual),
+ $"{expected.GetType().Name}.{property.Name}",
+ 0);
+ }
+ }
+
+ private static IEnumerable GetDataFieldProperties(Type type, int revision)
+ {
+ return type.GetProperties(BindingFlags.Public | BindingFlags.Instance)
+ .Where(x => x.GetCustomAttributes()
+ .Any(a => a.Revision <= revision));
+ }
+
+ private static void AssertEqualValues(object expected, object actual, string path, int depth)
+ {
+ if (expected is string || actual is string)
+ {
+ // Setting a property keeps the value as given while parsing hands back the padded field,
+ // so only the content is compared here. The padding itself is already covered by the
+ // exact package assertion made before the parse leg runs.
+ Assert.AreEqual((expected as string)?.Trim() ?? string.Empty,
+ (actual as string)?.Trim() ?? string.Empty,
+ $"{path} does not match");
+ return;
+ }
+
+ if (expected == null && actual == null)
+ return;
+
+ Assert.IsNotNull(expected, $"{path}: built value is null but parsed value is '{actual}'");
+ Assert.IsNotNull(actual, $"{path}: parsed value is null but built value is '{expected}'");
+
+ if (IsComparableValue(expected.GetType()))
+ {
+ Assert.AreEqual(expected, actual, $"{path} does not match");
+ return;
+ }
+
+ if (expected is IEnumerable expectedItems && actual is IEnumerable actualItems)
+ {
+ AssertEqualCollections(expectedItems, actualItems, path, depth);
+ return;
+ }
+
+ if (depth >= MaxComparisonDepth)
+ return;
+
+ foreach (var property in expected.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance))
+ {
+ if (property.GetIndexParameters().Length > 0)
+ continue;
+
+ AssertEqualValues(property.GetValue(expected),
+ property.GetValue(actual),
+ $"{path}.{property.Name}",
+ depth + 1);
+ }
+ }
+
+ private static void AssertEqualCollections(IEnumerable expected, IEnumerable actual, string path, int depth)
+ {
+ var expectedList = expected.Cast