public void When_FP_is_In_Fiscal_State_And_Pass_6_Date_Arguments_With_Time_Plus_Minus_One_Hour_Should_Return_OK(int numberOfMinutesToAdd) { //Arrange var dateTime = DateTime.Now.AddMinutes(numberOfMinutesToAdd); var dateArguments = new List <string>() { dateTime.Year.ToString().Substring(2, 2), dateTime.Month.ToString(), dateTime.Day.ToString(), dateTime.Hour.ToString(), dateTime.Minute.ToString(), dateTime.Second.ToString() }; _state.IsInFiscalState = true; var command = new ThermalFiscalPrinterCommand(dateArguments, "$c", null, null, null); var handler = new SetupClockCommandHandler(command); //Act _ = handler.Handle(_state); //Assert Assert.AreEqual(_state.TimeDiffrenceInMinutes, numberOfMinutesToAdd); }
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_Pass_6_Parameters_From_DateTime_Now_Should_Calculate_Right_Diff_State_Value_And_Create_Output_Commands(int numberOfMinutesToAdd, int expectedValue) { //Arrange var dateTime = DateTime.Now.AddMinutes(numberOfMinutesToAdd); var dateArguments = new List <string>() { dateTime.Year.ToString().Substring(2, 2), dateTime.Month.ToString(), dateTime.Day.ToString(), dateTime.Hour.ToString(), dateTime.Minute.ToString(), dateTime.Second.ToString() }; var command = new ThermalFiscalPrinterCommand(dateArguments, "$c", null, null, null); var handler = new SetupClockCommandHandler(command); //Act _ = handler.Handle(_state); //Assert Assert.AreEqual(_state.TimeDiffrenceInMinutes, expectedValue); }
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_FP_is_In_Fiscal_State_And_Pass_6_Date_Arguments_With_Time_Plus_Minus__More_Then_One_Hour_Should_Throw_FP(int numberOfMinutesToAdd) { //Arrange var dateTime = DateTime.Now.AddMinutes(numberOfMinutesToAdd); var dateArguments = new List <string>() { dateTime.Year.ToString().Substring(2, 2), dateTime.Month.ToString(), dateTime.Day.ToString(), dateTime.Hour.ToString(), dateTime.Minute.ToString(), dateTime.Second.ToString() }; _state.IsInFiscalState = true; var command = new ThermalFiscalPrinterCommand(dateArguments, "$c", null, null, null); var handler = new SetupClockCommandHandler(command); //Act //Assert Assert.Throws <FP_IllegalOperationException>(() => { _ = handler.Handle(_state); }); }
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 When_Pass_Any_Parameters_Should_Throw_TaskCanceledException() { //Assert var command = new ThermalFiscalPrinterCommand(null, null, null, string.Empty, string.Empty); CANCommandHandler canCommandHandler = new CANCommandHandler(command); //Act Action handleAction = () => canCommandHandler.Handle(null); //Assert handleAction.Should().Throw <TaskCanceledException>(); }
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_Arguments_Not_Passed_Should_Throw_FP_WrongNumberOfArgumentsException() { //Arrange ThermalFiscalPrinterCommand command = new ThermalFiscalPrinterCommand(null, null, null, null, null); ChangePTURatesCommandHandler handler = new ChangePTURatesCommandHandler(command); //Act //Assert Assert.Throws <FP_WrongNumberOfArgumentsException>(() => { handler.Handle(null); }); }
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_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_6_Parameters_But_One_No_Numeric_Should_Throw_FP_BadFormatOfArgumentException() { //Arrange var dateArguments = Enumerable.Range(1, 5).Select(m => m.ToString()).Append("6y"); var command = new ThermalFiscalPrinterCommand(dateArguments, "$c", null, null, null); var handler = new SetupClockCommandHandler(command); //Act //Assert Assert.Throws <FP_BadFormatOfArgumentException>(() => { handler.Handle(_state); }); }
public void When_Pass_Less_Then_6_Parameters_Should_Throw_FP_WrongNumberOfArgumentsException(int numberOfParameters) { //Arrange var dateArguments = Enumerable.Range(1, numberOfParameters).Select(m => m.ToString()); var command = new ThermalFiscalPrinterCommand(dateArguments, "$c", null, null, null); var handler = new SetupClockCommandHandler(command); //Act //Assert Assert.Throws <FP_WrongNumberOfArgumentsException>(() => { handler.Handle(_state); }); }
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_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_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_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_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_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_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_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_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_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_Pass_Right_Command_With_Correct_Arguments_Should_Create_Correct_PrintOut() { //Arrange var newDateTime = DateTime.Now.AddMinutes(5); var actualFPDateTime = _state.TimeDiffrenceInMinutes != int.MinValue ? DateTime.Now.AddMinutes(_state.TimeDiffrenceInMinutes) : DateTime.Now; var dateArguments = new List <string>() { newDateTime.Year.ToString().Substring(2, 2), newDateTime.Month.ToString(), newDateTime.Day.ToString(), newDateTime.Hour.ToString(), newDateTime.Minute.ToString(), newDateTime.Second.ToString() }; _state.IsInFiscalState = true; var command = new ThermalFiscalPrinterCommand(dateArguments, "$c", null, null, null); var handler = new SetupClockCommandHandler(command); StringBuilder reciptBody = new StringBuilder(); reciptBody.AppendLine(); reciptBody.AppendLine("PROGRAMOWANIE ZEGARA".PadCenter(Constants.ReciptWidth)); reciptBody.AppendLine(); reciptBody.AppendLine($"Zegar przed zmianą: {actualFPDateTime.ToString("yyyy-MM-dd,HH:mm")}"); reciptBody.AppendLine($"Zegar po zmianie: {newDateTime.ToString("yyyy-MM-dd,HH:mm")}"); reciptBody.AppendLine(); var expectedReciptBody = reciptBody.ToString(); //Act var response = handler.Handle(_state); //Assert Assert.AreEqual(expectedReciptBody, response.OutputReciptBuffer); }
public void When_Pass_4_Ptu_Rates_Last_3_Should_Be_Inactive() { //Arrange FiscalPrinterState state = new FiscalPrinterState(); var PnArgs = new List <string>() { "4" }; ThermalFiscalPrinterCommand command = new ThermalFiscalPrinterCommand(PnArgs, null, "23/7/3/100", null, null); ChangePTURatesCommandHandler handler = new ChangePTURatesCommandHandler(command); //Act _ = handler.Handle(state); //Assert Assert.AreEqual(23.00, state.PTURates[(int)PTU.A].ActualPercentageValue); Assert.AreEqual(7.00, state.PTURates[(int)PTU.B].ActualPercentageValue); Assert.AreEqual(3.00, state.PTURates[(int)PTU.C].ActualPercentageValue); Assert.AreEqual(Constants.PTUTaxFreeRate, state.PTURates[(int)PTU.D].ActualPercentageValue); Assert.AreEqual(Constants.PTUInactiveRate, state.PTURates[(int)PTU.E].ActualPercentageValue); Assert.AreEqual(Constants.PTUInactiveRate, state.PTURates[(int)PTU.F].ActualPercentageValue); Assert.AreEqual(Constants.PTUTaxFreeRate, state.PTURates[(int)PTU.G].ActualPercentageValue); }
public void When_Passed_Correct_Less_Then_500_Chars_And_Lines_Split_By_CR_Header_Should_Save_It_In_Fiscal_Printer_State() { //Arrange var reciptHeaderRows = new List <string> { $"Sample Fiscal Printer Header", "Lines must be split by CR", "Or LF Characters" }; var reciptHeaderInput = reciptHeaderRows[0] + Convert.ToChar(Constants.ASCICodeCR) + reciptHeaderRows[1] + Convert.ToChar(Constants.ASCICodeLF) + reciptHeaderRows[2]; var state = new FiscalPrinterState(); var command = new ThermalFiscalPrinterCommand(null, null, reciptHeaderInput + "?"); var commandHandler = new SetupReciptHeaderCommandHandler(command); //Act var result = commandHandler.Handle(state); //Assert Assert.IsNull(result.OutputCommand); Assert.AreEqual(result.OutputReciptBuffer, string.Empty); StringBuilder stringBuilder = new StringBuilder(); reciptHeaderRows.ForEach(row => stringBuilder.AppendLine(row)); var expectedReciptHeader = stringBuilder.ToString(); Console.WriteLine(expectedReciptHeader); Console.WriteLine(reciptHeaderInput); Assert.AreEqual(expectedReciptHeader, state.FiscalPrinterHeader); }
public void SetUpMethod() { _command = new ThermalFiscalPrinterCommand(null, null, null, null, null); _commandHandler = new ENQCommandHandler(_command); }