/// <summary> /// Used to return the length of this element. /// </summary> /// <param name="byteArray">A Byte array</param> /// <param name="startIndex">Start position</param> /// <returns>The length of the element</returns> public override int DeserializeDataElementDataFromByteArray(byte[] byteArray, int startIndex) { int index = startIndex; DataElementHash dataElementHash; if (StreamObject.TryGetCurrent <DataElementHash>(byteArray, ref index, out dataElementHash)) { this.DataElementHash = dataElementHash; } this.ObjectGroupDeclarations = StreamObject.GetCurrent <ObjectGroupDeclarations>(byteArray, ref index); ObjectGroupMetadataDeclarations objectMetadataDeclaration = new ObjectGroupMetadataDeclarations(); if (StreamObject.TryGetCurrent <ObjectGroupMetadataDeclarations>(byteArray, ref index, out objectMetadataDeclaration)) { this.ObjectMetadataDeclaration = objectMetadataDeclaration; } this.ObjectGroupData = StreamObject.GetCurrent <ObjectGroupData>(byteArray, ref index); return(index - startIndex); }
/// <summary> /// Used to return the length of this element. /// </summary> /// <param name="byteArray">A Byte array</param> /// <param name="startIndex">Start position</param> /// <returns>The length of the element</returns> public override int DeserializeDataElementDataFromByteArray(byte[] byteArray, int startIndex) { int index = startIndex; DataElementHash dataElementHash; if (StreamObject.TryGetCurrent<DataElementHash>(byteArray, ref index, out dataElementHash)) { this.DataElementHash = dataElementHash; } this.ObjectGroupDeclarations = StreamObject.GetCurrent<ObjectGroupDeclarations>(byteArray, ref index); ObjectGroupMetadataDeclarations objectMetadataDeclaration = new ObjectGroupMetadataDeclarations(); if (StreamObject.TryGetCurrent<ObjectGroupMetadataDeclarations>(byteArray, ref index, out objectMetadataDeclaration)) { this.ObjectMetadataDeclaration = objectMetadataDeclaration; } this.ObjectGroupData = StreamObject.GetCurrent<ObjectGroupData>(byteArray, ref index); return index - startIndex; }
/// <summary> /// This method is used to test object group data related adapter requirements. /// </summary> /// <param name="instance">Specify the instance which need to be verified.</param> /// <param name="site">Specify the ITestSite instance.</param> public void VerifyObjectGroupData(ObjectGroupData instance, ITestSite site) { // If the instance is not null and there are no parsing errors, then the ObjectGroupData related adapter requirements can be directly captured. if (null == instance) { site.Assert.Fail("The instance of type ObjectGroupData is null due to parsing error or type casting error."); } // Verify the stream object header related requirements. this.ExpectStreamObjectHeaderStart(instance.StreamObjectHeaderStart, instance.GetType(), site); // Directly capture requirement MS-FSSHTTPB_R311, if there are no parsing errors. site.CaptureRequirement( "MS-FSSHTTPB", 311, @"[In Object Group Data Elements] Object Group Data Start (variable): A 16-bit or 32-bit stream object header that specifies an object group data start."); if (instance.ObjectGroupObjectDataList != null && instance.ObjectGroupObjectDataList.Count != 0) { // Directly capture requirement MS-FSSHTTPB_R312, if there are no parsing errors. site.CaptureRequirement( "MS-FSSHTTPB", 312, @"[In Object Group Data Elements] Object Data (variable): An optional array of object data (section 2.2.1.12.6.4) that specifies the object data."); } if (instance.ObjectGroupObjectDataBLOBReferenceList != null && instance.ObjectGroupObjectDataBLOBReferenceList.Count != 0) { // Directly capture requirement MS-FSSHTTPB_R3121, if there are no parsing errors. site.CaptureRequirement( "MS-FSSHTTPB", 3121, @"[In Object Group Data Elements] Object Data BLOB Reference (variable): An optional array of object data BLOB references (section 2.2.1.12.6.5) that specifies the object data's references."); } // Verify the stream object header end related requirements. this.ExpectStreamObjectHeaderEnd(instance.StreamObjectHeaderEnd, instance.GetType(), site); this.ExpectCompoundObject(instance.StreamObjectHeaderStart, site); // Capture requirement MS-FSSHTTPB_R313, if the stream object end is StreamObjectHeaderEnd8bit. site.CaptureRequirementIfAreEqual<Type>( typeof(StreamObjectHeaderEnd8bit), instance.StreamObjectHeaderEnd.GetType(), "MS-FSSHTTPB", 313, @"[In Object Group Data Elements] Object Group Data End (1 byte): An 8-bit stream object header that specifies an object group data end."); }