Beispiel #1
0
        public static SectionHeaderOption Parse(BinaryReader binaryReader, bool reverseByteOrder, Action <Exception> ActionOnException)
        {
            CustomContract.Requires <ArgumentNullException>(binaryReader != null, "binaryReader cannot be null");

            SectionHeaderOption option = new SectionHeaderOption();
            List <KeyValuePair <ushort, byte[]> > optionsList = EkstractOptions(binaryReader, reverseByteOrder, ActionOnException);

            if (optionsList.Any())
            {
                foreach (var item in optionsList)
                {
                    try
                    {
                        switch (item.Key)
                        {
                        case (ushort)SectionHeaderOptionCode.CommentCode:
                            option.Comment = UTF8Encoding.UTF8.GetString(item.Value);
                            break;

                        case (ushort)SectionHeaderOptionCode.HardwareCode:
                            option.Hardware = UTF8Encoding.UTF8.GetString(item.Value);
                            break;

                        case (ushort)SectionHeaderOptionCode.OperatingSystemCode:
                            option.OperatingSystem = UTF8Encoding.UTF8.GetString(item.Value);
                            break;

                        case (ushort)SectionHeaderOptionCode.UserApplicationCode:
                            option.UserApplication = UTF8Encoding.UTF8.GetString(item.Value);
                            break;

                        case (ushort)SectionHeaderOptionCode.EndOfOptionsCode:
                        default:
                            break;
                        }
                    }
                    catch (Exception exc)
                    {
                        if (ActionOnException != null)
                        {
                            ActionOnException(exc);
                        }
                    }
                }
            }
            return(option);
        }
        public static void SectionHeaderOption_ConvertToByte_Test(bool reorder)
        {
            SectionHeaderOption preOption = new SectionHeaderOption();
            SectionHeaderOption postOption;

            preOption.Comment         = "Test Comment";
            preOption.Hardware        = "x86 Personal Computer";
            preOption.OperatingSystem = "Windows 7";
            preOption.UserApplication = "PcapngUtils";
            byte[] preOptionByte = preOption.ConvertToByte(reorder, null);
            using (MemoryStream stream = new MemoryStream(preOptionByte))
            {
                using (BinaryReader binaryReader = new BinaryReader(stream))
                {
                    postOption = SectionHeaderOption.Parse(binaryReader, reorder, null);
                }
            }

            Assert.IsNotNull(postOption);
            Assert.AreEqual(preOption.Comment, postOption.Comment);
            Assert.AreEqual(preOption.Hardware, postOption.Hardware);
            Assert.AreEqual(preOption.OperatingSystem, postOption.OperatingSystem);
            Assert.AreEqual(preOption.UserApplication, postOption.UserApplication);
        }