ProtoDump isn't currently useful, but will be when ToString emits JSON: fixed. ProtoBench: deleted; we should reinstate when there's a common proto3 benchmark. ProtoMunge: delete; not useful enough to merit fixing up. Removed the [TestFixture] from ByteStringTest as Travis uses a recent enough version of NUnit.pull/544/head
parent
286edc0fc2
commit
e75a10d8ff
19 changed files with 14 additions and 46509 deletions
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,31 +0,0 @@ |
||||
using System; |
||||
using System.Reflection; |
||||
using System.Runtime.CompilerServices; |
||||
using System.Runtime.InteropServices; |
||||
|
||||
// General Information about an assembly is controlled through the following |
||||
// set of attributes. Change these attribute values to modify the information |
||||
// associated with an assembly. |
||||
|
||||
[assembly: AssemblyTitle("ProtoBench")] |
||||
[assembly: AssemblyDescription("")] |
||||
[assembly: AssemblyConfiguration("")] |
||||
[assembly: AssemblyCompany("")] |
||||
[assembly: AssemblyProduct("ProtoBench")] |
||||
[assembly: AssemblyCopyright("Copyright © 2009")] |
||||
[assembly: AssemblyTrademark("")] |
||||
[assembly: AssemblyCulture("")] |
||||
|
||||
// Version information for an assembly consists of the following four values: |
||||
// |
||||
// Major Version |
||||
// Minor Version |
||||
// Build Number |
||||
// Revision |
||||
// |
||||
// You can specify all the values or you can default the Build and Revision Numbers |
||||
// by using the '*' as shown below: |
||||
// [assembly: AssemblyVersion("2.4.1.555")] |
||||
|
||||
[assembly: AssemblyVersion("2.4.1.555")] |
||||
[assembly: AssemblyFileVersion("2.4.1.555")] |
File diff suppressed because it is too large
Load Diff
@ -1,347 +0,0 @@ |
||||
// Generated by the protocol buffer compiler. DO NOT EDIT! |
||||
// source: google/protobuf/unittest_import.proto |
||||
#pragma warning disable 1591, 0612, 3021 |
||||
#region Designer generated code |
||||
|
||||
using pb = global::Google.ProtocolBuffers; |
||||
using pbc = global::Google.ProtocolBuffers.Collections; |
||||
using pbd = global::Google.ProtocolBuffers.Descriptors; |
||||
using scg = global::System.Collections.Generic; |
||||
namespace Google.ProtocolBuffers.TestProtos { |
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
public static partial class UnittestImport { |
||||
|
||||
#region Extension registration |
||||
public static void RegisterAllExtensions(pb::ExtensionRegistry registry) { |
||||
} |
||||
#endregion |
||||
#region Static variables |
||||
internal static pbd::MessageDescriptor internal__static_protobuf_unittest_import_ImportMessage__Descriptor; |
||||
internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ImportMessage, global::Google.ProtocolBuffers.TestProtos.ImportMessage.Builder> internal__static_protobuf_unittest_import_ImportMessage__FieldAccessorTable; |
||||
#endregion |
||||
#region Descriptor |
||||
public static pbd::FileDescriptor Descriptor { |
||||
get { return descriptor; } |
||||
} |
||||
private static pbd::FileDescriptor descriptor; |
||||
|
||||
static UnittestImport() { |
||||
byte[] descriptorData = global::System.Convert.FromBase64String( |
||||
string.Concat( |
||||
"CiVnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfaW1wb3J0LnByb3RvEhhwcm90", |
||||
"b2J1Zl91bml0dGVzdF9pbXBvcnQaLGdvb2dsZS9wcm90b2J1Zi91bml0dGVz", |
||||
"dF9pbXBvcnRfcHVibGljLnByb3RvIhoKDUltcG9ydE1lc3NhZ2USCQoBZBgB", |
||||
"IAEoBSo8CgpJbXBvcnRFbnVtEg4KCklNUE9SVF9GT08QBxIOCgpJTVBPUlRf", |
||||
"QkFSEAgSDgoKSU1QT1JUX0JBWhAJQkMKGGNvbS5nb29nbGUucHJvdG9idWYu", |
||||
"dGVzdEgB+AEBqgIhR29vZ2xlLlByb3RvY29sQnVmZmVycy5UZXN0UHJvdG9z", |
||||
"UAA=")); |
||||
pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) { |
||||
descriptor = root; |
||||
internal__static_protobuf_unittest_import_ImportMessage__Descriptor = Descriptor.MessageTypes[0]; |
||||
internal__static_protobuf_unittest_import_ImportMessage__FieldAccessorTable = |
||||
new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ImportMessage, global::Google.ProtocolBuffers.TestProtos.ImportMessage.Builder>(internal__static_protobuf_unittest_import_ImportMessage__Descriptor, |
||||
new string[] { "D", }); |
||||
pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance(); |
||||
RegisterAllExtensions(registry); |
||||
global::Google.ProtocolBuffers.TestProtos.UnittestImportPublic.RegisterAllExtensions(registry); |
||||
return registry; |
||||
}; |
||||
pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData, |
||||
new pbd::FileDescriptor[] { |
||||
global::Google.ProtocolBuffers.TestProtos.UnittestImportPublic.Descriptor, |
||||
}, assigner); |
||||
} |
||||
#endregion |
||||
|
||||
} |
||||
#region Enums |
||||
public enum ImportEnum { |
||||
IMPORT_FOO = 7, |
||||
IMPORT_BAR = 8, |
||||
IMPORT_BAZ = 9, |
||||
} |
||||
|
||||
#endregion |
||||
|
||||
#region Messages |
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
public sealed partial class ImportMessage : pb::GeneratedMessage<ImportMessage, ImportMessage.Builder> { |
||||
private ImportMessage() { } |
||||
private static readonly ImportMessage defaultInstance = new ImportMessage().MakeReadOnly(); |
||||
private static readonly string[] _importMessageFieldNames = new string[] { "d" }; |
||||
private static readonly uint[] _importMessageFieldTags = new uint[] { 8 }; |
||||
public static ImportMessage DefaultInstance { |
||||
get { return defaultInstance; } |
||||
} |
||||
|
||||
public override ImportMessage DefaultInstanceForType { |
||||
get { return DefaultInstance; } |
||||
} |
||||
|
||||
protected override ImportMessage ThisMessage { |
||||
get { return this; } |
||||
} |
||||
|
||||
public static pbd::MessageDescriptor Descriptor { |
||||
get { return global::Google.ProtocolBuffers.TestProtos.UnittestImport.internal__static_protobuf_unittest_import_ImportMessage__Descriptor; } |
||||
} |
||||
|
||||
protected override pb::FieldAccess.FieldAccessorTable<ImportMessage, ImportMessage.Builder> InternalFieldAccessors { |
||||
get { return global::Google.ProtocolBuffers.TestProtos.UnittestImport.internal__static_protobuf_unittest_import_ImportMessage__FieldAccessorTable; } |
||||
} |
||||
|
||||
public const int DFieldNumber = 1; |
||||
private bool hasD; |
||||
private int d_; |
||||
public bool HasD { |
||||
get { return hasD; } |
||||
} |
||||
public int D { |
||||
get { return d_; } |
||||
} |
||||
|
||||
public override bool IsInitialized { |
||||
get { |
||||
return true; |
||||
} |
||||
} |
||||
|
||||
public override void WriteTo(pb::ICodedOutputStream output) { |
||||
CalcSerializedSize(); |
||||
string[] field_names = _importMessageFieldNames; |
||||
if (hasD) { |
||||
output.WriteInt32(1, field_names[0], D); |
||||
} |
||||
UnknownFields.WriteTo(output); |
||||
} |
||||
|
||||
private int memoizedSerializedSize = -1; |
||||
public override int SerializedSize { |
||||
get { |
||||
int size = memoizedSerializedSize; |
||||
if (size != -1) return size; |
||||
return CalcSerializedSize(); |
||||
} |
||||
} |
||||
|
||||
private int CalcSerializedSize() { |
||||
int size = memoizedSerializedSize; |
||||
if (size != -1) return size; |
||||
|
||||
size = 0; |
||||
if (hasD) { |
||||
size += pb::CodedOutputStream.ComputeInt32Size(1, D); |
||||
} |
||||
size += UnknownFields.SerializedSize; |
||||
memoizedSerializedSize = size; |
||||
return size; |
||||
} |
||||
public static ImportMessage ParseFrom(pb::ByteString data) { |
||||
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); |
||||
} |
||||
public static ImportMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { |
||||
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); |
||||
} |
||||
public static ImportMessage ParseFrom(byte[] data) { |
||||
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); |
||||
} |
||||
public static ImportMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { |
||||
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); |
||||
} |
||||
public static ImportMessage ParseFrom(global::System.IO.Stream input) { |
||||
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); |
||||
} |
||||
public static ImportMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { |
||||
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); |
||||
} |
||||
public static ImportMessage ParseDelimitedFrom(global::System.IO.Stream input) { |
||||
return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); |
||||
} |
||||
public static ImportMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { |
||||
return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); |
||||
} |
||||
public static ImportMessage ParseFrom(pb::ICodedInputStream input) { |
||||
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); |
||||
} |
||||
public static ImportMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { |
||||
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); |
||||
} |
||||
private ImportMessage MakeReadOnly() { |
||||
return this; |
||||
} |
||||
|
||||
public static Builder CreateBuilder() { return new Builder(); } |
||||
public override Builder ToBuilder() { return CreateBuilder(this); } |
||||
public override Builder CreateBuilderForType() { return new Builder(); } |
||||
public static Builder CreateBuilder(ImportMessage prototype) { |
||||
return new Builder(prototype); |
||||
} |
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
public sealed partial class Builder : pb::GeneratedBuilder<ImportMessage, Builder> { |
||||
protected override Builder ThisBuilder { |
||||
get { return this; } |
||||
} |
||||
public Builder() { |
||||
result = DefaultInstance; |
||||
resultIsReadOnly = true; |
||||
} |
||||
internal Builder(ImportMessage cloneFrom) { |
||||
result = cloneFrom; |
||||
resultIsReadOnly = true; |
||||
} |
||||
|
||||
private bool resultIsReadOnly; |
||||
private ImportMessage result; |
||||
|
||||
private ImportMessage PrepareBuilder() { |
||||
if (resultIsReadOnly) { |
||||
ImportMessage original = result; |
||||
result = new ImportMessage(); |
||||
resultIsReadOnly = false; |
||||
MergeFrom(original); |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
public override bool IsInitialized { |
||||
get { return result.IsInitialized; } |
||||
} |
||||
|
||||
protected override ImportMessage MessageBeingBuilt { |
||||
get { return PrepareBuilder(); } |
||||
} |
||||
|
||||
public override Builder Clear() { |
||||
result = DefaultInstance; |
||||
resultIsReadOnly = true; |
||||
return this; |
||||
} |
||||
|
||||
public override Builder Clone() { |
||||
if (resultIsReadOnly) { |
||||
return new Builder(result); |
||||
} else { |
||||
return new Builder().MergeFrom(result); |
||||
} |
||||
} |
||||
|
||||
public override pbd::MessageDescriptor DescriptorForType { |
||||
get { return global::Google.ProtocolBuffers.TestProtos.ImportMessage.Descriptor; } |
||||
} |
||||
|
||||
public override ImportMessage DefaultInstanceForType { |
||||
get { return global::Google.ProtocolBuffers.TestProtos.ImportMessage.DefaultInstance; } |
||||
} |
||||
|
||||
public override ImportMessage BuildPartial() { |
||||
if (resultIsReadOnly) { |
||||
return result; |
||||
} |
||||
resultIsReadOnly = true; |
||||
return result.MakeReadOnly(); |
||||
} |
||||
|
||||
public override Builder MergeFrom(pb::IMessage other) { |
||||
if (other is ImportMessage) { |
||||
return MergeFrom((ImportMessage) other); |
||||
} else { |
||||
base.MergeFrom(other); |
||||
return this; |
||||
} |
||||
} |
||||
|
||||
public override Builder MergeFrom(ImportMessage other) { |
||||
if (other == global::Google.ProtocolBuffers.TestProtos.ImportMessage.DefaultInstance) return this; |
||||
PrepareBuilder(); |
||||
if (other.HasD) { |
||||
D = other.D; |
||||
} |
||||
this.MergeUnknownFields(other.UnknownFields); |
||||
return this; |
||||
} |
||||
|
||||
public override Builder MergeFrom(pb::ICodedInputStream input) { |
||||
return MergeFrom(input, pb::ExtensionRegistry.Empty); |
||||
} |
||||
|
||||
public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { |
||||
PrepareBuilder(); |
||||
pb::UnknownFieldSet.Builder unknownFields = null; |
||||
uint tag; |
||||
string field_name; |
||||
while (input.ReadTag(out tag, out field_name)) { |
||||
if(tag == 0 && field_name != null) { |
||||
int field_ordinal = global::System.Array.BinarySearch(_importMessageFieldNames, field_name, global::System.StringComparer.Ordinal); |
||||
if(field_ordinal >= 0) |
||||
tag = _importMessageFieldTags[field_ordinal]; |
||||
else { |
||||
if (unknownFields == null) { |
||||
unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); |
||||
} |
||||
ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); |
||||
continue; |
||||
} |
||||
} |
||||
switch (tag) { |
||||
case 0: { |
||||
throw pb::InvalidProtocolBufferException.InvalidTag(); |
||||
} |
||||
default: { |
||||
if (pb::WireFormat.IsEndGroupTag(tag)) { |
||||
if (unknownFields != null) { |
||||
this.UnknownFields = unknownFields.Build(); |
||||
} |
||||
return this; |
||||
} |
||||
if (unknownFields == null) { |
||||
unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); |
||||
} |
||||
ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); |
||||
break; |
||||
} |
||||
case 8: { |
||||
result.hasD = input.ReadInt32(ref result.d_); |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
|
||||
if (unknownFields != null) { |
||||
this.UnknownFields = unknownFields.Build(); |
||||
} |
||||
return this; |
||||
} |
||||
|
||||
|
||||
public bool HasD { |
||||
get { return result.hasD; } |
||||
} |
||||
public int D { |
||||
get { return result.D; } |
||||
set { SetD(value); } |
||||
} |
||||
public Builder SetD(int value) { |
||||
PrepareBuilder(); |
||||
result.hasD = true; |
||||
result.d_ = value; |
||||
return this; |
||||
} |
||||
public Builder ClearD() { |
||||
PrepareBuilder(); |
||||
result.hasD = false; |
||||
result.d_ = 0; |
||||
return this; |
||||
} |
||||
} |
||||
static ImportMessage() { |
||||
object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestImport.Descriptor, null); |
||||
} |
||||
} |
||||
|
||||
#endregion |
||||
|
||||
} |
||||
|
||||
#endregion Designer generated code |
@ -1,333 +0,0 @@ |
||||
// Generated by the protocol buffer compiler. DO NOT EDIT! |
||||
// source: google/protobuf/unittest_import_public.proto |
||||
#pragma warning disable 1591, 0612, 3021 |
||||
#region Designer generated code |
||||
|
||||
using pb = global::Google.ProtocolBuffers; |
||||
using pbc = global::Google.ProtocolBuffers.Collections; |
||||
using pbd = global::Google.ProtocolBuffers.Descriptors; |
||||
using scg = global::System.Collections.Generic; |
||||
namespace Google.ProtocolBuffers.TestProtos { |
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
public static partial class UnittestImportPublic { |
||||
|
||||
#region Extension registration |
||||
public static void RegisterAllExtensions(pb::ExtensionRegistry registry) { |
||||
} |
||||
#endregion |
||||
#region Static variables |
||||
internal static pbd::MessageDescriptor internal__static_protobuf_unittest_import_PublicImportMessage__Descriptor; |
||||
internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.PublicImportMessage, global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.Builder> internal__static_protobuf_unittest_import_PublicImportMessage__FieldAccessorTable; |
||||
#endregion |
||||
#region Descriptor |
||||
public static pbd::FileDescriptor Descriptor { |
||||
get { return descriptor; } |
||||
} |
||||
private static pbd::FileDescriptor descriptor; |
||||
|
||||
static UnittestImportPublic() { |
||||
byte[] descriptorData = global::System.Convert.FromBase64String( |
||||
string.Concat( |
||||
"Cixnb29nbGUvcHJvdG9idWYvdW5pdHRlc3RfaW1wb3J0X3B1YmxpYy5wcm90", |
||||
"bxIYcHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0IiAKE1B1YmxpY0ltcG9ydE1l", |
||||
"c3NhZ2USCQoBZRgBIAEoBUI+Chhjb20uZ29vZ2xlLnByb3RvYnVmLnRlc3Sq", |
||||
"AiFHb29nbGUuUHJvdG9jb2xCdWZmZXJzLlRlc3RQcm90b3M=")); |
||||
pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) { |
||||
descriptor = root; |
||||
internal__static_protobuf_unittest_import_PublicImportMessage__Descriptor = Descriptor.MessageTypes[0]; |
||||
internal__static_protobuf_unittest_import_PublicImportMessage__FieldAccessorTable = |
||||
new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.PublicImportMessage, global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.Builder>(internal__static_protobuf_unittest_import_PublicImportMessage__Descriptor, |
||||
new string[] { "E", }); |
||||
pb::ExtensionRegistry registry = pb::ExtensionRegistry.CreateInstance(); |
||||
RegisterAllExtensions(registry); |
||||
return registry; |
||||
}; |
||||
pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData, |
||||
new pbd::FileDescriptor[] { |
||||
}, assigner); |
||||
} |
||||
#endregion |
||||
|
||||
} |
||||
#region Messages |
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
public sealed partial class PublicImportMessage : pb::GeneratedMessage<PublicImportMessage, PublicImportMessage.Builder> { |
||||
private PublicImportMessage() { } |
||||
private static readonly PublicImportMessage defaultInstance = new PublicImportMessage().MakeReadOnly(); |
||||
private static readonly string[] _publicImportMessageFieldNames = new string[] { "e" }; |
||||
private static readonly uint[] _publicImportMessageFieldTags = new uint[] { 8 }; |
||||
public static PublicImportMessage DefaultInstance { |
||||
get { return defaultInstance; } |
||||
} |
||||
|
||||
public override PublicImportMessage DefaultInstanceForType { |
||||
get { return DefaultInstance; } |
||||
} |
||||
|
||||
protected override PublicImportMessage ThisMessage { |
||||
get { return this; } |
||||
} |
||||
|
||||
public static pbd::MessageDescriptor Descriptor { |
||||
get { return global::Google.ProtocolBuffers.TestProtos.UnittestImportPublic.internal__static_protobuf_unittest_import_PublicImportMessage__Descriptor; } |
||||
} |
||||
|
||||
protected override pb::FieldAccess.FieldAccessorTable<PublicImportMessage, PublicImportMessage.Builder> InternalFieldAccessors { |
||||
get { return global::Google.ProtocolBuffers.TestProtos.UnittestImportPublic.internal__static_protobuf_unittest_import_PublicImportMessage__FieldAccessorTable; } |
||||
} |
||||
|
||||
public const int EFieldNumber = 1; |
||||
private bool hasE; |
||||
private int e_; |
||||
public bool HasE { |
||||
get { return hasE; } |
||||
} |
||||
public int E { |
||||
get { return e_; } |
||||
} |
||||
|
||||
public override bool IsInitialized { |
||||
get { |
||||
return true; |
||||
} |
||||
} |
||||
|
||||
public override void WriteTo(pb::ICodedOutputStream output) { |
||||
CalcSerializedSize(); |
||||
string[] field_names = _publicImportMessageFieldNames; |
||||
if (hasE) { |
||||
output.WriteInt32(1, field_names[0], E); |
||||
} |
||||
UnknownFields.WriteTo(output); |
||||
} |
||||
|
||||
private int memoizedSerializedSize = -1; |
||||
public override int SerializedSize { |
||||
get { |
||||
int size = memoizedSerializedSize; |
||||
if (size != -1) return size; |
||||
return CalcSerializedSize(); |
||||
} |
||||
} |
||||
|
||||
private int CalcSerializedSize() { |
||||
int size = memoizedSerializedSize; |
||||
if (size != -1) return size; |
||||
|
||||
size = 0; |
||||
if (hasE) { |
||||
size += pb::CodedOutputStream.ComputeInt32Size(1, E); |
||||
} |
||||
size += UnknownFields.SerializedSize; |
||||
memoizedSerializedSize = size; |
||||
return size; |
||||
} |
||||
public static PublicImportMessage ParseFrom(pb::ByteString data) { |
||||
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); |
||||
} |
||||
public static PublicImportMessage ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { |
||||
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); |
||||
} |
||||
public static PublicImportMessage ParseFrom(byte[] data) { |
||||
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); |
||||
} |
||||
public static PublicImportMessage ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { |
||||
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); |
||||
} |
||||
public static PublicImportMessage ParseFrom(global::System.IO.Stream input) { |
||||
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); |
||||
} |
||||
public static PublicImportMessage ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { |
||||
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); |
||||
} |
||||
public static PublicImportMessage ParseDelimitedFrom(global::System.IO.Stream input) { |
||||
return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); |
||||
} |
||||
public static PublicImportMessage ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { |
||||
return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); |
||||
} |
||||
public static PublicImportMessage ParseFrom(pb::ICodedInputStream input) { |
||||
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); |
||||
} |
||||
public static PublicImportMessage ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { |
||||
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); |
||||
} |
||||
private PublicImportMessage MakeReadOnly() { |
||||
return this; |
||||
} |
||||
|
||||
public static Builder CreateBuilder() { return new Builder(); } |
||||
public override Builder ToBuilder() { return CreateBuilder(this); } |
||||
public override Builder CreateBuilderForType() { return new Builder(); } |
||||
public static Builder CreateBuilder(PublicImportMessage prototype) { |
||||
return new Builder(prototype); |
||||
} |
||||
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
public sealed partial class Builder : pb::GeneratedBuilder<PublicImportMessage, Builder> { |
||||
protected override Builder ThisBuilder { |
||||
get { return this; } |
||||
} |
||||
public Builder() { |
||||
result = DefaultInstance; |
||||
resultIsReadOnly = true; |
||||
} |
||||
internal Builder(PublicImportMessage cloneFrom) { |
||||
result = cloneFrom; |
||||
resultIsReadOnly = true; |
||||
} |
||||
|
||||
private bool resultIsReadOnly; |
||||
private PublicImportMessage result; |
||||
|
||||
private PublicImportMessage PrepareBuilder() { |
||||
if (resultIsReadOnly) { |
||||
PublicImportMessage original = result; |
||||
result = new PublicImportMessage(); |
||||
resultIsReadOnly = false; |
||||
MergeFrom(original); |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
public override bool IsInitialized { |
||||
get { return result.IsInitialized; } |
||||
} |
||||
|
||||
protected override PublicImportMessage MessageBeingBuilt { |
||||
get { return PrepareBuilder(); } |
||||
} |
||||
|
||||
public override Builder Clear() { |
||||
result = DefaultInstance; |
||||
resultIsReadOnly = true; |
||||
return this; |
||||
} |
||||
|
||||
public override Builder Clone() { |
||||
if (resultIsReadOnly) { |
||||
return new Builder(result); |
||||
} else { |
||||
return new Builder().MergeFrom(result); |
||||
} |
||||
} |
||||
|
||||
public override pbd::MessageDescriptor DescriptorForType { |
||||
get { return global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.Descriptor; } |
||||
} |
||||
|
||||
public override PublicImportMessage DefaultInstanceForType { |
||||
get { return global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.DefaultInstance; } |
||||
} |
||||
|
||||
public override PublicImportMessage BuildPartial() { |
||||
if (resultIsReadOnly) { |
||||
return result; |
||||
} |
||||
resultIsReadOnly = true; |
||||
return result.MakeReadOnly(); |
||||
} |
||||
|
||||
public override Builder MergeFrom(pb::IMessage other) { |
||||
if (other is PublicImportMessage) { |
||||
return MergeFrom((PublicImportMessage) other); |
||||
} else { |
||||
base.MergeFrom(other); |
||||
return this; |
||||
} |
||||
} |
||||
|
||||
public override Builder MergeFrom(PublicImportMessage other) { |
||||
if (other == global::Google.ProtocolBuffers.TestProtos.PublicImportMessage.DefaultInstance) return this; |
||||
PrepareBuilder(); |
||||
if (other.HasE) { |
||||
E = other.E; |
||||
} |
||||
this.MergeUnknownFields(other.UnknownFields); |
||||
return this; |
||||
} |
||||
|
||||
public override Builder MergeFrom(pb::ICodedInputStream input) { |
||||
return MergeFrom(input, pb::ExtensionRegistry.Empty); |
||||
} |
||||
|
||||
public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { |
||||
PrepareBuilder(); |
||||
pb::UnknownFieldSet.Builder unknownFields = null; |
||||
uint tag; |
||||
string field_name; |
||||
while (input.ReadTag(out tag, out field_name)) { |
||||
if(tag == 0 && field_name != null) { |
||||
int field_ordinal = global::System.Array.BinarySearch(_publicImportMessageFieldNames, field_name, global::System.StringComparer.Ordinal); |
||||
if(field_ordinal >= 0) |
||||
tag = _publicImportMessageFieldTags[field_ordinal]; |
||||
else { |
||||
if (unknownFields == null) { |
||||
unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); |
||||
} |
||||
ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); |
||||
continue; |
||||
} |
||||
} |
||||
switch (tag) { |
||||
case 0: { |
||||
throw pb::InvalidProtocolBufferException.InvalidTag(); |
||||
} |
||||
default: { |
||||
if (pb::WireFormat.IsEndGroupTag(tag)) { |
||||
if (unknownFields != null) { |
||||
this.UnknownFields = unknownFields.Build(); |
||||
} |
||||
return this; |
||||
} |
||||
if (unknownFields == null) { |
||||
unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); |
||||
} |
||||
ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); |
||||
break; |
||||
} |
||||
case 8: { |
||||
result.hasE = input.ReadInt32(ref result.e_); |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
|
||||
if (unknownFields != null) { |
||||
this.UnknownFields = unknownFields.Build(); |
||||
} |
||||
return this; |
||||
} |
||||
|
||||
|
||||
public bool HasE { |
||||
get { return result.hasE; } |
||||
} |
||||
public int E { |
||||
get { return result.E; } |
||||
set { SetE(value); } |
||||
} |
||||
public Builder SetE(int value) { |
||||
PrepareBuilder(); |
||||
result.hasE = true; |
||||
result.e_ = value; |
||||
return this; |
||||
} |
||||
public Builder ClearE() { |
||||
PrepareBuilder(); |
||||
result.hasE = false; |
||||
result.e_ = 0; |
||||
return this; |
||||
} |
||||
} |
||||
static PublicImportMessage() { |
||||
object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.UnittestImportPublic.Descriptor, null); |
||||
} |
||||
} |
||||
|
||||
#endregion |
||||
|
||||
} |
||||
|
||||
#endregion Designer generated code |
@ -1,3 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<configuration> |
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup></configuration> |
Binary file not shown.
Binary file not shown.
@ -1,307 +0,0 @@ |
||||
#region Copyright notice and license |
||||
|
||||
// Protocol Buffers - Google's data interchange format |
||||
// Copyright 2008 Google Inc. All rights reserved. |
||||
// http://github.com/jskeet/dotnet-protobufs/ |
||||
// Original C++/Java/Python code: |
||||
// http://code.google.com/p/protobuf/ |
||||
// |
||||
// Redistribution and use in source and binary forms, with or without |
||||
// modification, are permitted provided that the following conditions are |
||||
// met: |
||||
// |
||||
// * Redistributions of source code must retain the above copyright |
||||
// notice, this list of conditions and the following disclaimer. |
||||
// * Redistributions in binary form must reproduce the above |
||||
// copyright notice, this list of conditions and the following disclaimer |
||||
// in the documentation and/or other materials provided with the |
||||
// distribution. |
||||
// * Neither the name of Google Inc. nor the names of its |
||||
// contributors may be used to endorse or promote products derived from |
||||
// this software without specific prior written permission. |
||||
// |
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
|
||||
#endregion |
||||
|
||||
using System; |
||||
using System.Collections; |
||||
using System.Collections.Generic; |
||||
using System.IO; |
||||
using Google.Protobuf; |
||||
using Google.Protobuf.Descriptors; |
||||
using Google.ProtocolBuffers.Descriptors; |
||||
|
||||
namespace Google.ProtocolBuffers.ProtoMunge |
||||
{ |
||||
/// <summary> |
||||
/// Utility console application which takes a message descriptor and a corresponding message, |
||||
/// and produces a new message with similar but random data. The data is the same length |
||||
/// as the original, but with random values within appropriate bands. (For instance, a compressed |
||||
/// integer in the range 0-127 will end up as another integer in the same range, to keep the length |
||||
/// the same.) |
||||
/// TODO(jonskeet): Potentially refactor to use an instance instead, making it simpler to |
||||
/// be thread-safe for external use. |
||||
/// </summary> |
||||
public sealed class Program |
||||
{ |
||||
private static readonly Random rng = new Random(); |
||||
|
||||
private static int Main(string[] args) |
||||
{ |
||||
if (args.Length != 3) |
||||
{ |
||||
Console.Error.WriteLine("Usage: ProtoMunge <descriptor type name> <input data> <output file>"); |
||||
Console.Error.WriteLine( |
||||
"The descriptor type name is the fully-qualified message name, including assembly."); |
||||
Console.Error.WriteLine( |
||||
"(At a future date it may be possible to do this without building the .NET assembly at all.)"); |
||||
return 1; |
||||
} |
||||
IMessage defaultMessage; |
||||
try |
||||
{ |
||||
defaultMessage = MessageUtil.GetDefaultMessage(args[0]); |
||||
} |
||||
catch (ArgumentException e) |
||||
{ |
||||
Console.Error.WriteLine(e.Message); |
||||
return 1; |
||||
} |
||||
try |
||||
{ |
||||
IBuilder builder = defaultMessage.WeakCreateBuilderForType(); |
||||
byte[] inputData = File.ReadAllBytes(args[1]); |
||||
builder.WeakMergeFrom(ByteString.CopyFrom(inputData)); |
||||
IMessage original = builder.WeakBuild(); |
||||
IMessage munged = Munge(original); |
||||
if (original.SerializedSize != munged.SerializedSize) |
||||
{ |
||||
throw new Exception("Serialized sizes don't match"); |
||||
} |
||||
File.WriteAllBytes(args[2], munged.ToByteArray()); |
||||
return 0; |
||||
} |
||||
catch (Exception e) |
||||
{ |
||||
Console.Error.WriteLine("Error: {0}", e.Message); |
||||
Console.Error.WriteLine(); |
||||
Console.Error.WriteLine("Detailed exception information: {0}", e); |
||||
return 1; |
||||
} |
||||
} |
||||
|
||||
/// <summary> |
||||
/// Munges a message recursively. |
||||
/// </summary> |
||||
/// <returns>A new message of the same type as the original message, |
||||
/// but munged so that all the data is desensitised.</returns> |
||||
private static IMessage Munge(IMessage message) |
||||
{ |
||||
IBuilder builder = message.WeakCreateBuilderForType(); |
||||
foreach (var pair in message.AllFields) |
||||
{ |
||||
if (pair.Key.IsRepeated) |
||||
{ |
||||
foreach (object singleValue in (IEnumerable) pair.Value) |
||||
{ |
||||
builder.WeakAddRepeatedField(pair.Key, CheckedMungeValue(pair.Key, singleValue)); |
||||
} |
||||
} |
||||
else |
||||
{ |
||||
builder[pair.Key] = CheckedMungeValue(pair.Key, pair.Value); |
||||
} |
||||
} |
||||
IMessage munged = builder.WeakBuild(); |
||||
if (message.SerializedSize != munged.SerializedSize) |
||||
{ |
||||
Console.WriteLine("Sub message sizes: {0}/{1}", message.SerializedSize, munged.SerializedSize); |
||||
} |
||||
return munged; |
||||
} |
||||
|
||||
/// <summary> |
||||
/// Munges a single value and checks that the length ends up the same as it was before. |
||||
/// </summary> |
||||
private static object CheckedMungeValue(FieldDescriptor fieldDescriptor, object value) |
||||
{ |
||||
int currentSize = CodedOutputStream.ComputeFieldSize(fieldDescriptor.FieldType, fieldDescriptor.FieldNumber, |
||||
value); |
||||
object mungedValue = MungeValue(fieldDescriptor, value); |
||||
int mungedSize = CodedOutputStream.ComputeFieldSize(fieldDescriptor.FieldType, fieldDescriptor.FieldNumber, |
||||
mungedValue); |
||||
// Exceptions log more easily than assertions |
||||
if (currentSize != mungedSize) |
||||
{ |
||||
throw new Exception("Munged value had wrong size. Field type: " + fieldDescriptor.FieldType |
||||
+ "; old value: " + value + "; new value: " + mungedValue); |
||||
} |
||||
return mungedValue; |
||||
} |
||||
|
||||
/// <summary> |
||||
/// Munges a single value of the specified field descriptor. (i.e. if the field is |
||||
/// actually a repeated int, this method receives a single int value to munge, and |
||||
/// is called multiple times). |
||||
/// </summary> |
||||
private static object MungeValue(FieldDescriptor fieldDescriptor, object value) |
||||
{ |
||||
switch (fieldDescriptor.FieldType) |
||||
{ |
||||
case FieldType.SInt64: |
||||
case FieldType.Int64: |
||||
return (long) MungeVarint64((ulong) (long) value); |
||||
case FieldType.UInt64: |
||||
return MungeVarint64((ulong) value); |
||||
case FieldType.SInt32: |
||||
return (int) MungeVarint32((uint) (int) value); |
||||
case FieldType.Int32: |
||||
return MungeInt32((int) value); |
||||
case FieldType.UInt32: |
||||
return MungeVarint32((uint) value); |
||||
case FieldType.Double: |
||||
return rng.NextDouble(); |
||||
case FieldType.Float: |
||||
return (float) rng.NextDouble(); |
||||
case FieldType.Fixed64: |
||||
{ |
||||
byte[] data = new byte[8]; |
||||
rng.NextBytes(data); |
||||
return BitConverter.ToUInt64(data, 0); |
||||
} |
||||
case FieldType.Fixed32: |
||||
{ |
||||
byte[] data = new byte[4]; |
||||
rng.NextBytes(data); |
||||
return BitConverter.ToUInt32(data, 0); |
||||
} |
||||
case FieldType.Bool: |
||||
return rng.Next(2) == 1; |
||||
case FieldType.String: |
||||
return MungeString((string) value); |
||||
case FieldType.Group: |
||||
case FieldType.Message: |
||||
return Munge((IMessage) value); |
||||
case FieldType.Bytes: |
||||
return MungeByteString((ByteString) value); |
||||
case FieldType.SFixed64: |
||||
{ |
||||
byte[] data = new byte[8]; |
||||
rng.NextBytes(data); |
||||
return BitConverter.ToInt64(data, 0); |
||||
} |
||||
case FieldType.SFixed32: |
||||
{ |
||||
byte[] data = new byte[4]; |
||||
rng.NextBytes(data); |
||||
return BitConverter.ToInt32(data, 0); |
||||
} |
||||
case FieldType.Enum: |
||||
return MungeEnum(fieldDescriptor, (EnumValueDescriptor) value); |
||||
default: |
||||
// TODO(jonskeet): Different exception? |
||||
throw new ArgumentException("Invalid field descriptor"); |
||||
} |
||||
} |
||||
|
||||
private static object MungeString(string original) |
||||
{ |
||||
foreach (char c in original) |
||||
{ |
||||
if (c > 127) |
||||
{ |
||||
throw new ArgumentException("Can't handle non-ascii yet"); |
||||
} |
||||
} |
||||
char[] chars = new char[original.Length]; |
||||
// Convert to pure ASCII - no control characters. |
||||
for (int i = 0; i < chars.Length; i++) |
||||
{ |
||||
chars[i] = (char) rng.Next(32, 127); |
||||
} |
||||
return new string(chars); |
||||
} |
||||
|
||||
/// <summary> |
||||
/// Int32 fields are slightly strange - we need to keep the sign the same way it is: |
||||
/// negative numbers can munge to any other negative number (it'll always take |
||||
/// 10 bytes) but positive numbers have to stay positive, so we can't use the |
||||
/// full range of 32 bits. |
||||
/// </summary> |
||||
private static int MungeInt32(int value) |
||||
{ |
||||
if (value < 0) |
||||
{ |
||||
return rng.Next(int.MinValue, 0); |
||||
} |
||||
int length = CodedOutputStream.ComputeRawVarint32Size((uint) value); |
||||
uint min = length == 1 ? 0 : 1U << ((length - 1)*7); |
||||
uint max = length == 5 ? int.MaxValue : (1U << (length*7)) - 1; |
||||
return (int) NextRandomUInt64(min, max); |
||||
} |
||||
|
||||
private static uint MungeVarint32(uint original) |
||||
{ |
||||
int length = CodedOutputStream.ComputeRawVarint32Size(original); |
||||
uint min = length == 1 ? 0 : 1U << ((length - 1)*7); |
||||
uint max = length == 5 ? uint.MaxValue : (1U << (length*7)) - 1; |
||||
return (uint) NextRandomUInt64(min, max); |
||||
} |
||||
|
||||
private static ulong MungeVarint64(ulong original) |
||||
{ |
||||
int length = CodedOutputStream.ComputeRawVarint64Size(original); |
||||
ulong min = length == 1 ? 0 : 1UL << ((length - 1)*7); |
||||
ulong max = length == 10 ? ulong.MaxValue : (1UL << (length*7)) - 1; |
||||
return NextRandomUInt64(min, max); |
||||
} |
||||
|
||||
/// <summary> |
||||
/// Returns a random number in the range [min, max] (both inclusive). |
||||
/// </summary> |
||||
private static ulong NextRandomUInt64(ulong min, ulong max) |
||||
{ |
||||
if (min > max) |
||||
{ |
||||
throw new ArgumentException("min must be <= max; min=" + min + "; max = " + max); |
||||
} |
||||
ulong range = max - min; |
||||
// This isn't actually terribly good at very large ranges - but it doesn't really matter for the sake |
||||
// of this program. |
||||
return min + (ulong) (range*rng.NextDouble()); |
||||
} |
||||
|
||||
private static object MungeEnum(FieldDescriptor fieldDescriptor, EnumValueDescriptor original) |
||||
{ |
||||
// Find all the values which get encoded to the same size as the current value, and pick one at random |
||||
int originalSize = CodedOutputStream.ComputeRawVarint32Size((uint) original.Number); |
||||
List<EnumValueDescriptor> sameSizeValues = new List<EnumValueDescriptor>(); |
||||
foreach (EnumValueDescriptor candidate in fieldDescriptor.EnumType.Values) |
||||
{ |
||||
if (CodedOutputStream.ComputeRawVarint32Size((uint) candidate.Number) == originalSize) |
||||
{ |
||||
sameSizeValues.Add(candidate); |
||||
} |
||||
} |
||||
return sameSizeValues[rng.Next(sameSizeValues.Count)]; |
||||
} |
||||
|
||||
private static object MungeByteString(ByteString byteString) |
||||
{ |
||||
byte[] data = new byte[byteString.Length]; |
||||
rng.NextBytes(data); |
||||
return ByteString.CopyFrom(data); |
||||
} |
||||
} |
||||
} |
@ -1,30 +0,0 @@ |
||||
using System.Reflection; |
||||
using System.Runtime.CompilerServices; |
||||
using System.Runtime.InteropServices; |
||||
|
||||
// General Information about an assembly is controlled through the following |
||||
// set of attributes. Change these attribute values to modify the information |
||||
// associated with an assembly. |
||||
|
||||
[assembly: AssemblyTitle("ProtoMunge")] |
||||
[assembly: AssemblyDescription("")] |
||||
[assembly: AssemblyConfiguration("")] |
||||
[assembly: AssemblyCompany("")] |
||||
[assembly: AssemblyProduct("ProtoMunge")] |
||||
[assembly: AssemblyCopyright("Copyright © 2008")] |
||||
[assembly: AssemblyTrademark("")] |
||||
[assembly: AssemblyCulture("")] |
||||
|
||||
// Version information for an assembly consists of the following four values: |
||||
// |
||||
// Major Version |
||||
// Minor Version |
||||
// Build Number |
||||
// Revision |
||||
// |
||||
// You can specify all the values or you can default the Build and Revision Numbers |
||||
// by using the '*' as shown below: |
||||
// [assembly: AssemblyVersion("2.4.1.555")] |
||||
|
||||
[assembly: AssemblyVersion("2.4.1.555")] |
||||
[assembly: AssemblyFileVersion("2.4.1.555")] |
@ -1,3 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<configuration> |
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup></configuration> |
Loading…
Reference in new issue