Skip to content

Commit 76d5068

Browse files
Merge pull request #118 from PHOENIXCONTACT/port/feature-iprocessextensions-get-order-and-operation-number
Port IProcessExtensions get order and operation number
2 parents 1192fc3 + d6d936e commit 76d5068

File tree

3 files changed

+93
-4
lines changed

3 files changed

+93
-4
lines changed

src/Moryx.ControlSystem/Processes/IProcessExtensions.cs

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
using Moryx.AbstractionLayer.Products;
1+
using System;
22
using Moryx.AbstractionLayer;
3-
using System;
4-
using System.Collections.Generic;
5-
using System.Text;
3+
using Moryx.AbstractionLayer.Products;
4+
using Moryx.ControlSystem.Recipes;
65

76
namespace Moryx.ControlSystem.Processes
87
{
@@ -66,5 +65,37 @@ public static bool TryModifyProductInstance<TInstance>(this IProcess process, Ac
6665
setter.Invoke(instance);
6766
return true;
6867
}
68+
69+
/// <summary>
70+
/// Returns <see cref="IOrderBasedRecipe.OrderNumber"/> on the <see cref="IProcess"/> using the given <paramref name="process"/>.
71+
/// </summary>
72+
/// <param name="process">The process holding the order number</param>
73+
/// <example>
74+
/// <code>
75+
/// <![CDATA[
76+
/// process.GetOrderNumber()
77+
/// ]]>
78+
/// </code>
79+
/// </example>
80+
public static string GetOrderNumber(this IProcess process)
81+
{
82+
return (process.Recipe as IOrderBasedRecipe)?.OrderNumber;
83+
}
84+
85+
/// <summary>
86+
/// Returns <see cref="IOrderBasedRecipe.OperationNumber"/> on the <see cref="IProcess"/> using the given <paramref name="process"/>.
87+
/// </summary>
88+
/// <param name="process">The process holding the operation number</param>
89+
/// <example>
90+
/// <code>
91+
/// <![CDATA[
92+
/// process.GetOperationNumber()
93+
/// ]]>
94+
/// </code>
95+
/// </example>
96+
public static string GetOperationNumber(this IProcess process)
97+
{
98+
return (process.Recipe as IOrderBasedRecipe)?.OperationNumber;
99+
}
69100
}
70101
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// Copyright (c) 2023, Phoenix Contact GmbH & Co. KG
2+
3+
using Moryx.AbstractionLayer.Recipes;
4+
using Moryx.ControlSystem.Recipes;
5+
6+
namespace Moryx.ControlSystem.Tests.Mocks
7+
{
8+
public class DummyRecipe : ProductionRecipe, IOrderBasedRecipe
9+
{
10+
public string OrderNumber { get; set; }
11+
public string OperationNumber { get; set; }
12+
13+
public DummyRecipe()
14+
{
15+
}
16+
}
17+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// Copyright (c) 2023, Phoenix Contact GmbH & Co. KG
2+
3+
using Moryx.AbstractionLayer;
4+
using Moryx.ControlSystem.Processes;
5+
using Moryx.ControlSystem.Tests.Mocks;
6+
using NUnit.Framework;
7+
8+
namespace Moryx.ControlSystem.Tests
9+
{
10+
[TestFixture]
11+
internal class ProcessExtensionsTest
12+
{
13+
[Test]
14+
public void ShouldReturnOrderNumber()
15+
{
16+
// Arrange
17+
var recipe = new DummyRecipe { OrderNumber = "O10", OperationNumber = "Op082" };
18+
var process = new Process { Recipe = recipe };
19+
20+
// Act
21+
var orderNumber = process?.GetOrderNumber();
22+
23+
// Assert
24+
Assert.That(orderNumber, Is.EqualTo(recipe.OrderNumber));
25+
}
26+
27+
[Test]
28+
public void ShouldReturnOperationNumber()
29+
{
30+
// Arrange
31+
var recipe = new DummyRecipe { OrderNumber = "O10", OperationNumber = "Op082" };
32+
var process = new Process { Recipe = recipe };
33+
34+
// Act
35+
var operationNumber = process?.GetOperationNumber();
36+
37+
// Assert
38+
Assert.That(operationNumber, Is.EqualTo(recipe.OperationNumber));
39+
}
40+
}
41+
}

0 commit comments

Comments
 (0)