public void StreamMessage(ODataMessageReaderTestWrapper reader, ODataMessageWriterTestWrapper writer, ODataPayloadKind payloadKind, WriterTestConfiguration config) { ExceptionUtilities.CheckArgumentNotNull(reader, "reader is required"); ExceptionUtilities.CheckArgumentNotNull(writer, "writer is required"); ExceptionUtilities.CheckArgumentNotNull(payloadKind, "payloadKind is required"); ExceptionUtilities.CheckArgumentNotNull(config, "config is required"); this.testConfiguration = config; switch(payloadKind) { case ODataPayloadKind.Entry: this.StartRead(reader.CreateODataEntryReader(), writer.CreateODataEntryWriter()); break; case ODataPayloadKind.Feed: this.StartRead(reader.CreateODataFeedReader(), writer.CreateODataFeedWriter()); break; default: throw new NotSupportedException("ObjectModelReadWriteStreamer currently supports only feed and entry"); }; }
private void WriteTopLevelEntry(ODataMessageWriterTestWrapper messageWriter, ODataMessageReaderTestWrapper messageReader, ODataEntry entry) { ODataWriter entryWriter = messageWriter.CreateODataEntryWriter(); Lazy<ODataReader> lazyEntryReader = new Lazy<ODataReader>(() => messageReader.CreateODataEntryReader()); this.WriteEntry(entryWriter, lazyEntryReader, entry); }
/// <summary> /// Read an entry as the message content. /// </summary> /// <param name="messageReader">The message reader to use for reading.</param> /// <param name="entitySet">The entity set to use for reading entry or feed payloads.</param> /// <param name="expectedEntityTypeReference">The expected entity type to pass to the reader.</param> /// <returns>An <see cref="ODataEntry"/>, possibly with annotations.</returns> public ODataEntry ReadTopLevelEntry(ODataMessageReaderTestWrapper messageReader, IEdmEntitySet entitySet, IEdmTypeReference expectedEntityTypeReference) { IEdmEntityType entityType = expectedEntityTypeReference == null ? null : expectedEntityTypeReference.Definition as IEdmEntityType; ODataReader entryReader = messageReader.CreateODataEntryReader(entitySet, entityType); try { // read the start of the entry entryReader.Read(); this.assert.AreEqual(ODataReaderState.EntryStart, entryReader.State, "Reader states don't match."); ODataEntry entry = this.ReadEntry(entryReader); this.assert.AreEqual(ODataReaderState.EntryEnd, entryReader.State, "Reader states don't match."); // read once more to the end-of-input bool moreToRead = entryReader.Read(); this.assert.IsFalse(moreToRead, "Expected to reach the end of the input."); return entry; } catch (Exception e) { if (ExceptionUtilities.IsCatchable(e)) { this.assert.AreEqual(ODataReaderState.Exception, entryReader.State, "Expected the reader to be in 'Exception' state."); } throw; } }