Files
Sharp7/Sharp7.Tests/ClientTest.cs
2020-06-05 17:34:57 +02:00

190 lines
5.2 KiB
C#

using System;
using Shouldly;
using Xunit;
namespace Sharp7.Tests
{
public class ClientTest : ServerClientTestBase
{
[Fact]
public void ClientIsNotNull()
{
Client.ShouldNotBeNull();
}
[Fact]
public void ServerIsNotNull()
{
Server.ShouldNotBeNull();
}
[Fact]
public void Timeout()
{
Client.ConnTimeout.ShouldBe(2000);
}
[Fact]
public void Connected()
{
Client.Connected.ShouldBe(true);
}
[Fact]
public void Port()
{
Client.PLCPort.ShouldBe(102);
}
[Fact]
public void ReadWriteDb()
{
var bytes = new byte[] { 1, 2, 3 };
var index = 3;
Server.RegisterArea(S7Server.SrvAreaDB, index, ref bytes, bytes.Length);
var buffer = new byte[bytes.Length];
var rc = Client.DBRead(index, 0, bytes.Length, buffer);
//test read
rc.ShouldBe(0);
buffer.ShouldBe(bytes);
buffer = new byte[] { 3, 2, 1 };
rc = Client.DBWrite(index, 0, bytes.Length, buffer);
//test write
rc.ShouldBe(0);
bytes.ShouldBe(buffer);
}
[Fact]
public void ReadWriteAb()
{
var bytes = new byte[] { 1, 2, 3 };
Server.RegisterArea(S7Server.SrvAreaPa, 0, ref bytes, bytes.Length);
var buffer = new byte[bytes.Length];
var rc = Client.ABRead(0, bytes.Length, buffer);
//test read
rc.ShouldBe(0);
buffer.ShouldBe(bytes);
buffer = new byte[] { 3, 2, 1 };
rc = Client.ABWrite(0, bytes.Length, buffer);
//test write
rc.ShouldBe(0);
bytes.ShouldBe(buffer);
}
[Fact]
public void ReadWriteCt()
{
var bytes = new byte[] { 0,1,2,3,4,5,6,7,8};
var index = 3;
Server.RegisterArea(S7Server.SrvAreaCt, index, ref bytes, bytes.Length/2);
var buffer = new ushort[2];
var rc = Client.CTRead(0, 2, buffer);
//test read
rc.ShouldBe(0);
buffer.ShouldBe(new ushort[]{0x0100,0x0302});
buffer = new ushort[] {0x0403, 0x0201 };
rc = Client.CTWrite(0, 2, buffer);
//test write
rc.ShouldBe(0);
bytes.ShouldBe(new byte[] { 3, 4, 1, 2, 4, 5, 6, 7, 8 });
}
[Fact]
public void ReadWriteMb()
{
var bytes = new byte[] { 0, 1, 2};
Server.RegisterArea(S7Server.SrvAreaMk, 0, ref bytes, bytes.Length);
var buffer = new byte[bytes.Length];
var rc = Client.MBRead(0,bytes.Length,buffer);
//test read
rc.ShouldBe(0);
buffer.ShouldBe(bytes);
buffer = new byte[] { 3, 2, 1 };
rc = Client.MBWrite(0, bytes.Length, buffer);
//test write
rc.ShouldBe(0);
bytes.ShouldBe(buffer);
}
[Fact]
public void ReadWriteTm()
{
var bytes = new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
var index = 5;
Server.RegisterArea(S7Server.SrvAreaTm, index, ref bytes, bytes.Length / 2);
var buffer = new ushort[2];
var rc = Client.TMRead(0, 2, buffer);
//test read
rc.ShouldBe(0);
buffer.ShouldBe(new ushort[] { 0x0100, 0x0302 });
buffer = new ushort[] { 0x0403, 0x0201 };
rc = Client.TMWrite(0, 2, buffer);
//test write
rc.ShouldBe(0);
bytes.ShouldBe(new byte[] {3, 4, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11});
}
[Fact]
public void ReadWriteEb()
{
var bytes = new byte[] { 0, 1, 2 };
Server.RegisterArea(S7Server.SrvAreaPe, 0, ref bytes, bytes.Length);
var buffer = new byte[bytes.Length];
var rc = Client.EBRead(0, bytes.Length, buffer);
//test read
rc.ShouldBe(0);
buffer.ShouldBe(bytes);
buffer = new byte[] { 3, 2, 1 };
rc = Client.EBWrite(0, bytes.Length, buffer);
//test write
rc.ShouldBe(0);
bytes.ShouldBe(buffer);
}
[Fact]
public void Multivars()
{
var bytes = new byte[] { 1, 2, 3,4,5,6,7,8,9,0 };
var index = 30;
Server.RegisterArea(S7Server.SrvAreaDB, index, ref bytes, bytes.Length);
var buffer = new byte[bytes.Length];
var multivar = new S7MultiVar(Client);
multivar.ShouldNotBeNull();
multivar.Add(new Sharp7.S7Consts.S7Tag(){Area = (int)S7Area.DB, DBNumber = index, Elements = 2,Start = 0, WordLen = 2}, ref buffer).ShouldBe(true);
multivar.Read().ShouldBe(0);
multivar.Add(new Sharp7.S7Consts.S7Tag() { Area = (int)S7Area.DB, DBNumber = index, Elements = 2, Start = 0, WordLen = 2 }, ref buffer).ShouldBe(true);
multivar.Write().ShouldBe(0);
}
}
}