-
-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathUnitTest1.cs
More file actions
98 lines (79 loc) · 2.81 KB
/
UnitTest1.cs
File metadata and controls
98 lines (79 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Website: https://www.blazor.zone or https://argozhang.github.io/
namespace UnitTestOpcDa;
using BootstrapBlazor.OpcDa;
using Microsoft.Extensions.DependencyInjection;
using System.Runtime.Versioning;
[SupportedOSPlatform("windows")]
public class UnitTest1
{
[Fact]
public void Write_Ok()
{
var sc = new ServiceCollection();
sc.AddOpcDaServer();
var sp = sc.BuildServiceProvider();
var server = sp.GetRequiredService<IOpcDaServer>();
var ret = server.Connect("opcda://localhost/Kepware.KEPServerEX.V6");
Assert.True(ret);
Assert.True(server.IsConnected);
var values = server.Read("Simulation Examples.Functions.Ramp1", "Simulation Examples.Functions.Ramp2");
Assert.Equal(2, values.Count);
Assert.All(values, v => Assert.Equal(Quality.Good, v.Quality));
var results = server.Write([
new OpcWriteItem()
{
Name = "Channel1.Device1.Tag2",
Value = 123
}
]);
Assert.All(results, v => Assert.True(v.Result));
server.Disconnect();
Assert.False(server.IsConnected);
server.Dispose();
}
[Fact]
public async Task Subscription_Ok()
{
var sc = new ServiceCollection();
sc.AddOpcDaServer();
var sp = sc.BuildServiceProvider();
var server = sp.GetRequiredService<IOpcDaServer>();
server.Connect("opcda://localhost/Kepware.KEPServerEX.V6");
var subscription = server.CreateSubscription("Test", 100);
subscription.AddItems(
[
"Channel1.Device1.Tag1",
"Channel1.Device1.Tag2"
]);
var tcs = new TaskCompletionSource();
var values = new List<OpcReadItem>();
subscription.KeepLastValue = true;
subscription.DataChanged = items =>
{
values.Clear();
values.AddRange(items);
tcs.TrySetResult();
};
await tcs.Task;
Assert.Equal(2, values.Count);
await Task.Delay(150);
Assert.Single(values);
server.CancelSubscription(subscription);
server.Disconnect();
server.Dispose();
}
[Fact]
public void Browser_Ok()
{
var sc = new ServiceCollection();
sc.AddOpcDaServer();
var sp = sc.BuildServiceProvider();
var server = sp.GetRequiredService<IOpcDaServer>();
server.Connect("opcda://localhost/Kepware.KEPServerEX.V6");
var elements = server.Browse("Channel1", new OpcBrowseFilters(), out var position);
Assert.Equal(3, elements.Length);
Assert.Null(position);
}
}