public void WhenConverting_FromStringToByteArray_ReturnsCorrectValues()
        {
            var testCases = new[]
            {
                new
                {
                    Options      = ByteArrayConverterOptions.Hexadecimal | ByteArrayConverterOptions.HexInclude0x,
                    FieldStrings = new[] { "0xDEAD", "0xB33FBEEF", "0xEA5EEA5EEA5E", "0xCA75CA75CA75CA75" },
                    Expected     = new []
                    {
                        new byte[] { 0xDE, 0xAD },
                        new byte[] { 0xB3, 0x3F, 0xBE, 0xEF },
                        new byte[] { 0xEA, 0x5E, 0xEA, 0x5E, 0xEA, 0x5E },
                        new byte[] { 0xCA, 0x75, 0xCA, 0x75, 0xCA, 0x75, 0xCA, 0x75 }
                    }
                },
                new
                {
                    Options      = ByteArrayConverterOptions.Hexadecimal | ByteArrayConverterOptions.HexDashes,
                    FieldStrings = new[] { "DE-AD", "B3-3F-BE-EF", "EA-5E-EA-5E-EA-5E", "CA-75-CA-75-CA-75-CA-75" },
                    Expected     = new []
                    {
                        new byte[] { 0xDE, 0xAD },
                        new byte[] { 0xB3, 0x3F, 0xBE, 0xEF },
                        new byte[] { 0xEA, 0x5E, 0xEA, 0x5E, 0xEA, 0x5E },
                        new byte[] { 0xCA, 0x75, 0xCA, 0x75, 0xCA, 0x75, 0xCA, 0x75 }
                    }
                },
                new
                {
                    Options      = ByteArrayConverterOptions.Base64,
                    FieldStrings = new []
                    {
                        Convert.ToBase64String(new byte[] { 0xDE, 0xAD }),
                        Convert.ToBase64String(new byte[] { 0xB3, 0x3F, 0xBE, 0xEF }),
                        Convert.ToBase64String(new byte[] { 0xEA, 0x5E, 0xEA, 0x5E, 0xEA, 0x5E }),
                        Convert.ToBase64String(new byte[] { 0xCA, 0x75, 0xCA, 0x75, 0xCA, 0x75, 0xCA, 0x75 })
                    },
                    Expected = new []
                    {
                        new byte[] { 0xDE, 0xAD },
                        new byte[] { 0xB3, 0x3F, 0xBE, 0xEF },
                        new byte[] { 0xEA, 0x5E, 0xEA, 0x5E, 0xEA, 0x5E },
                        new byte[] { 0xCA, 0x75, 0xCA, 0x75, 0xCA, 0x75, 0xCA, 0x75 }
                    }
                }
            };

            foreach (var t in testCases)
            {
                var converter = new ByteArrayConverter(t.Options);
                foreach (var f in t.FieldStrings.Zip(t.Expected, (test, expected) => new { test, expected }))
                {
                    var actual = (byte[])converter.ConvertFromString(f.test, null, null);
                    foreach (var b in actual.Zip(f.expected, (a, e) => new { a, e }))
                    {
                        Assert.AreEqual(b.e, b.a);
                    }
                }
            }
        }