// Path: src/main/java/net/epsilony/utils/codec/modbus/ModbusRegisterType.java
// public enum ModbusRegisterType {
// COIL, DISCRETE_INPUT, HOLDING, INPUT
// }
// 
// Path: src/main/java/net/epsilony/utils/codec/modbus/reqres/ModbusResponse.java
// public abstract class ModbusResponse {
//     protected int transectionId;
//     protected int unitId;
// 
//     public ModbusResponse(int transectionId, int unitId) {
//         this.transectionId = transectionId;
//         this.unitId = unitId;
//     }
// 
//     public ModbusResponse() {
//     }
// 
//     public int getTransectionId() {
//         return transectionId;
//     }
// 
//     public void setTransectionId(int transectionId) {
//         this.transectionId = transectionId;
//     }
// 
//     public int getUnitId() {
//         return unitId;
//     }
// 
//     public void setUnitId(int unitId) {
//         this.unitId = unitId;
//     }
// 
//     public abstract int getFunctionCode();
// 
//     public void encode(ByteBuf out) {
//         out.writeShort(transectionId);
//         out.writeShort(0);
//         out.writeShort(getPduCoreLength() + 2);
//         out.writeByte(unitId);
//         out.writeByte(getFunctionCode());
//         writePduCore(out);
//     }
// 
//     public abstract void writePduCore(ByteBuf out);
// 
//     public abstract int getPduCoreLength();
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + getFunctionCode();
//         result = prime * result + transectionId;
//         result = prime * result + unitId;
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj)
//             return true;
//         if (obj == null)
//             return false;
//         if (getClass() != obj.getClass())
//             return false;
//         ModbusResponse other = (ModbusResponse) obj;
//         if (getFunctionCode() != other.getFunctionCode())
//             return false;
//         if (transectionId != other.transectionId)
//             return false;
//         if (unitId != other.unitId)
//             return false;
//         return true;
//     }
// 
// }


import static org.junit.Assert.assertEquals;
import java.util.Random;
import org.junit.Test;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import net.epsilony.utils.codec.modbus.ModbusRegisterType;
import net.epsilony.utils.codec.modbus.reqres.ModbusResponse;
package net.epsilony.utils.codec.modbus.func;





public class ReadRegistersFunctionTest {

    public ReadRegistersFunction mockFunction() {
        return new ReadRegistersFunction() {

            @Override
            public void decodeResponseData(ByteBuf data, ModbusResponse response) {
                throw new UnsupportedOperationException();

            }

            @Override
            protected void checkRegisterType(ModbusRegisterType registerType) {
            }

// Path: src/main/java/net/epsilony/utils/codec/modbus/ModbusRegisterType.java
// public enum ModbusRegisterType {
// COIL, DISCRETE_INPUT, HOLDING, INPUT
// }
// 
// Path: src/main/java/net/epsilony/utils/codec/modbus/reqres/ModbusResponse.java
// public abstract class ModbusResponse {
//     protected int transectionId;
//     protected int unitId;
// 
//     public ModbusResponse(int transectionId, int unitId) {
//         this.transectionId = transectionId;
//         this.unitId = unitId;
//     }
// 
//     public ModbusResponse() {
//     }
// 
//     public int getTransectionId() {
//         return transectionId;
//     }
// 
//     public void setTransectionId(int transectionId) {
//         this.transectionId = transectionId;
//     }
// 
//     public int getUnitId() {
//         return unitId;
//     }
// 
//     public void setUnitId(int unitId) {
//         this.unitId = unitId;
//     }
// 
//     public abstract int getFunctionCode();
// 
//     public void encode(ByteBuf out) {
//         out.writeShort(transectionId);
//         out.writeShort(0);
//         out.writeShort(getPduCoreLength() + 2);
//         out.writeByte(unitId);
//         out.writeByte(getFunctionCode());
//         writePduCore(out);
//     }
// 
//     public abstract void writePduCore(ByteBuf out);
// 
//     public abstract int getPduCoreLength();
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + getFunctionCode();
//         result = prime * result + transectionId;
//         result = prime * result + unitId;
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj)
//             return true;
//         if (obj == null)
//             return false;
//         if (getClass() != obj.getClass())
//             return false;
//         ModbusResponse other = (ModbusResponse) obj;
//         if (getFunctionCode() != other.getFunctionCode())
//             return false;
//         if (transectionId != other.transectionId)
//             return false;
//         if (unitId != other.unitId)
//             return false;
//         return true;
//     }
// 
// }


// Path: src/test/java/net/epsilony/utils/codec/modbus/func/ReadRegistersFunctionTest.java
import static org.junit.Assert.assertEquals;
import java.util.Random;
import org.junit.Test;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import net.epsilony.utils.codec.modbus.ModbusRegisterType;
import net.epsilony.utils.codec.modbus.reqres.ModbusResponse;

package net.epsilony.utils.codec.modbus.func;





public class ReadRegistersFunctionTest {

    public ReadRegistersFunction mockFunction() {
        return new ReadRegistersFunction() {

            @Override
            public void decodeResponseData(ByteBuf data, ModbusResponse response) {
                throw new UnsupportedOperationException();

            }

            @Override
            protected void checkRegisterType(ModbusRegisterType registerType) {
            }

            @Override