public void When_Passed_Read_Header_Command_Should_Return_HeaderFromState_And_Argument_1() { //Arrange StringBuilder fiscalPrinterHeader = new StringBuilder(); fiscalPrinterHeader.AppendLine(); fiscalPrinterHeader.AppendLine("Lorem ipsum dolor sit amet."); fiscalPrinterHeader.AppendLine("---------------------------"); fiscalPrinterHeader.AppendLine("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque risus."); fiscalPrinterHeader.AppendLine(" XX XX XX "); var command = new ThermalFiscalPrinterCommand(null, "#u", null); var commandHandler = new ReadingHeaderCommandHandler(command); var fiscalPrinterState = new FiscalPrinterState() { FiscalPrinterHeader = fiscalPrinterHeader.ToString() }; //Act var result = commandHandler.Handle(fiscalPrinterState); //Assert var responseCommandString = result.OutputCommand.ToString(); var indexOfCommandName = responseCommandString.IndexOf("#U"); var recivedFiscalPrinterHeader = responseCommandString.Substring(indexOfCommandName + 2, responseCommandString.Length - (indexOfCommandName + 6)); var commandArguments = responseCommandString.Substring(0, indexOfCommandName).Substring(3).Split(';'); Assert.AreEqual(fiscalPrinterHeader.ToString(), recivedFiscalPrinterHeader); Assert.AreEqual(1, commandArguments.Length); Assert.AreEqual("1", commandArguments[0]); }
public void When_Pass_Command_With_Right_Parameters_Shoudl_Return_Correct_Printout() { //Arrange var crChar = (char)ThermalFiscalPrinterSimulatorLibraries.Constants.ASCICodeCR; var cashierLogin = "******"; var printerCode = "993A"; var passedParameters = $"{cashierLogin}{crChar}{printerCode}{crChar}"; var state = new FiscalPrinterState() { TimeDiffrenceInMinutes = 0, FiscalPrinterHeader = "HEADER TEST".PadCenter(ThermalFiscalPrinterSimulatorLibraries.Constants.ReciptWidth) }; var command = new ThermalFiscalPrinterCommand(null, "#p", passedParameters, string.Empty, string.Empty); var handler = new CashierLogoutCommandHandler(command); //Act var result = handler.Handle(state); var dateToString = DateTime.Now.ToString("yyyy-MM-dd"); var timeToString = DateTime.Now.ToString("HH-mm-ss"); //Assert StringBuilder expectedPrintout = new StringBuilder(); expectedPrintout.AppendLine(" HEADER TEST "); expectedPrintout.AppendLine($"{dateToString} 1"); expectedPrintout.AppendLine(" N I E F I S K A L N Y "); expectedPrintout.AppendLine("Zakończenie pracy kasjera"); expectedPrintout.AppendLine($"Kasjer {cashierLogin}"); expectedPrintout.AppendLine($"Numer kasy {printerCode}"); expectedPrintout.AppendLine(); expectedPrintout.AppendLine(" N I E F I S K A L N Y "); expectedPrintout.AppendLine($" #{printerCode} {cashierLogin} {timeToString}"); expectedPrintout.AppendLine(" 12345678 "); expectedPrintout.AppendLine(); Assert.AreEqual(expectedPrintout.ToString(), result.OutputReciptBuffer); }
public void When_Passed_Read_Header_Is_Null_Command_Should_Return_HeaderFromState_And_Argument_1() { //Arrange var command = new ThermalFiscalPrinterCommand(null, "#u", null); var commandHandler = new ReadingHeaderCommandHandler(command); var fiscalPrinterState = new FiscalPrinterState() { FiscalPrinterHeader = null }; //Act var result = commandHandler.Handle(fiscalPrinterState); //Assert var responseCommandString = result.OutputCommand.ToString(); var indexOfCommandName = responseCommandString.IndexOf("#U"); var recivedFiscalPrinterHeader = responseCommandString.Substring(indexOfCommandName + 2, responseCommandString.Length - (indexOfCommandName + 6)); var commandArguments = responseCommandString.Substring(0, indexOfCommandName).Substring(3).Split(';'); Assert.AreEqual(string.Empty, recivedFiscalPrinterHeader); Assert.AreEqual(1, commandArguments.Length); Assert.AreEqual("1", commandArguments[0]); }
public void CancelReceipt() { if (UserInterfaceShowing) { _printerUserInterface.CancelReceipt(); _state = FiscalPrinterState.Open; } }
public void EndReceipt(string message) { if (UserInterfaceShowing && (_state == FiscalPrinterState.FiscalReceipt)) { _printerUserInterface.EndReceipt(message); _state = FiscalPrinterState.Open; } }
public void ManagementReportEnd() { if (UserInterfaceShowing && (_state == FiscalPrinterState.ManagementReport)) { _printerUserInterface.ManagementReportEnd(); _state = FiscalPrinterState.Open; } }
private static void ChangePTURatesByCommand(FiscalPrinterState fiscalPrinterState, string[] ptuParameters) { var polishCulture = CultureInfo.CreateSpecificCulture("pl-PL"); if (ptuParameters.Length > 0) { fiscalPrinterState.PTURates[(int)PTU.A].ActualPercentageValue = double.TryParse(ptuParameters[0], NumberStyles.Number, polishCulture, out double rateValue) ? rateValue : Constants.PTUInactiveRate; } if (ptuParameters.Length > 1) { fiscalPrinterState.PTURates[(int)PTU.B].ActualPercentageValue = double.TryParse(ptuParameters[1], NumberStyles.Number, polishCulture, out double rateValue) ? rateValue : Constants.PTUInactiveRate; } if (ptuParameters.Length > 2) { fiscalPrinterState.PTURates[(int)PTU.C].ActualPercentageValue = double.TryParse(ptuParameters[2], NumberStyles.Number, polishCulture, out double rateValue) ? rateValue : Constants.PTUInactiveRate; } if (ptuParameters.Length > 3) { fiscalPrinterState.PTURates[(int)PTU.D].ActualPercentageValue = double.TryParse(ptuParameters[3], NumberStyles.Number, polishCulture, out double rateValue) ? rateValue : Constants.PTUInactiveRate; } if (ptuParameters.Length > 4) { fiscalPrinterState.PTURates[(int)PTU.E].ActualPercentageValue = double.TryParse(ptuParameters[4], NumberStyles.Number, polishCulture, out double rateValue) ? rateValue : Constants.PTUInactiveRate; } if (ptuParameters.Length > 5) { fiscalPrinterState.PTURates[(int)PTU.F].ActualPercentageValue = double.TryParse(ptuParameters[5], NumberStyles.Number, polishCulture, out double rateValue) ? rateValue : Constants.PTUInactiveRate; } if (ptuParameters.Length > 6) { fiscalPrinterState.PTURates[(int)PTU.G].ActualPercentageValue = double.TryParse(ptuParameters[6], NumberStyles.Number, polishCulture, out double rateValue) ? rateValue : Constants.PTUInactiveRate; } else { fiscalPrinterState.PTURates[(int)PTU.G].ActualPercentageValue = Constants.PTUTaxFreeRate; } }
private string PrintPTUValuesOnRecipt(PTU PTUType, FiscalPrinterState state) { var ptuValue = state.PTURates.First(m => m.Type == PTUType).ActualPercentageValue; var ptuRateString = ptuValue == Constants.PTUInactiveRate ? "---" : ptuValue == Constants.PTUTaxFreeRate ? "SP.ZW.PTU" : ptuValue.ToString("0.00", CultureInfo.CreateSpecificCulture("pl-PL")) + " %"; var numberOfSpace = Constants.ReciptWidth - ptuRateString.Length; return($"PTU {PTUType.ToString()}".PadRight(numberOfSpace) + ptuRateString); }
public void BeginReceipt(string customerTaxNo) { if (UserInterfaceShowing) { if (_printerUserInterface.BeginReceipt(customerTaxNo)) { _state = FiscalPrinterState.FiscalReceipt; } } }
public void Open(string deviceId) { if (UserInterfaceShowing) { if (_printerUserInterface.OpenPrinter()) { _state = FiscalPrinterState.Open; } } }
public bool ManagementReportTryBegin() { if (UserInterfaceShowing && (_state == FiscalPrinterState.Open)) { if (_printerUserInterface.BeginManagementReport()) { _state = FiscalPrinterState.ManagementReport; } } return(_state == FiscalPrinterState.ManagementReport); }
public void When_Pass_Any_Parameters_Should_Return_Empty_Object_And_Mark_Fiscal_PrinterLastCommand_As_True() { //Arrange var fiscalPrinterState = new FiscalPrinterState(); var command = new ThermalFiscalPrinterCommand(null, "BEL", null, string.Empty, string.Empty); var _bELCommandHandler = new BELCommandHandler(command); //Act var result = _bELCommandHandler.Handle(fiscalPrinterState); //Assert result.Should().NotBeNull(); fiscalPrinterState.LastCommandSuccess.Should().BeTrue(); }
public void When_Pass_Fiscal_Printer_State_As_Null_Should_Throws_NullReferenceException() { //Arrange FiscalPrinterState state = null; //Act //Assert Assert.Throws <System.NullReferenceException>(() => { _commandHandler.Handle(state); }); }
public void When_RTC_Clock_Not_Initialize_Should_Throw_Error() { //Arrange var state = new FiscalPrinterState(); var command = new ThermalFiscalPrinterCommand(null, "#p", null, string.Empty, string.Empty); var handler = new CashierLogoutCommandHandler(command); //Act //Assert Assert.Throws <FP_IllegalOperationException>(() => { handler.Handle(state); }); }
public void When_Pass_Null_As_Fiscal_Printer_State_Should_Return_Empty_Object() { //Arrange FiscalPrinterState fiscalPrinterState = null; var command = new ThermalFiscalPrinterCommand(null, "BEL", null, string.Empty, string.Empty); var _bELCommandHandler = new BELCommandHandler(command); //Act var result = _bELCommandHandler.Handle(null); //Assert result.Should().NotBeNull(); fiscalPrinterState.Should().BeNull(); }
public void When_Passed_Command_Without_Arguments_Should_Throw_Exception() { //Arrange var fiscalPrinterState = new FiscalPrinterState(); var command = new ThermalFiscalPrinterCommand(new List <string> { }, "$d", string.Empty); var commandHandler = new SendLineToClientDisplayCommandHandler(command); //Act //Assert Assert.Throws <FP_WrongNumberOfArgumentsException>(() => { commandHandler.Handle(fiscalPrinterState); }); }
public void When_Passed_Command_With_Bad_First_Argument_Should_Throw_Exception(int firstCommandArgument) { //Arrange var fiscalPrinterState = new FiscalPrinterState(); var command = new ThermalFiscalPrinterCommand(new List <string> { firstCommandArgument.ToString() }, "$d", string.Empty); var commandHandler = new SendLineToClientDisplayCommandHandler(command); //Act //Assert Assert.Throws <FP_BadFormatOfArgumentException>(() => { commandHandler.Handle(fiscalPrinterState); }); }
public void When_Passed_Command_With_Parameter_101_Or_102_But_Text_To_Display_Has_Over_20_Characters_Then_Should_Throw_Error(int firstCommandArgument) { //Arrange var passedTooLongText = "".PadRight(21, 'x'); var fiscalPrinterState = new FiscalPrinterState(); var command = new ThermalFiscalPrinterCommand(new List <string> { firstCommandArgument.ToString() }, "$d", passedTooLongText); var commandHandler = new SendLineToClientDisplayCommandHandler(command); //Act //Assert Assert.Throws <FP_BadFormatOfArgumentException>(() => { commandHandler.Handle(fiscalPrinterState); }); }
public void When_Passed_Header_Has_More_Then_500_Characters_Should_Throw_FP_Illegal_Exception() { //Arrange var reciptHeader = string.Join("", Enumerable.Repeat("A", 501)); var state = new FiscalPrinterState(); var command = new ThermalFiscalPrinterCommand(null, null, reciptHeader + "?"); var commandHandler = new SetupReciptHeaderCommandHandler(command); //Act //Assert Assert.Throws <FP_IllegalOperationException>(() => { commandHandler.Handle(state); }); }
public void When_Pass_Command_Without_Parameters_Should_Throw_Error() { //Arrange var state = new FiscalPrinterState() { TimeDiffrenceInMinutes = 0 }; var command = new ThermalFiscalPrinterCommand(null, "#p", string.Empty, string.Empty, string.Empty); var handler = new CashierLogoutCommandHandler(command); //Act //Assert Assert.Throws <FP_WrongNumberOfArgumentsException>(() => { handler.Handle(state); }); }
public void When_Is_In_Transaction_State_Should_Throw_Error() { //Arrange var state = new FiscalPrinterState() { TimeDiffrenceInMinutes = 0, IsInTransactionState = true }; var command = new ThermalFiscalPrinterCommand(null, "#p", null, string.Empty, string.Empty); var handler = new CashierLogoutCommandHandler(command); //Act //Assert Assert.Throws <FP_IllegalOperationException>(() => { handler.Handle(state); }); }
public void When_First_Argument_Is_Not_Numeric_Should_Throw_FP_BadFormatOfArgumentException() { //Arrange FiscalPrinterState state = new FiscalPrinterState(); var PnArgs = new List <string>() { "d3" }; ThermalFiscalPrinterCommand command = new ThermalFiscalPrinterCommand(PnArgs, null, null, null, null); ChangePTURatesCommandHandler handler = new ChangePTURatesCommandHandler(command); //Act //Assert Assert.Throws <FP_BadFormatOfArgumentException>(() => { handler.Handle(null); }); }
public void When_First_Argument_Is_More_Then_7_Should_Throw_FP_IllegalOperationException() { //Arrange FiscalPrinterState state = new FiscalPrinterState(); var PnArgs = new List <string>() { "8" }; ThermalFiscalPrinterCommand command = new ThermalFiscalPrinterCommand(PnArgs, null, null, null, null); ChangePTURatesCommandHandler handler = new ChangePTURatesCommandHandler(command); //Act //Assert Assert.Throws <FP_IllegalOperationException>(() => { handler.Handle(state); }); }
public void When_Pass_6_Right_Parameters_Should_Return_Correct() { //Arrange FiscalPrinterState state = new FiscalPrinterState(); var PnArgs = new List <string>() { "5" }; ThermalFiscalPrinterCommand command = new ThermalFiscalPrinterCommand(PnArgs, null, "23/7/6/4,5/2", null, null); ChangePTURatesCommandHandler handler = new ChangePTURatesCommandHandler(command); //Act var result = handler.Handle(state); //Assert StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("N I E F I S K A L N Y".PadCenter(Constants.ReciptWidth)); stringBuilder.AppendLine("Z m i a n a s t a w e k P T U".PadCenter(Constants.ReciptWidth)); stringBuilder.AppendLine("Stare PTU:".PadRight(Constants.ReciptWidth)); stringBuilder.AppendLine("PTU A".PadRight(Constants.ReciptWidth - 3) + "---"); stringBuilder.AppendLine("PTU B".PadRight(Constants.ReciptWidth - 3) + "---"); stringBuilder.AppendLine("PTU C".PadRight(Constants.ReciptWidth - 3) + "---"); stringBuilder.AppendLine("PTU D".PadRight(Constants.ReciptWidth - 3) + "---"); stringBuilder.AppendLine("PTU E".PadRight(Constants.ReciptWidth - 3) + "---"); stringBuilder.AppendLine("PTU F".PadRight(Constants.ReciptWidth - 3) + "---"); stringBuilder.AppendLine("PTU G".PadRight(Constants.ReciptWidth - 3) + "---"); stringBuilder.AppendLine("---------------------------------------------------------------".Substring(0, Constants.ReciptWidth)); stringBuilder.AppendLine("Nowe PTU:".PadRight(Constants.ReciptWidth)); stringBuilder.AppendLine("PTU A".PadRight(Constants.ReciptWidth - 7) + "23,00 %"); stringBuilder.AppendLine("PTU B".PadRight(Constants.ReciptWidth - 6) + "7,00 %"); stringBuilder.AppendLine("PTU C".PadRight(Constants.ReciptWidth - 6) + "6,00 %"); stringBuilder.AppendLine("PTU D".PadRight(Constants.ReciptWidth - 6) + "4,50 %"); stringBuilder.AppendLine("PTU E".PadRight(Constants.ReciptWidth - 6) + "2,00 %"); stringBuilder.AppendLine("PTU F".PadRight(Constants.ReciptWidth - 3) + "---"); stringBuilder.AppendLine("PTU G".PadRight(Constants.ReciptWidth - 9) + "SP.ZW.PTU"); stringBuilder.AppendLine("N I E F I S K A L N Y".PadCenter(Constants.ReciptWidth)); System.Console.WriteLine(result.OutputReciptBuffer); System.Console.WriteLine(stringBuilder.ToString()); Assert.AreEqual(stringBuilder.ToString(), result.OutputReciptBuffer); }
public void When_Passed_Command_With_Argument_102_And_Paramer_Has_Less_Then_20_Characters_Should_Return_Correct_Output_Line_Display_Result() { //Arrange var passedParameterText = "".PadRight(20, 'x'); var expectedResult = new ClientLineDisplayOutput() { LineNumber = 1, OutputText = passedParameterText }; var fiscalPrinterState = new FiscalPrinterState(); var command = new ThermalFiscalPrinterCommand(new List <string> { "102" }, "$d", passedParameterText); var commandHandler = new SendLineToClientDisplayCommandHandler(command); //Act var result = commandHandler.Handle(fiscalPrinterState); //Assert Assert.IsNotNull(result); Assert.AreEqual(expectedResult.LineNumber, result.ClientLineDisplayOutputLine.LineNumber); Assert.AreEqual(expectedResult.OutputText, result.ClientLineDisplayOutputLine.OutputText); }
public void When_First_Argument_Not_Equals_All_Argument_Count_Without_First_Should_Throw_() { //Arrange FiscalPrinterState state = new FiscalPrinterState(); System.Console.WriteLine(state.PTURates[(int)PTU.A]); var PnArgs = new List <string>() { "3" }; ThermalFiscalPrinterCommand command = new ThermalFiscalPrinterCommand(PnArgs, null, "3/4", null, null); ChangePTURatesCommandHandler handler = new ChangePTURatesCommandHandler(command); //Act //Assert Assert.Throws <FP_WrongNumberOfArgumentsException>(() => { handler.Handle(state); }); }
public void When_Pass_Printer_Code_With_More_Then_8_Characters_Should_Throw_Error() { //Arrange var crChar = (char)ThermalFiscalPrinterSimulatorLibraries.Constants.ASCICodeCR; var cashierLogin = "******"; var printerCode = "as3".PadRight(9); var passedParameters = $"{cashierLogin}{crChar}{printerCode}{crChar}"; var state = new FiscalPrinterState() { TimeDiffrenceInMinutes = 0 }; var command = new ThermalFiscalPrinterCommand(null, "#p", passedParameters, string.Empty, string.Empty); var handler = new CashierLogoutCommandHandler(command); //Act //Assert Assert.Throws <FP_BadFormatOfArgumentException>(() => { handler.Handle(state); }); }
public void When_Pass_Fiscal_Printer_State_Should_Return_OutputCommand_With_One_Byte_Result(bool isInOnlineMode, bool IsInOutOfPaperMode, bool isInInternalErrorMode, byte expectedResult) { //Arrange var state = new FiscalPrinterState() { IsInOnlineMode = isInOnlineMode, IsInOutOfPaperState = IsInOutOfPaperMode, IsInInternalErrorState = isInInternalErrorMode }; //Act var result = _commandHandler.Handle(state); //Assert var expected = new List <byte> { expectedResult }; Assert.IsNotNull(result.OutputCommand); Assert.AreEqual(result.OutputReciptBuffer, string.Empty); Assert.AreEqual(expected, result.OutputCommand.ToBytesArray()); }
private CommandHandlerResponse CancelTransactionHandle(FiscalPrinterState fiscalPrinterState) { fiscalPrinterState.IsInTransactionState = false; if (!fiscalPrinterState.SlipLines.Any()) { return(new CommandHandlerResponse()); } StringBuilder cancelReceiptBuilder = new StringBuilder(); cancelReceiptBuilder.AppendLine("A N U L O W A N Y".PadCenter(Constants.ReciptWidth)); var commandParameters = command.Parameters.Split((char)Constants.ASCICodeCR).Where(m => !string.IsNullOrWhiteSpace(m)).ToArray(); var printerNo = ""; var cashierLogin = ""; var actualTime = DateTime.Now.AddMinutes(fiscalPrinterState.TimeDiffrenceInMinutes).ToString("HH:mm"); var specialNumberRow = ""; if (commandParameters.Length == 1) { specialNumberRow = commandParameters[0].PadCenter(Constants.ReciptWidth); } else if (commandParameters.Length > 0) { printerNo = commandParameters[0]; cashierLogin = commandParameters.Length > 1 ? commandParameters[1] : ""; specialNumberRow = commandParameters.Length == 3 ? commandParameters[2].PadCenter(Constants.ReciptWidth) : ""; cancelReceiptBuilder.AppendLine($" #{printerNo} {cashierLogin}".PadRight(Constants.ReciptWidth - actualTime.Length) + actualTime); } if (!string.IsNullOrWhiteSpace(specialNumberRow)) { cancelReceiptBuilder.AppendLine(specialNumberRow); } return(new CommandHandlerResponse(cancelReceiptBuilder.ToString())); }
public void When_Pass_Fiscal_Printer_State_Should_Return_OutputCommand_With_One_Byte_Result(bool isInFiscalState, bool lastCommandSuccess, bool isInTransactionState, bool lastTransactionSuccess, byte expectedResult) { //Arrange var state = new FiscalPrinterState() { IsInFiscalState = isInFiscalState, LastCommandSuccess = lastCommandSuccess, IsInTransactionState = isInTransactionState, LastTransactionSuccess = lastTransactionSuccess }; //Act var result = _commandHandler.Handle(state); //Assert var expected = new List <byte> { expectedResult }; Assert.IsNotNull(result.OutputCommand); Assert.AreEqual(result.OutputReciptBuffer, string.Empty); Assert.AreEqual(expected, result.OutputCommand.ToBytesArray()); }