package com.digitalpetri.enip;
import com.digitalpetri.enip.commands.Command;
import com.digitalpetri.enip.commands.ListIdentity;
import com.digitalpetri.enip.commands.ListInterfaces;
import com.digitalpetri.enip.commands.Nop;
import com.digitalpetri.enip.commands.RegisterSession;
import com.digitalpetri.enip.commands.SendRRData;
import com.digitalpetri.enip.commands.SendUnitData;
import com.digitalpetri.enip.commands.UnRegisterSession;
import com.digitalpetri.enip.cpf.CpfPacket;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
public class EnipPacketTest extends SerializationTest<EnipPacket> {
@Test(dataProvider = "getCommand")
public void testSerialization(Command command) {
EnipPacket packet = new EnipPacket(
command.getCommandCode(),
1L,
EnipStatus.EIP_SUCCESS,
2L,
command
);
EnipPacket decoded = encodeDecode(packet, EnipPacket::encode, EnipPacket::decode);
assertEquals(packet, decoded);
}
@DataProvider
private static Object[][] getCommand() {
return new Object[][]{
{new ListIdentity()},
{new ListInterfaces()},
{new Nop()},
{new RegisterSession()},
{new SendRRData(new CpfPacket())},
{new SendUnitData(new CpfPacket())},
{new UnRegisterSession()}
};
}
}