private void InvokeWriterAction(ODataMessageWriterTestWrapper messageWriter, ODataWriter writer, WriterAction writerAction) { switch (writerAction) { case WriterAction.StartEntry: writer.WriteStart(ObjectModelUtils.CreateDefaultEntry()); break; case WriterAction.StartFeed: writer.WriteStart(ObjectModelUtils.CreateDefaultFeed()); break; case WriterAction.StartLink: writer.WriteStart(ObjectModelUtils.CreateDefaultCollectionLink()); break; case WriterAction.End: writer.WriteEnd(); break; case WriterAction.Error: messageWriter.WriteError(new ODataError(), false); break; } }
private void InvokeCollectionWriterAction(ODataMessageWriterTestWrapper messageWriter, ODataCollectionWriter writer, CollectionWriterAction writerAction) { switch (writerAction) { case CollectionWriterAction.Start: writer.WriteStart(new ODataCollectionStart { Name = "foo" }); break; case CollectionWriterAction.Item: writer.WriteItem(42); break; case CollectionWriterAction.End: writer.WriteEnd(); break; case CollectionWriterAction.Error: messageWriter.WriteError(new ODataError(), false); break; } }
/// <summary> /// Writes the collection payload as specified in the <paramref name="testDescriptor"/>. /// </summary> /// <param name="messageWriter">The message writer.</param> /// <param name="writer">The writer to write to.</param> /// <param name="flush">True if the stream should be flush before returning; otherwise false.</param> /// <param name="testDescriptor">The test descriptor specifying the collection to write.</param> internal static void WriteCollectionPayload(ODataMessageWriterTestWrapper messageWriter, ODataCollectionWriter writer, bool flush, CollectionWriterTestDescriptor testDescriptor) { Debug.Assert(writer != null, "writer != null"); Debug.Assert(testDescriptor != null, "testDescriptor != null"); object[] payloadItems = testDescriptor.PayloadItems; int payloadItemIndex = 0; foreach (CollectionWriterTestDescriptor.WriterInvocations invocation in testDescriptor.Invocations) { switch (invocation) { case CollectionWriterTestDescriptor.WriterInvocations.StartCollection: ODataCollectionStartSerializationInfo serInfo = null; if (!string.IsNullOrEmpty(testDescriptor.CollectionTypeName)) { serInfo = new ODataCollectionStartSerializationInfo(); serInfo.CollectionTypeName = testDescriptor.CollectionTypeName; } writer.WriteStart(new ODataCollectionStart { Name = testDescriptor.CollectionName, SerializationInfo = serInfo }); break; case CollectionWriterTestDescriptor.WriterInvocations.Item: object payloadItem = payloadItems[payloadItemIndex]; ODataError error = payloadItem as ODataError; if (error != null) { throw new InvalidOperationException("Expected payload item but found an error."); } writer.WriteItem(payloadItem); payloadItemIndex++; break; case CollectionWriterTestDescriptor.WriterInvocations.Error: ODataAnnotatedError error2 = testDescriptor.PayloadItems[payloadItemIndex] as ODataAnnotatedError; if (error2 == null) { throw new InvalidOperationException("Expected an error but found a payload item."); } messageWriter.WriteError(error2.Error, error2.IncludeDebugInformation); payloadItemIndex++; break; case CollectionWriterTestDescriptor.WriterInvocations.EndCollection: writer.WriteEnd(); break; case CollectionWriterTestDescriptor.WriterInvocations.UserException: throw new Exception("User code triggered an exception."); default: break; } } if (flush) { writer.Flush(); } }
private void WriteError(ODataMessageWriterTestWrapper messageWriter, ODataError error, bool debug) { messageWriter.WriteError(error, debug); }