Пример #1
0
        public void ZebraZC3_ConnectToUsbPrinter_ConnectionSuccess()
        {
            using (ShimsContext.Create())
            {
                // Arrange
                ZebraSdk.Printer.Discovery.Fakes.ShimDiscoveredPrinter.AllInstances.AddressGet          = @this => "SomeFunnyAddress";
                ZebraSdk.Printer.Discovery.Fakes.ShimDiscoveredPrinter.AllInstances.DiscoveryDataMapGet = @this => new Dictionary <string, string>()
                {
                    { "SERIAL_NUMBER", "aaabbbb111222ccc" },
                    { "MFG", "Zebra Technologies" },
                    { "MODEL", "ZTC ZC350" }
                };
                var conn       = Substitute.For <ZebraSdk.Comm.Connection>();
                var usbPrinter = Substitute.For <ZebraSdk.Printer.Discovery.DiscoveredUsbPrinter>("symbolicName1");
                usbPrinter.GetConnection().Returns(conn);

                var zebraPrinter = Substitute.For <ZebraSdk.Card.Printer.ZebraCardPrinter>();
                ZebraSdk.Card.Printer.Fakes.ShimZebraCardPrinterFactory.GetInstanceConnection = (shimConn) =>
                {
                    return(zebraPrinter);
                };

                ZebraZC3 zebraZC3 = new ZebraZC3(usbPrinter);

                // Act
                var respCode = zebraZC3.Connect();

                // Assert
                usbPrinter.Received(1).GetConnection();
                conn.Received(1).Open();
                respCode.Should().Be(0, because: "Sucessful response code from the printer is code=0");
            }
        }
        public void ZebraZC3_ReadandPrint()
        {
            //Zebra.Sdk.Comm.ConnectionException
            var printers = ZebraZC3.GetPrinterList();

            using (var printer = printers[0])
            {
                printer.Connect();

                ProductField nameOnCardField = new ProductField
                {
                    Deleted       = false,
                    Printable     = true,
                    X             = 500,
                    Y             = 200,
                    Value         = Encoding.UTF8.GetBytes("Veneka Test Printing"),
                    Font          = "Consolas",
                    FontColourRGB = Color.Black.ToArgb(),
                    FontSize      = 10,
                    PrintSide     = 0
                };

                var printDetail = printer.PrinterDetailFactory().Populate(new ProductField[] { nameOnCardField });


                printer.ReadAndPrint("", printDetail, out IDeviceMagData magData);
            }
        }
        public void ZebraZC3_PrintNameOnCard()
        {
            //Zebra.Sdk.Comm.ConnectionException
            var printers = ZebraZC3.GetPrinterList();

            using (var printer = printers[0])
            {
                printer.Connect();

                ProductField nameOnCardField = new ProductField
                {
                    Deleted       = false,
                    Printable     = true,
                    X             = 500,
                    Y             = 200,
                    Value         = Encoding.UTF8.GetBytes("DANIEL JACOB"),
                    Font          = "Consolas",
                    FontColourRGB = Color.Black.ToArgb(),
                    FontSize      = 10,
                    PrintSide     = 0
                };

                var printDetail = printer.PrinterDetailFactory().Populate(new ProductField[] { nameOnCardField });

                printer.Print("123456789", printDetail);
            }
        }
Пример #4
0
        public void ZebraZC3_GetMagEncoder_ConnectNotCalledBeforeMethodUsed()
        {
            using (ShimsContext.Create())
            {
                // Arrange
                ZebraSdk.Printer.Discovery.Fakes.ShimDiscoveredPrinter.AllInstances.AddressGet          = @this => "SomeFunnyAddress";
                ZebraSdk.Printer.Discovery.Fakes.ShimDiscoveredPrinter.AllInstances.DiscoveryDataMapGet = @this => new Dictionary <string, string>()
                {
                    { "SERIAL_NUMBER", "aaabbbb111222ccc" },
                    { "MFG", "Zebra Technologies" },
                    { "MODEL", "ZTC ZC350" }
                };
                var       usbPrinter        = Substitute.For <ZebraSdk.Printer.Discovery.DiscoveredUsbPrinter>("symbolicName1");
                var       zebraZC3          = new ZebraZC3(usbPrinter);
                Exception receivedException = null;

                // Act
                try
                {
                    var hasMagEncoder = zebraZC3.HasMagEncoder();
                }
                catch (Exception ex)
                {
                    receivedException = ex;
                }

                // Assert
                usbPrinter.Received(0).GetConnection();
                receivedException.Should().NotBeNull(because: "The method should check that Connect was called before trying to anything");
                receivedException.Message.Should().Be("Device not connected! Method may only be used after device has successful Connect().");
            }
        }
Пример #5
0
        public void ZebraZC3_ReadMagStripeEncoderInstalled_ReturnsPopulatedMagneticTrackData()
        {
            using (ShimsContext.Create())
            {
                // Arrange
                var errorFactory = Substitute.For <Error.IZebraErrorFactory>();

                var trackData = new ZebraSdk.Card.Containers.Fakes.ShimMagTrackData();
                trackData.Track1Get = () => "Track1DataHere";
                trackData.Track2Get = () => "Track2DataHere";
                trackData.Track3Get = () => "Track3DataHere";

                var conn = Substitute.For <ZebraSdk.Comm.Connection>();

                var zebraPrinter = Substitute.For <ZebraSdk.Card.Printer.ZebraCardPrinter>();
                zebraPrinter.HasMagneticEncoder().Returns(true);
                zebraPrinter
                .ReadMagData(ZebraSdk.Card.Enumerations.DataSource.Track1 | ZebraSdk.Card.Enumerations.DataSource.Track2 | ZebraSdk.Card.Enumerations.DataSource.Track3)
                .Returns(trackData);

                ZebraZC3 zebraZC3 = new ZebraZC3(conn, zebraPrinter, errorFactory);

                // Act
                var returnedTrackData = zebraZC3.ReadMagStripe();


                // Assert
                Assert.Fail();
            }
        }
Пример #6
0
        public void ZebraZC3_ConstructorWithUsbDiscoveredPrinter_DevicePropertySet()
        {
            using (ShimsContext.Create())
            {
                // Arrange
                ZebraSdk.Printer.Discovery.Fakes.ShimDiscoveredPrinter.AllInstances.AddressGet          = @this => "SomeFunnyAddress";
                ZebraSdk.Printer.Discovery.Fakes.ShimDiscoveredPrinter.AllInstances.DiscoveryDataMapGet = @this => new Dictionary <string, string>()
                {
                    { "SERIAL_NUMBER", "aaabbbb111222ccc" },
                    { "MFG", "Zebra Technologies" },
                    { "MODEL", "ZTC ZC350" }
                };
                var usbPrinter = Substitute.For <ZebraSdk.Printer.Discovery.DiscoveredPrinter>("symbolicName");

                // Act
                ZebraZC3 zebraZC3 = new ZebraZC3(usbPrinter);


                // Assert
                var temp = usbPrinter.Received(3).DiscoveryDataMap;
                zebraZC3.DeviceId.Should().Be("aaabbbb111222ccc", because: "SERIAL_NUMBER in DiscoveryDataMap is used to set DeviceId property");
                zebraZC3.Manufacturer.Should().Be("Zebra Technologies", because: "MFG in DiscoveryDataMap is used to set Manufacturer property");
                zebraZC3.Model.Should().Be("ZTC ZC350", because: "MODEL in DiscoveryDataMap is used to set Model property");
                zebraZC3.Name.Should().Be("ZTC ZC350[aaabbbb111222ccc]", because: "Name property is made from Model and DeviceId");
            }
        }
Пример #7
0
        public void ZebraZC3_CheckPrinterStatus_AlarmInfoAndErrorInfoHaveDifferentErrorsReturnFalse()
        {
            using (ShimsContext.Create())
            {
                var errorDesc7008 = Substitute.For <IDeviceErrorDescriptor>();
                errorDesc7008.Code.Returns(7008);
                errorDesc7008.Description.Returns("Printer door open");
                errorDesc7008.HelpfulHint.Returns("Ensure the door is closed.");

                var errorDesc7028 = Substitute.For <IDeviceErrorDescriptor>();
                errorDesc7028.Code.Returns(7028);
                errorDesc7028.Description.Returns("Printer thingo is open");
                errorDesc7028.HelpfulHint.Returns("Ensure the thingo is closed.");

                var errorFactory = Substitute.For <Error.IZebraErrorFactory>();
                errorFactory.GetErrorDescription(7008).Returns(errorDesc7008);
                errorFactory.GetErrorDescription(7028).Returns(errorDesc7028);

                // Arrange
                var alarm7008 = new ZebraSdk.Card.Containers.Fakes.ShimAlarmInfo
                {
                    ValueGet = () => { return(7008); }
                };
                var alarm7028 = new ZebraSdk.Card.Containers.Fakes.ShimAlarmInfo
                {
                    ValueGet = () => { return(7028); }
                };


                var printerStatus = new ZebraSdk.Card.Containers.Fakes.ShimPrinterStatusInfo
                {
                    AlarmInfoGet = () => { return(alarm7008); },
                    ErrorInfoGet = () => { return(alarm7028); }
                };

                var conn         = Substitute.For <ZebraSdk.Comm.Connection>();
                var zebraPrinter = Substitute.For <ZebraSdk.Card.Printer.ZebraCardPrinter>();
                zebraPrinter.GetPrinterStatus().Returns(printerStatus);

                ZebraZC3 zebraZC3 = new ZebraZC3(conn, zebraPrinter, errorFactory);

                // Act
                string status;
                List <IDeviceErrorDescriptor> errorList;
                var boolStatus = zebraZC3.CheckPrinterStatus(out status, out errorList);

                // Assert
                zebraPrinter.Received(1).GetPrinterStatus();
                errorFactory.Received(1).GetErrorDescription(7008);
                errorFactory.Received(1).GetErrorDescription(7028);
                boolStatus.Should().BeFalse(because: "Both ErrorInfo and AlarmInfo have issues. Should trigger false on either having an issue or both having an issue.");
                errorList.Should().HaveCount(2, because: "Two different errors received from alarm and errorinfo.");
                errorList[0].Should().BeEquivalentTo(errorDesc7008);
                errorList[1].Should().BeEquivalentTo(errorDesc7028);
            }
        }
        public void ZebraZC3_Connect()
        {
            var printers = ZebraZC3.GetPrinterList();

            using (var printer = printers[0])
            {
                printer.Connect();
            }


            //Assert.Fail();
        }
        public void ZebraZC3_GetMediaInfo()
        {
            //Zebra.Sdk.Comm.ConnectionException
            var printers = ZebraZC3.GetPrinterList();

            using (var printer = printers[0])
            {
                printer.Connect();

                printer.GetMediaInfo();
            }
        }
        public void ZebraZC3_CheckPrinterStatus()
        {
            //Zebra.Sdk.Comm.ConnectionException
            var printers = ZebraZC3.GetPrinterList();

            using (var printer = printers[0])
            {
                printer.Connect();

                //printer.CheckPrinterStatus();
            }
        }
        public void ZebraZC3_DisplayJobSettings()
        {
            //Zebra.Sdk.Comm.ConnectionException
            var printers = ZebraZC3.GetPrinterList();

            using (var printer = printers[0])
            {
                printer.Connect();

                printer.DisplayJobSettings();
            }
        }
        public void ZebraZC3_HasMagEncoder()
        {
            var printers = ZebraZC3.GetPrinterList();

            using (var printer = printers[0])
            {
                if (printer.Connect() == 0)
                {
                    var hasMagEncoder = printer.HasMagEncoder();
                }
            }
        }
        public void ZebraZC3_GetMagData()
        {
            //Zebra.Sdk.Comm.ConnectionException
            var printers = ZebraZC3.GetPrinterList();

            using (var printer = printers[0])
            {
                printer.Connect();

                if (printer.HasMagEncoder())
                {
                    var magData = printer.ReadMagStripe();
                }
            }
        }
Пример #14
0
        public void ZebraZC3_CheckPrinterStatus_ErrorInfoHasErrorReturnFalse()
        {
            using (ShimsContext.Create())
            {
                // Arrange
                var errorDesc = Substitute.For <IDeviceErrorDescriptor>();
                errorDesc.Code.Returns(7028);
                errorDesc.Description.Returns("Printer thingo is open");
                errorDesc.HelpfulHint.Returns("Ensure the thingo is closed.");

                var errorFactory = Substitute.For <Error.IZebraErrorFactory>();
                errorFactory.GetErrorDescription(7028).Returns(errorDesc);

                var alarmGood = new ZebraSdk.Card.Containers.Fakes.ShimAlarmInfo
                {
                    ValueGet = () => { return(0); }
                };

                var alarmBad = new ZebraSdk.Card.Containers.Fakes.ShimAlarmInfo
                {
                    ValueGet = () => { return(7028); }
                };

                var printerStatus = new ZebraSdk.Card.Containers.Fakes.ShimPrinterStatusInfo
                {
                    AlarmInfoGet = () => { return(alarmGood); },
                    ErrorInfoGet = () => { return(alarmBad); }
                };

                var conn         = Substitute.For <ZebraSdk.Comm.Connection>();
                var zebraPrinter = Substitute.For <ZebraSdk.Card.Printer.ZebraCardPrinter>();
                zebraPrinter.GetPrinterStatus().Returns(printerStatus);

                ZebraZC3 zebraZC3 = new ZebraZC3(conn, zebraPrinter, errorFactory);

                // Act
                string status;
                List <IDeviceErrorDescriptor> errorList;
                var boolStatus = zebraZC3.CheckPrinterStatus(out status, out errorList);

                // Assert
                zebraPrinter.Received(1).GetPrinterStatus();
                errorFactory.Received(1).GetErrorDescription(7028);
                boolStatus.Should().BeFalse(because: "ErrorInfo is returning a problem even though AlarmInfo doesn't. Should trigger false on either having an issue or both having an issue.");
                errorList.Should().HaveCount(1, because: "Only one item should be in the error list.");
                errorList[0].Should().BeEquivalentTo(errorDesc);
            }
        }
Пример #15
0
        public void ZebraZC3_ConstructorWithUsbDiscoveredPrinter_ZebraZC3ObjectCreated()
        {
            using (ShimsContext.Create())
            {
                // Arrange
                ZebraSdk.Printer.Discovery.Fakes.ShimDiscoveredPrinter.AllInstances.AddressGet = @this => "Address";
                var usbPrinter = Substitute.For <ZebraSdk.Printer.Discovery.DiscoveredPrinter>("symbolicName1");

                // Act
                ZebraZC3 zebraZC3 = new ZebraZC3(usbPrinter);


                // Assert
                zebraZC3.Should().NotBeNull(because: "Object should have been created.");
                zebraZC3.Should().BeOfType(typeof(ZebraZC3));
            }
        }
Пример #16
0
        public void ZebraZC3_GetPrinterList_ReturnsEmptyDeviceList()
        {
            using (ShimsContext.Create())
            {
                // Arrange
                ZebraSdk.Printer.Discovery.Fakes.ShimUsbDiscoverer.GetZebraUsbPrintersDiscoveredPrinterFilter = (filter) =>
                {
                    return(new List <ZebraSdk.Printer.Discovery.DiscoveredUsbPrinter>());
                };

                // Act
                var printers = ZebraZC3.GetPrinterList();

                // Assert
                printers.Should().BeEmpty(because: "No printers connected to machine and device list returned must be empty");
            }
        }
Пример #17
0
        public void ZebraZC3_ConnectToUsbPrinter_ZebraCardPrinterFactoryGetInstanceException()
        {
            using (ShimsContext.Create())
            {
                // Arrange
                ZebraSdk.Printer.Discovery.Fakes.ShimDiscoveredPrinter.AllInstances.AddressGet          = @this => "SomeFunnyAddress";
                ZebraSdk.Printer.Discovery.Fakes.ShimDiscoveredPrinter.AllInstances.DiscoveryDataMapGet = @this => new Dictionary <string, string>()
                {
                    { "SERIAL_NUMBER", "aaabbbb111222ccc" },
                    { "MFG", "Zebra Technologies" },
                    { "MODEL", "ZTC ZC350" }
                };
                var conn = Substitute.For <ZebraSdk.Comm.Connection>();

                var usbPrinter = Substitute.For <ZebraSdk.Printer.Discovery.DiscoveredUsbPrinter>("symbolicName1");
                usbPrinter.GetConnection().Returns(conn);

                var zebraPrinter = Substitute.For <ZebraSdk.Card.Printer.ZebraCardPrinter>();
                ZebraSdk.Card.Printer.Fakes.ShimZebraCardPrinterFactory.GetInstanceConnection = (shimConn) =>
                {
                    throw new Exception();
                };

                ZebraZC3 zebraZC3 = new ZebraZC3(usbPrinter);

                Exception expectedEx = null;
                short?    respCode   = null;

                // Act
                try
                {
                    respCode = zebraZC3.Connect();
                }
                catch (Exception ex)
                {
                    expectedEx = ex;
                }

                // Assert
                usbPrinter.Received(1).GetConnection();
                conn.Received(1).Open();
                respCode.Should().BeNull(because: "ZebraCardPrinterFactory.GetInstance threw exception which must be cause by calling code. No response code should have been returned");
                expectedEx.Should().NotBeNull(because: "ZebraCardPrinterFactory.GetInstance threw exception and should not have been swallowed");
            }
        }
Пример #18
0
        public void ZebraZC3_CheckPrinterStatus_StatusOkayReturnTrue()
        {
            using (ShimsContext.Create())
            {
                // Arrange
                var errorDesc = Substitute.For <IDeviceErrorDescriptor>();
                errorDesc.Code.Returns(0);
                errorDesc.Description.Returns("The description");
                errorDesc.HelpfulHint.Returns("A helpful hint for the problem");

                var errorFactory = Substitute.For <Error.IZebraErrorFactory>();
                errorFactory.GetErrorDescription(0).Returns(errorDesc);

                var alarm = new ZebraSdk.Card.Containers.Fakes.ShimAlarmInfo
                {
                    ValueGet = () => { return(0); }
                };

                var printerStatus = new ZebraSdk.Card.Containers.Fakes.ShimPrinterStatusInfo
                {
                    AlarmInfoGet = () => { return(alarm); },
                    ErrorInfoGet = () => { return(alarm); }
                };

                var conn         = Substitute.For <ZebraSdk.Comm.Connection>();
                var zebraPrinter = Substitute.For <ZebraSdk.Card.Printer.ZebraCardPrinter>();
                zebraPrinter.GetPrinterStatus().Returns(printerStatus);

                ZebraZC3 zebraZC3 = new ZebraZC3(conn, zebraPrinter, errorFactory);

                // Act
                string status;
                List <IDeviceErrorDescriptor> errorList;
                var boolStatus = zebraZC3.CheckPrinterStatus(out status, out errorList);

                // Assert
                zebraPrinter.Received(1).GetPrinterStatus();
                errorFactory.Received(1).GetErrorDescription(0);
                boolStatus.Should().BeTrue(because: "All status checks have passed successfully");
                errorList.Should().HaveCount(1, because: "Only one item should be in the error list.");
                errorList[0].Should().BeEquivalentTo(errorDesc);
            }
        }
Пример #19
0
        public void ZebraZC3_GetPrinterList_ReturnsSinglePrinterInDeviceList()
        {
            using (ShimsContext.Create())
            {
                // Arrange
                ZebraSdk.Printer.Discovery.Fakes.ShimUsbDiscoverer.GetZebraUsbPrintersDiscoveredPrinterFilter = (filter) =>
                {
                    return(new List <ZebraSdk.Printer.Discovery.DiscoveredUsbPrinter>()
                    {
                        Substitute.For <ZebraSdk.Printer.Discovery.DiscoveredUsbPrinter>("symbolicName")
                    });
                };

                // Act
                var printers = ZebraZC3.GetPrinterList();

                // Assert
                printers.Should().HaveCount(1, because: "Single usb printer was returned from UsbDiscoverer and should have returned one device");
            }
        }
Пример #20
0
        public void ZebraZC3_ConstructorWithNullValue_ThrowsArgumentNullException()
        {
            // Arrange
            Exception exception = null;

            // Act
            try
            {
                ZebraZC3 zebraZC3 = new ZebraZC3(null);
            }
            catch (Exception ex)
            {
                exception = ex;
            }

            // Assert
            exception.Should().NotBeNull(because: "We should not be able to create a ZebraZC3 object with a null discovered device.");
            exception.Should().BeOfType(typeof(ArgumentNullException), because: "The check for null value mus return an exception of ArgumentNullException");
            ((ArgumentNullException)exception).ParamName.Should().Be("discoveredPrinter", because: "discoveredPrinter argument is being checked for a null value.");
        }
Пример #21
0
        public void ZebraZC3_GetMagEncoder_ReturnsFalse()
        {
            using (ShimsContext.Create())
            {
                // Arrange
                var conn         = Substitute.For <ZebraSdk.Comm.Connection>();
                var errorFactory = Substitute.For <Error.IZebraErrorFactory>();

                var zebraPrinter = Substitute.For <ZebraSdk.Card.Printer.ZebraCardPrinter>();
                zebraPrinter.SetConnection(conn);
                zebraPrinter.HasMagneticEncoder().Returns(false);

                ZebraZC3 zebraZC3 = new ZebraZC3(conn, zebraPrinter, errorFactory);

                // Act
                var hasMagEncoder = zebraZC3.HasMagEncoder();

                // Assert
                zebraPrinter.Received(1).HasMagneticEncoder();
                hasMagEncoder.Should().BeFalse(because: "ZebraCardPrinter does not have a magnetic encoder installed, which returns false when checked. Therefor our method must also send back false.");
            }
        }
        public void ZebraZC3_GetPrinterList()
        {
            var printers = ZebraZC3.GetPrinterList();

            //Assert.Fail();
        }