/// <summary> /// This method is used to deserialize the items of the fragment knowledge from the byte array. /// </summary> /// <param name="byteArray">Specify the byte array.</param> /// <param name="currentIndex">Specify the start index from the byte array.</param> /// <param name="lengthOfItems">Specify the current length of items in the fragment knowledge.</param> protected override void DeserializeItemsFromByteArray(byte[] byteArray, ref int currentIndex, int lengthOfItems) { if (lengthOfItems != 0) { throw new KnowledgeParseErrorException(currentIndex, "FragmentKnowledge object over-parse error", null); } int index = currentIndex; FragmentKnowledgeEntry fragmentKnowledgeEntry = null; while (StreamObject.TryGetCurrent <FragmentKnowledgeEntry>(byteArray, ref index, out fragmentKnowledgeEntry)) { this.FragmentKnowledgeEntriesList.Add(fragmentKnowledgeEntry); } currentIndex = index; }
/// <summary> /// This method is used to test Fragment Knowledge Entry 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 VerifyFragmentKnowledgeEntry(FragmentKnowledgeEntry instance, ITestSite site) { // If the instance is not null and there are no parsing errors, then the Fragment Knowledge Entry related adapter requirements can be directly captured. if (null == instance) { site.Assert.Fail("The instance of type FragmentKnowledgeEntry is null due to parsing error or type casting error."); } // Verify the stream object header related requirements. this.ExpectStreamObjectHeaderStart(instance.StreamObjectHeaderStart, instance.GetType(), site); // Capture requirement MS-FSSHTTPB_R566, if stream object start type is StreamObjectHeaderStart32bit. site.CaptureRequirementIfAreEqual <Type>( typeof(StreamObjectHeaderStart32bit), instance.StreamObjectHeaderStart.GetType(), "MS-FSSHTTPB", 566, @"[In Fragment Knowledge Entry] Fragment Descriptor (4 bytes): A 32-bit stream object header (section 2.2.1.5.2) that specifies a fragment knowledge entry."); // Directly capture requirement MS-FSSHTTPB_R567, if there are no parsing errors. site.CaptureRequirement( "MS-FSSHTTPB", 567, @"[In Fragment Knowledge Entry] Extended GUID (variable): An extended GUID (section 2.2.1.7) that specifies the data element this fragment knowledge entry contains knowledge about."); // Directly capture requirement MS-FSSHTTPB_R568, if there are no parsing errors. site.CaptureRequirement( "MS-FSSHTTPB", 568, @"[In Fragment Knowledge Entry] Data Element Size (variable): A compact unsigned 64-bit integer (section 2.2.1.1) specifying the size in bytes of the data element specified by the preceding Extended GUID."); // Directly capture requirement MS-FSSHTTPB_R569, if there are no parsing errors. site.CaptureRequirement( "MS-FSSHTTPB", 569, @"[In Fragment Knowledge Entry] Data Element Chunk Reference (variable): A file chunk reference (section 2.2.1.2) specifying which part of the data element with the preceding GUID this fragment knowledge entry contains knowledge about."); // Verify the stream object header end related requirements. this.ExpectSingleObject(instance.StreamObjectHeaderStart, site); }
/// <summary> /// This method is used to test Fragment Knowledge Entry 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 VerifyFragmentKnowledgeEntry(FragmentKnowledgeEntry instance, ITestSite site) { // If the instance is not null and there are no parsing errors, then the Fragment Knowledge Entry related adapter requirements can be directly captured. if (null == instance) { site.Assert.Fail("The instance of type FragmentKnowledgeEntry is null due to parsing error or type casting error."); } // Verify the stream object header related requirements. this.ExpectStreamObjectHeaderStart(instance.StreamObjectHeaderStart, instance.GetType(), site); // Capture requirement MS-FSSHTTPB_R566, if stream object start type is StreamObjectHeaderStart32bit. site.CaptureRequirementIfAreEqual<Type>( typeof(StreamObjectHeaderStart32bit), instance.StreamObjectHeaderStart.GetType(), "MS-FSSHTTPB", 566, @"[In Fragment Knowledge Entry] Fragment Descriptor (4 bytes): A 32-bit stream object header (section 2.2.1.5.2) that specifies a fragment knowledge entry."); // Directly capture requirement MS-FSSHTTPB_R567, if there are no parsing errors. site.CaptureRequirement( "MS-FSSHTTPB", 567, @"[In Fragment Knowledge Entry] Extended GUID (variable): An extended GUID (section 2.2.1.7) that specifies the data element this fragment knowledge entry contains knowledge about."); // Directly capture requirement MS-FSSHTTPB_R568, if there are no parsing errors. site.CaptureRequirement( "MS-FSSHTTPB", 568, @"[In Fragment Knowledge Entry] Data Element Size (variable): A compact unsigned 64-bit integer (section 2.2.1.1) specifying the size in bytes of the data element specified by the preceding Extended GUID."); // Directly capture requirement MS-FSSHTTPB_R569, if there are no parsing errors. site.CaptureRequirement( "MS-FSSHTTPB", 569, @"[In Fragment Knowledge Entry] Data Element Chunk Reference (variable): A file chunk reference (section 2.2.1.2) specifying which part of the data element with the preceding GUID this fragment knowledge entry contains knowledge about."); // Verify the stream object header end related requirements. this.ExpectSingleObject(instance.StreamObjectHeaderStart, site); }