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); }