95 lines
3.5 KiB
Java
95 lines
3.5 KiB
Java
package haus.nightmare.lib3270j.printer;
|
|
|
|
import haus.nightmare.lib3270j.ConnectionConfig;
|
|
import haus.nightmare.lib3270j.charset.EbcdicTranslator;
|
|
import haus.nightmare.lib3270j.datastream.DataStreamProcessor;
|
|
import haus.nightmare.lib3270j.screen.ScreenBuffer;
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
public class PrinterPhase6Test {
|
|
|
|
private PrinterConfig printerConfig;
|
|
private Telnet3270EP printer;
|
|
private PD3270 pd;
|
|
private EbcdicTranslator translator;
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
printerConfig = new PrinterConfig("localhost", 23, "PRT_LU1");
|
|
printerConfig.setAssociatedDisplayLuName("DSP_LU1");
|
|
pd = new PD3270(printerConfig);
|
|
translator = new EbcdicTranslator("037");
|
|
printer = new Telnet3270EP(printerConfig, pd, translator);
|
|
pd.openPrinter(null);
|
|
}
|
|
|
|
@Test
|
|
public void testConnectionConfigToPrinterConfigMapping() {
|
|
ConnectionConfig ccfg = new ConnectionConfig("10.0.0.1", 992, true);
|
|
ccfg.setLuName("DSP01");
|
|
ccfg.setAssociatedPrinterLu("PRT01");
|
|
ccfg.setCodePage("1047");
|
|
|
|
PrinterConfig pcfg = ccfg.toPrinterConfig();
|
|
assertEquals("10.0.0.1", pcfg.getHost());
|
|
assertEquals(992, pcfg.getPort());
|
|
assertTrue(pcfg.isUseTls());
|
|
assertEquals("PRT01", pcfg.getPrinterLuName());
|
|
assertEquals("DSP01", pcfg.getAssociatedDisplayLuName());
|
|
assertEquals("1047", pcfg.getCodePage());
|
|
}
|
|
|
|
@Test
|
|
public void testDataStreamProcessorEmbeddedScsRouting() {
|
|
ScreenBuffer screen = new ScreenBuffer(haus.nightmare.lib3270j.TerminalModel.IBM_3279_4, translator);
|
|
DataStreamProcessor dsp = new DataStreamProcessor(screen, translator);
|
|
PrintSCS3270 scs = new PrintSCS3270(printerConfig, pd, translator);
|
|
|
|
dsp.setEmbeddedScsProcessor(scs);
|
|
assertSame(scs, dsp.getEmbeddedScsProcessor());
|
|
|
|
byte[] helloEbc = translator.stringToEbcdic("EMBEDDED SCS");
|
|
ByteArrayOutputStream stream = new ByteArrayOutputStream();
|
|
stream.write(helloEbc, 0, helloEbc.length);
|
|
stream.write(PrinterConstants.SCS_NL);
|
|
|
|
byte[] payload = stream.toByteArray();
|
|
dsp.processSCSData(payload, 0, payload.length);
|
|
|
|
String text = pd.getCapturedText();
|
|
assertTrue(text.contains("EMBEDDED SCS"));
|
|
}
|
|
|
|
@Test
|
|
public void testQueryReplyBuilderAuxDevice() {
|
|
ScreenBuffer screen = new ScreenBuffer(haus.nightmare.lib3270j.TerminalModel.IBM_3279_4, translator);
|
|
haus.nightmare.lib3270j.datastream.QueryReplyBuilder qrb = new haus.nightmare.lib3270j.datastream.QueryReplyBuilder(screen);
|
|
|
|
byte[] auxDev = qrb.buildAuxDevice();
|
|
assertNotNull(auxDev);
|
|
assertTrue(auxDev.length >= 10);
|
|
}
|
|
|
|
@Test
|
|
public void testTelnet3270EPClientFacade() {
|
|
Telnet3270EPClient client = new Telnet3270EPClient(printerConfig);
|
|
assertNotNull(client.getPD());
|
|
assertNotNull(client.getSCS());
|
|
assertNotNull(client.getPrintPS());
|
|
assertNotNull(client.getConfig());
|
|
|
|
// Test direct print through client
|
|
byte[] testText = translator.stringToEbcdic("CLIENT PRINT");
|
|
client.printDirectBytes(testText, 0, testText.length);
|
|
client.getSCS().flushLineBuffer();
|
|
|
|
String captured = client.getPD().getCapturedText();
|
|
assertTrue(captured.contains("CLIENT PRINT"));
|
|
}
|
|
}
|