other)
+ // {
+ // return Value.CompareTo(other.Value);
+ // }
+ //}
+}
\ No newline at end of file
diff --git a/Tests/bin/Debug/BenchmarkDotNet.Artifacts/results/SerializersBenchMark-report-github.md b/Tests/bin/Debug/BenchmarkDotNet.Artifacts/results/SerializersBenchMark-report-github.md
new file mode 100644
index 0000000..2eb2488
--- /dev/null
+++ b/Tests/bin/Debug/BenchmarkDotNet.Artifacts/results/SerializersBenchMark-report-github.md
@@ -0,0 +1,16 @@
+```ini
+
+BenchmarkDotNet=v0.9.7.0
+OS=Microsoft Windows NT 10.0.10586.0
+Processor=Intel(R) Core(TM) i7-2600 CPU 3.40GHz, ProcessorCount=8
+Frequency=3331525 ticks, Resolution=300.1628 ns, Timer=TSC
+HostCLR=MS.NET 4.0.30319.42000, Arch=64-bit RELEASE [RyuJIT]
+JitModules=clrjit-v4.6.1080.0
+
+Type=SerializersBenchMark Mode=Throughput
+
+```
+ Method | Median | StdDev |
+--------- |----------- |---------- |
+ ProtoBuf | 10.2220 us | 1.0464 us |
+ Native | 28.8816 us | 0.5874 us |
diff --git a/Tests/bin/Debug/BenchmarkDotNet.Artifacts/results/SerializersBenchMark-report.csv b/Tests/bin/Debug/BenchmarkDotNet.Artifacts/results/SerializersBenchMark-report.csv
new file mode 100644
index 0000000..c3b523a
--- /dev/null
+++ b/Tests/bin/Debug/BenchmarkDotNet.Artifacts/results/SerializersBenchMark-report.csv
@@ -0,0 +1,3 @@
+Type;Method;Mode;Platform;Jit;Framework;Toolchain;Runtime;LaunchCount;WarmupCount;TargetCount;Affinity;Median;StdDev
+SerializersBenchMark;ProtoBuf;Throughput;Host;Host;Host;Classic;Host;Auto;Auto;Auto;Auto;10.2220 us;1.0464 us
+SerializersBenchMark;Native;Throughput;Host;Host;Host;Classic;Host;Auto;Auto;Auto;Auto;28.8816 us;0.5874 us
diff --git a/Tests/bin/Debug/BenchmarkDotNet.Artifacts/results/SerializersBenchMark-report.html b/Tests/bin/Debug/BenchmarkDotNet.Artifacts/results/SerializersBenchMark-report.html
new file mode 100644
index 0000000..e6a50d6
--- /dev/null
+++ b/Tests/bin/Debug/BenchmarkDotNet.Artifacts/results/SerializersBenchMark-report.html
@@ -0,0 +1,16 @@
+
+BenchmarkDotNet=v0.9.7.0
+OS=Microsoft Windows NT 10.0.10586.0
+Processor=Intel(R) Core(TM) i7-2600 CPU 3.40GHz, ProcessorCount=8
+Frequency=3331525 ticks, Resolution=300.1628 ns, Timer=TSC
+HostCLR=MS.NET 4.0.30319.42000, Arch=64-bit RELEASE [RyuJIT]
+JitModules=clrjit-v4.6.1080.0
+
+Type=SerializersBenchMark Mode=Throughput
+
+
+
+Method | Median | StdDev |
+
---|
ProtoBuf | 10.2220 us | 1.0464 us |
+
Native | 28.8816 us | 0.5874 us |
+
diff --git a/Tests/bin/Debug/BenchmarkDotNet.xml b/Tests/bin/Debug/BenchmarkDotNet.xml
new file mode 100644
index 0000000..00bcc2b
--- /dev/null
+++ b/Tests/bin/Debug/BenchmarkDotNet.xml
@@ -0,0 +1,464 @@
+
+
+
+ BenchmarkDotNet
+
+
+
+
+ This attribute has the same effect as writing [Config("Jobs=Dry")]
+
+
+
+
+ determines if all auto-generated files should be kept or removed after running benchmarks
+
+
+
+ The events are guaranteed to happen in the following sequence:
+ Start // When the Benchmark run is started and most importantly BEFORE the process has been launched
+ ProcessStarted // After the Process (in a "Diagnostic" run) has been launched
+ AfterBenchmarkHasRun // After a "Warmup" iteration of the Benchmark has run, i.e. we know the [Benchmark] method has been
+ // executed and JITted, this is important if the Diagnoser needs to know when it can do a Memory Dump.
+ ProcessStopped // Once the Process (in a "Diagnostic" run) has stopped/completed
+ Stop // At the end, when the entire Benchmark run has complete
+ DisplayResults // When the results/output should be displayed
+
+
+
+ This is an internal interface, it allows Exporters to specify that
+ they depends on another Exporter (see RPlotExporter for example)
+
+
+
+
+ replaces all invalid file name chars with their number representation
+
+
+
+
+ From http://bryan.reynoldslive.com/post/Wrapping-string-data.aspx
+ Returns a list of strings no larger than the max length sent in.
+
+ useful function used to wrap string text for reporting.
+ Text to be wrapped into of List of Strings
+ Max length you want each line to be.
+ List of strings
+
+
+
+ is expensive to call (creates new process)
+
+
+
+
+ The frequency of the timer as the number of ticks per second.
+
+
+
+ disabled by default to avoid perf hit for auto-generated program that also calls this method
+
+
+
+ System timer
+
+
+
+
+ Time Stamp Counter
+
+
+
+
+
+ High Precision Event Timer
+
+
+
+
+
+ This method chooses the best time unit for representing a set of time measurements.
+
+ The list of time measurements in nanoseconds.
+ Best time unit.
+
+
+
+ Desired time of execution of an iteration (in ms).
+
+
+
+
+ ProcessorAffinity for the benchmark process.
+
+
+
+
+
+ Create a new job as a copy of the original job with specific time of a single iteration
+
+ Original job
+ Iteration time in Millisecond or Auto
+
+
+
+
+ Desktop CLR
+
+
+
+
+ Desktop CLR hosted on Windows with Dot Net eXecution (DNX)
+
+
+
+
+ Cross-platform CoreCLR runtime
+
+
+
+
+ Adds prefix for each line
+
+
+
+
+ Calculates the Nth percentile from the set of values
+
+
+ The implementation is expected to be consitent with the one from Excel.
+ It's a quite common to export bench output into .csv for further analysis
+ And it's a good idea to have same results from all tools being used.
+
+ Sequence of the values to be calculated
+ Value in range 0..100
+ Percentile from the set of values
+
+
+
+ The basic captured statistics for a benchmark.
+
+
+
+
+ Gets the number of operations performed.
+
+
+
+
+ Gets the total number of nanoseconds it took to perform all operations.
+
+
+
+
+ Creates an instance of class.
+
+
+
+
+ The number of operations performed.
+ The total number of nanoseconds it took to perform all operations.
+
+
+
+ Parses the benchmark statistics from the plain text line.
+
+ E.g. given the input :
+
+ Target 1: 10 op, 1005842518 ns
+
+ Will extract the number of performed and the
+ total number of it took to perform them.
+
+ The logger to write any diagnostic messages to.
+ The line to parse.
+ An instance of if parsed successfully. Null in case of any trouble.
+
+
+
+ Gets the number of operations performed per second (ops/sec).
+
+
+
+
+ Gets the average duration of one operation in nanoseconds.
+
+
+
+
+
+
+
+
+
+ Warmup for idle method (overhead)
+
+
+
+
+ Idle method (overhead)
+
+
+
+
+ Warmup for main benchmark iteration (with overhead)
+
+
+
+
+ Main benchmark iteration (with overhead)
+
+
+
+
+ Target - TargetIdle (without overhead)
+
+
+
+
+ Unknown
+
+
+
+
+ generates project.lock.json that tells compiler where to take dlls and source from
+ and builds executable and copies all required dll's
+
+
+
+
+ we use custom output path in order to avoid any future problems related to dotnet cli paths changes
+
+
+
+
+ we need our folder to be on the same level as the project that we want to reference
+ we are limited by xprojs (by default compiles all .cs files in all subfolders, Program.cs could be doubled and fail the build)
+ and also by nuget internal implementation like looking for global.json file in parent folders
+
+
+
+
+ we can not simply call assemblyName.Version.ToString() because it is different than package version which can contain (and often does) text
+ we are using the wildcard to get latest version of package/project restored
+
+
+
+
+ returns true if any of the validators has TreatsWarningsAsErrors == true
+
+
+
+
+ Represents the json array.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The capacity of the json array.
+
+
+
+ The json representation of the array.
+
+ The json representation of the array.
+
+
+
+ Represents the json object.
+
+
+
+
+ The internal member dictionary.
+
+
+
+
+ Initializes a new instance of .
+
+
+
+
+ Initializes a new instance of .
+
+ The implementation to use when comparing keys, or null to use the default for the type of the key.
+
+
+
+ Gets the at the specified index.
+
+
+
+
+
+ Adds the specified key.
+
+ The key.
+ The value.
+
+
+
+ Determines whether the specified key contains key.
+
+ The key.
+
+ true if the specified key contains key; otherwise, false.
+
+
+
+
+ Gets the keys.
+
+ The keys.
+
+
+
+ Removes the specified key.
+
+ The key.
+
+
+
+
+ Tries the get value.
+
+ The key.
+ The value.
+
+
+
+
+ Gets the values.
+
+ The values.
+
+
+
+ Gets or sets the with the specified key.
+
+
+
+
+
+ Adds the specified item.
+
+ The item.
+
+
+
+ Clears this instance.
+
+
+
+
+ Determines whether [contains] [the specified item].
+
+ The item.
+
+ true if [contains] [the specified item]; otherwise, false.
+
+
+
+
+ Copies to.
+
+ The array.
+ Index of the array.
+
+
+
+ Gets the count.
+
+ The count.
+
+
+
+ Gets a value indicating whether this instance is read only.
+
+
+ true if this instance is read only; otherwise, false.
+
+
+
+
+ Removes the specified item.
+
+ The item.
+
+
+
+
+ Gets the enumerator.
+
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Returns a json that represents the current .
+
+
+ A json that represents the current .
+
+
+
+
+ This class encodes and decodes JSON strings.
+ Spec. details, see http://www.json.org/
+
+ JSON uses Arrays and Objects. These correspond here to the datatypes JsonArray(IList<object>) and JsonObject(IDictionary<string,object>).
+ All numbers are parsed to doubles.
+
+
+
+
+ Parses the string json into a value
+
+ A JSON string.
+ An IList<object>, a IDictionary<string,object>, a double, a string, null, true, or false
+
+
+
+ Try parsing the json string into a value.
+
+
+ A JSON string.
+
+
+ The object.
+
+
+ Returns true if successfull otherwise false.
+
+
+
+
+ Converts a IDictionary<string,object> / IList<object> object into a JSON string
+
+ A IDictionary<string,object> / IList<object>
+ Serializer strategy to use
+ A JSON encoded string, or null if object 'json' is not serializable
+
+
+
+ Determines if a given object is numeric in any way
+ (can be integer, double, null, etc).
+
+
+
+
diff --git a/Tests/bin/Debug/protobuf-net.xml b/Tests/bin/Debug/protobuf-net.xml
new file mode 100644
index 0000000..ccf3c6f
--- /dev/null
+++ b/Tests/bin/Debug/protobuf-net.xml
@@ -0,0 +1,2879 @@
+
+
+
+ protobuf-net
+
+
+
+
+ Provides support for common .NET types that do not have a direct representation
+ in protobuf, using the definitions from bcl.proto
+
+
+
+
+ Creates a new instance of the specified type, bypassing the constructor.
+
+ The type to create
+ The new instance
+ If the platform does not support constructor-skipping
+
+
+
+ Writes a TimeSpan to a protobuf stream
+
+
+
+
+ Parses a TimeSpan from a protobuf stream
+
+
+
+
+ Parses a DateTime from a protobuf stream
+
+
+
+
+ Writes a DateTime to a protobuf stream
+
+
+
+
+ Parses a decimal from a protobuf stream
+
+
+
+
+ Writes a decimal to a protobuf stream
+
+
+
+
+ Writes a Guid to a protobuf stream
+
+
+
+
+ Parses a Guid from a protobuf stream
+
+
+
+
+ Reads an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Writes an *implementation specific* bundled .NET object, including (as options) type-metadata, identity/re-use, etc.
+
+
+
+
+ Optional behaviours that introduce .NET-specific functionality
+
+
+
+
+ No special behaviour
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ If false, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should the object index be reserved, rather than creating an object promptly
+
+
+
+
+ Provides a simple buffer-based implementation of an extension object.
+
+
+
+
+ Provides addition capability for supporting unexpected fields during
+ protocol-buffer serialization/deserialization. This allows for loss-less
+ round-trip/merge, even when the data is not fully understood.
+
+
+
+
+ Requests a stream into which any unexpected fields can be persisted.
+
+ A new stream suitable for storing data.
+
+
+
+ Indicates that all unexpected fields have now been stored. The
+ implementing class is responsible for closing the stream. If
+ "commit" is not true the data may be discarded.
+
+ The stream originally obtained by BeginAppend.
+ True if the append operation completed successfully.
+
+
+
+ Requests a stream of the unexpected fields previously stored.
+
+ A prepared stream of the unexpected fields.
+
+
+
+ Indicates that all unexpected fields have now been read. The
+ implementing class is responsible for closing the stream.
+
+ The stream originally obtained by BeginQuery.
+
+
+
+ Requests the length of the raw binary stream; this is used
+ when serializing sub-entities to indicate the expected size.
+
+ The length of the binary stream representing unexpected data.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after serialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked before deserialization.
+
+
+ Specifies a method on the root-contract in an hierarchy to be invoked after deserialization.
+
+
+
+ Pushes a null reference onto the stack. Note that this should only
+ be used to return a null (or set a variable to null); for null-tests
+ use BranchIfTrue / BranchIfFalse.
+
+
+
+
+ Creates a new "using" block (equivalent) around a variable;
+ the variable must exist, and note that (unlike in C#) it is
+ the variables *final* value that gets disposed. If you need
+ *original* disposal, copy your variable first.
+
+ It is the callers responsibility to ensure that the variable's
+ scope fully-encapsulates the "using"; if not, the variable
+ may be re-used (and thus re-assigned) unexpectedly.
+
+
+
+
+ Sub-format to use when serializing/deserializing data
+
+
+
+
+ Uses the default encoding for the data-type.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that zigzag variant encoding will be used. This means that values
+ with small magnitude (regardless of sign) take a small amount
+ of space to encode.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that two's-complement variant encoding will be used.
+ This means that any -ve number will take 10 bytes (even for 32-bit),
+ so should only be used for compatibility.
+
+
+
+
+ When applied to signed integer-based data (including Decimal), this
+ indicates that a fixed amount of space will be used.
+
+
+
+
+ When applied to a sub-message, indicates that the value should be treated
+ as group-delimited.
+
+
+
+
+ Simple base class for supporting unexpected fields allowing
+ for loss-less round-tips/merge, even if the data is not understod.
+ The additional fields are (by default) stored in-memory in a buffer.
+
+ As an example of an alternative implementation, you might
+ choose to use the file system (temporary files) as the back-end, tracking
+ only the paths [such an object would ideally be IDisposable and use
+ a finalizer to ensure that the files are removed].
+
+
+
+
+ Indicates that the implementing type has support for protocol-buffer
+ extensions.
+
+ Can be implemented by deriving from Extensible.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Retrieves the extension object for the current
+ instance, optionally creating it if it does not already exist.
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Provides a simple, default implementation for extension support,
+ optionally creating it if it does not already exist. Designed to be called by
+ classes implementing .
+
+ Should a new extension object be
+ created if it does not already exist?
+ The extension field to check (and possibly update).
+ The extension object if it exists (or was created), or null
+ if the extension object does not exist or is not available.
+ The createIfMissing argument is false during serialization,
+ and true during deserialization upon encountering unexpected fields.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The type of the value to append.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The data-type of the field.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned is the composed value after merging any duplicated content; if the
+ value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ The effective value of the field, or the default value if not found.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ The value returned (in "value") is the composed value after merging any duplicated content;
+ if the value is "repeated" (a list), then use GetValues instead.
+
+ The data-type of the field.
+ The model to use for configuration.
+ The effective value of the field, or the default value if not found.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ Allow tags that are present as part of the definition; for example, to query unknown enum values.
+ True if data for the field was present, false otherwise.
+
+
+
+ Queries an extensible object for an additional (unexpected) data-field for the instance.
+ Each occurrence of the field is yielded separately, making this usage suitable for "repeated"
+ (list) fields.
+
+ The extended data is processed lazily as the enumerator is iterated.
+ The model to use for configuration.
+ The data-type of the field.
+ The extensible object to obtain the value from.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The data-format to use when decoding the value.
+ An enumerator that yields each occurrence of the field.
+
+
+
+ Appends the value as an additional (unexpected) data-field for the instance.
+ Note that for non-repeated sub-objects, this equates to a merge operation;
+ for repeated sub-objects this adds a new instance to the set; for simple
+ values the new value supercedes the old value.
+
+ Note that appending a value does not remove the old value from
+ the stream; avoid repeatedly appending values for the same field.
+ The model to use for configuration.
+ The data-format to use when encoding the value.
+ The extensible object to append the value to.
+ The field identifier; the tag should not be defined as a known data-field for the instance.
+ The value to append.
+
+
+
+ This class acts as an internal wrapper allowing us to do a dynamic
+ methodinfo invoke; an't put into Serializer as don't want on public
+ API; can't put into Serializer<T> since we need to invoke
+ accross classes, which isn't allowed in Silverlight)
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ All this does is call GetExtendedValuesTyped with the correct type for "instance";
+ this ensures that we don't get issues with subclasses declaring conflicting types -
+ the caller must respect the fields defined for the type they pass in.
+
+
+
+
+ Not all frameworks are created equal (fx1.1 vs fx2.0,
+ micro-framework, compact-framework,
+ silverlight, etc). This class simply wraps up a few things that would
+ otherwise make the real code unnecessarily messy, providing fallback
+ implementations if necessary.
+
+
+
+
+ Intended to be a direct map to regular TypeCode, but:
+ - with missing types
+ - existing on WinRT
+
+
+
+
+ Specifies the method used to infer field tags for members of the type
+ under consideration. Tags are deduced using the invariant alphabetic
+ sequence of the members' names; this makes implicit field tags very brittle,
+ and susceptible to changes such as field names (normally an isolated
+ change).
+
+
+
+
+ No members are serialized implicitly; all members require a suitable
+ attribute such as [ProtoMember]. This is the recmomended mode for
+ most scenarios.
+
+
+
+
+ Public properties and fields are eligible for implicit serialization;
+ this treats the public API as a contract. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Public and non-public fields are eligible for implicit serialization;
+ this acts as a state/implementation serializer. Ordering beings from ImplicitFirstTag.
+
+
+
+
+ Represents the set of serialization callbacks to be used when serializing/deserializing a type.
+
+
+
+ Called before serializing an instance
+
+
+ Called before deserializing an instance
+
+
+ Called after serializing an instance
+
+
+ Called after deserializing an instance
+
+
+
+ True if any callback is set, else False
+
+
+
+
+ Represents a type at runtime for use with protobuf, allowing the field mappings (etc) to be defined
+
+
+
+
+ Get the name of the type being represented
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Adds a known sub-type to the inheritance model
+
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The method (or null) called before serialization begins.
+ The method (or null) called when serialization is complete.
+ The method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Assigns the callbacks to use during serialiation/deserialization.
+
+ The name of the method (or null) called before serialization begins.
+ The name of the method (or null) called when serialization is complete.
+ The name of the method (or null) called before deserialization begins (or when a new instance is created during deserialization).
+ The name of the method (or null) called when deserialization is complete.
+ The set of callbacks.
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Designate a factory-method to use to create instances of this type
+
+
+
+
+ Throws an exception if the type has been made immutable
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Performs serialization of this type via a surrogate; all
+ other serialization options are ignored and handled
+ by the surrogate's configuration.
+
+
+
+
+ Adds a set of members (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists
+
+
+
+
+ Adds a member (by name) to the MetaType, including an itemType and defaultType for representing lists, returning the ValueMember rather than the fluent API.
+ This is otherwise identical to Add.
+
+
+
+
+ Returns the ValueMember instances associated with this type
+
+
+
+
+ Returns the SubType instances associated with this type
+
+
+
+
+ Compiles the serializer for this type; this is *not* a full
+ standalone compile, but can significantly boost performance
+ while allowing additional types to be added.
+
+ An in-place compile can access non-public types / members
+
+
+
+ Gets the base-type for this type
+
+
+
+
+ When used to compile a model, should public serialization/deserialzation methods
+ be included for this type?
+
+
+
+
+ Should this type be treated as a reference by default?
+
+
+
+
+ Indicates whether the current type has defined callbacks
+
+
+
+
+ Indicates whether the current type has defined subtypes
+
+
+
+
+ Returns the set of callbacks defined for this type
+
+
+
+
+ Gets or sets the name of this contract.
+
+
+
+
+ The runtime type that the meta-type represents
+
+
+
+
+ Gets or sets whether the type should use a parameterless constructor (the default),
+ or whether the type should skip the constructor completely. This option is not supported
+ on compact-framework.
+
+
+
+
+ The concrete type to create when a new instance of this type is needed; this may be useful when dealing
+ with dynamic proxies, or with interface-based APIs
+
+
+
+
+ Returns the ValueMember that matchs a given field number, or null if not found
+
+
+
+
+ Returns the ValueMember that matchs a given member (property/field), or null if not found
+
+
+
+
+ Gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Gets or sets a value indicating that this type should NOT be treated as a list, even if it has
+ familiar list-like characteristics (enumerable, add, etc)
+
+
+
+
+ Provides protobuf serialization support for a number of types that can be defined at runtime
+
+
+
+
+ Provides protobuf serialization support for a number of types
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ Resolve a System.Type to the compiler-specific type
+
+
+
+
+ This is the more "complete" version of Serialize, which handles single instances of mapped types.
+ The value is written as a complete field, including field-header and (for sub-objects) a
+ length-prefix
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IEnumerable sequences of any type handled by TrySerializeAuxiliaryType
+
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied writer.
+
+ The existing instance to be serialized (cannot be null).
+ The destination writer to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Used to resolve types on a per-field basis.
+ Returns the number of bytes consumed by this operation (includes length-prefix overheads and any skipped data).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ On a field-by-field basis, the type of object to deserialize (can be null if "type" is specified).
+ The type of object to deserialize (can be null if "resolver" is specified).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The number of bytes to consume (or -1 to read to the end of the stream).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+ Additional information about this serialization operation.
+
+
+
+ Applies a protocol-buffer reader to an existing instance (which may be null).
+
+ The type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The reader to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ This is the more "complete" version of Deserialize, which handles single instances of mapped types.
+ The value is read as a complete field, including field-header and (for sub-objects) a
+ length-prefix..kmc
+
+ In addition to that, this provides support for:
+ - basic values; individual int / string / Guid / etc
+ - IList sets of any type handled by TryDeserializeAuxiliaryType
+
+
+
+
+ Creates a new runtime model, to which the caller
+ can add support for a range of types. A model
+ can be used "as is", or can be compiled for
+ optimal performance.
+
+
+
+
+ Applies common proxy scenarios, resolving the actual type to consider
+
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+ The type is also normalized for proxies at the same time.
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Indicates that while an inheritance tree exists, the exact type encountered was not
+ specified in that hierarchy and cannot be processed.
+
+
+
+
+ Indicates that the given type was not expected, and cannot be processed.
+
+
+
+
+ Indicates that the given type cannot be constructed; it may still be possible to
+ deserialize into existing instances.
+
+
+
+
+ Returns true if the type supplied is either a recognised contract type,
+ or a *list* of a recognised contract type.
+
+ Note that primitives always return false, even though the engine
+ will, if forced, try to serialize such
+ True if this type is recognised as a serializable entity, else false
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ a recognised contract type, or a *list* of a basic / contract type.
+
+
+
+
+ Returns true if the type supplied is a basic type with inbuilt handling,
+ or a *list* of a basic type with inbuilt handling
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Creates a new IFormatter that uses protocol-buffer [de]serialization.
+
+ A new IFormatter to be used during [de]serialization.
+ The type of object to be [de]deserialized by the formatter.
+
+
+
+ Used to provide custom services for writing and parsing type names when using dynamic types. Both parsing and formatting
+ are provided on a single API as it is essential that both are mapped identically at all times.
+
+
+
+
+ Indicates the type of callback to be used
+
+
+
+
+ Invoked before an object is serialized
+
+
+
+
+ Invoked after an object is serialized
+
+
+
+
+ Invoked before an object is deserialized (or when a new instance is created)
+
+
+
+
+ Invoked after an object is deserialized
+
+
+
+
+ Returns a sequence of the Type instances that can be
+ processed by this model.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for, or null to generate a .proto that represents the entire model
+ The .proto definition as a string
+
+
+
+ Adds support for an additional type in this model, optionally
+ appplying inbuilt patterns. If the type is already known to the
+ model, the existing type is returned **without** applying
+ any additional behaviour.
+
+ Inbuilt patterns include:
+ [ProtoContract]/[ProtoMember(n)]
+ [DataContract]/[DataMember(Order=n)]
+ [XmlType]/[XmlElement(Order=n)]
+ [On{Des|S}erializ{ing|ed}]
+ ShouldSerialize*/*Specified
+
+ The type to be supported
+ Whether to apply the inbuilt configuration patterns (via attributes etc), or
+ just add the type with no additional configuration (the type must then be manually configured).
+ The MetaType representing this type, allowing
+ further configuration.
+
+
+
+ Verifies that the model is still open to changes; if not, an exception is thrown
+
+
+
+
+ Prevents further changes to this model
+
+
+
+
+ Provides the key that represents a given type in the current model.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Applies a protocol-buffer stream to an existing instance (which may be null).
+
+ Represents the type (including inheritance) to consider.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Compiles the serializers individually; this is *not* a full
+ standalone compile, but can significantly boost performance
+ while allowing additional types to be added.
+
+ An in-place compile can access non-public types / members
+
+
+
+ Fully compiles the current model into a static-compiled model instance
+
+ A full compilation is restricted to accessing public types / members
+ An instance of the newly created compiled type-model
+
+
+
+ Fully compiles the current model into a static-compiled serialization dll
+ (the serialization dll still requires protobuf-net for support services).
+
+ A full compilation is restricted to accessing public types / members
+ The name of the TypeModel class to create
+ The path for the new dll
+ An instance of the newly created compiled type-model
+
+
+
+ Fully compiles the current model into a static-compiled serialization dll
+ (the serialization dll still requires protobuf-net for support services).
+
+ A full compilation is restricted to accessing public types / members
+ An instance of the newly created compiled type-model
+
+
+
+ Designate a factory-method to use to create instances of any type; note that this only affect types seen by the serializer *after* setting the factory.
+
+
+
+
+ Global default that
+ enables/disables automatic tag generation based on the existing name / order
+ of the defined members. See
+ for usage and important warning / explanation.
+ You must set the global default before attempting to serialize/deserialize any
+ impacted type.
+
+
+
+
+ Global default that determines whether types are considered serializable
+ if they have [DataContract] / [XmlType]. With this enabled, ONLY
+ types marked as [ProtoContract] are added automatically.
+
+
+
+
+ Global switch that enables or disables the implicit
+ handling of "zero defaults"; meanning: if no other default is specified,
+ it assumes bools always default to false, integers to zero, etc.
+
+ If this is disabled, no such assumptions are made and only *explicit*
+ default values are processed. This is enabled by default to
+ preserve similar logic to v1.
+
+
+
+
+ Global switch that determines whether types with a .ToString() and a Parse(string)
+ should be serialized as strings.
+
+
+
+
+ The default model, used to support ProtoBuf.Serializer
+
+
+
+
+ Obtains the MetaType associated with a given Type for the current model,
+ allowing additional configuration.
+
+
+
+
+ Should serializers be compiled on demand? It may be useful
+ to disable this for debugging purposes.
+
+
+
+
+ Should support for unexpected types be added automatically?
+ If false, an exception is thrown when unexpected types
+ are encountered.
+
+
+
+
+ The amount of time to wait if there are concurrent metadata access operations
+
+
+
+
+ If a lock-contention is detected, this event signals the *owner* of the lock responsible for the blockage, indicating
+ what caused the problem; this is only raised if the lock-owning code successfully completes.
+
+
+
+
+ Represents configuration options for compiling a model to
+ a standalone assembly.
+
+
+
+
+ Import framework options from an existing type
+
+
+
+
+ The TargetFrameworkAttribute FrameworkName value to burn into the generated assembly
+
+
+
+
+ The TargetFrameworkAttribute FrameworkDisplayName value to burn into the generated assembly
+
+
+
+
+ The name of the TypeModel class to create
+
+
+
+
+ The path for the new dll
+
+
+
+
+ The runtime version for the generated assembly
+
+
+
+
+ The runtime version for the generated assembly
+
+
+
+
+ The acecssibility of the generated serializer
+
+
+
+
+ Type accessibility
+
+
+
+
+ Available to all callers
+
+
+
+
+ Available to all callers in the same assembly, or assemblies specified via [InternalsVisibleTo(...)]
+
+
+
+
+ Contains the stack-trace of the owning code when a lock-contention scenario is detected
+
+
+
+
+ The stack-trace of the code that owned the lock when a lock-contention scenario occurred
+
+
+
+
+ Event-type that is raised when a lock-contention scenario is detected
+
+
+
+
+ Represents an inherited type in a type hierarchy.
+
+
+
+
+ Creates a new SubType instance.
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+ The sub-type to be considered.
+ Specific encoding style to use; in particular, Grouped can be used to avoid buffering, but is not the default.
+
+
+
+ The field-number that is used to encapsulate the data (as a nested
+ message) for the derived dype.
+
+
+
+
+ The sub-type to be considered.
+
+
+
+
+ Event arguments needed to perform type-formatting functions; this could be resolving a Type to a string suitable for serialization, or could
+ be requesting a Type from a string. If no changes are made, a default implementation will be used (from the assembly-qualified names).
+
+
+
+
+ The type involved in this map; if this is initially null, a Type is expected to be provided for the string in FormattedName.
+
+
+
+
+ The formatted-name involved in this map; if this is initially null, a formatted-name is expected from the type in Type.
+
+
+
+
+ Delegate type used to perform type-formatting functions; the sender originates as the type-model.
+
+
+
+
+ Represents a member (property/field) that is mapped to a protobuf field
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Creates a new ValueMember instance
+
+
+
+
+ Specifies methods for working with optional data members.
+
+ Provides a method (null for none) to query whether this member should
+ be serialized; it must be of the form "bool {Method}()". The member is only serialized if the
+ method returns true.
+ Provides a method (null for none) to indicate that a member was
+ deserialized; it must be of the form "void {Method}(bool)", and will be called with "true"
+ when data is found.
+
+
+
+ The number that identifies this member in a protobuf stream
+
+
+
+
+ Gets the member (field/property) which this member relates to.
+
+
+
+
+ Within a list / array / etc, the type of object for each item in the list (especially useful with ArrayList)
+
+
+
+
+ The underlying type of the member
+
+
+
+
+ For abstract types (IList etc), the type of concrete object to create (if required)
+
+
+
+
+ The type the defines the member
+
+
+
+
+ The default value of the item (members with this value will not be serialized)
+
+
+
+
+ Specifies the rules used to process the field; this is used to determine the most appropriate
+ wite-type, but also to describe subtypes within that wire-type (such as SignedVariant)
+
+
+
+
+ Indicates whether this field should follow strict encoding rules; this means (for example) that if a "fixed32"
+ is encountered when "variant" is defined, then it will fail (throw an exception) when parsing. Note that
+ when serializing the defined type is always used.
+
+
+
+
+ Indicates whether this field should use packed encoding (which can save lots of space for repeated primitive values).
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Indicates whether this field is mandatory.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets the logical name for this member in the schema (this is not critical for binary serialization, but may be used
+ when inferring a schema).
+
+
+
+
+ Should lists have extended support for null values? Note this makes the serialization less efficient.
+
+
+
+
+ Specifies the type of prefix that should be applied to messages.
+
+
+
+
+ No length prefix is applied to the data; the data is terminated only be the end of the stream.
+
+
+
+
+ A base-128 length prefix is applied to the data (efficient for short messages).
+
+
+
+
+ A fixed-length (little-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ A fixed-length (big-endian) length prefix is applied to the data (useful for compatibility).
+
+
+
+
+ Indicates that a type is defined for protocol-buffer serialization.
+
+
+
+
+ Gets or sets the defined name of the type.
+
+
+
+
+ Gets or sets the fist offset to use with implicit field tags;
+ only uesd if ImplicitFields is set.
+
+
+
+
+ If specified, alternative contract markers (such as markers for XmlSerailizer or DataContractSerializer) are ignored.
+
+
+
+
+ If specified, do NOT treat this type as a list, even if it looks like one.
+
+
+
+
+ Gets or sets the mechanism used to automatically infer field tags
+ for members. This option should be used in advanced scenarios only.
+ Please review the important notes against the ImplicitFields enumeration.
+
+
+
+
+ Enables/disables automatic tag generation based on the existing name / order
+ of the defined members. This option is not used for members marked
+ with ProtoMemberAttribute, as intended to provide compatibility with
+ WCF serialization. WARNING: when adding new fields you must take
+ care to increase the Order for new elements, otherwise data corruption
+ may occur.
+
+ If not explicitly specified, the default is assumed from Serializer.GlobalOptions.InferTagFromName.
+
+
+
+ Has a InferTagFromName value been explicitly set? if not, the default from the type-model is assumed.
+
+
+
+
+ Specifies an offset to apply to [DataMember(Order=...)] markers;
+ this is useful when working with mex-generated classes that have
+ a different origin (usually 1 vs 0) than the original data-contract.
+
+ This value is added to the Order of each member.
+
+
+
+
+ If true, the constructor for the type is bypassed during deserialization, meaning any field initializers
+ or other initialization code is skipped.
+
+
+
+
+ Should this type be treated as a reference by default? Please also see the implications of this,
+ as recorded on ProtoMemberAttribute.AsReference
+
+
+
+
+ Applies only to enums (not to DTO classes themselves); gets or sets a value indicating that an enum should be treated directly as an int/short/etc, rather
+ than enforcing .proto enum rules. This is useful *in particul* for [Flags] enums.
+
+
+
+
+ Has a EnumPassthru value been explicitly set?
+
+
+
+
+ Used to define protocol-buffer specific behavior for
+ enumerated values.
+
+
+
+
+ Indicates whether this instance has a customised value mapping
+
+ true if a specific value is set
+
+
+
+ Gets or sets the specific value to use for this enum during serialization.
+
+
+
+
+ Gets or sets the defined name of the enum, as used in .proto
+ (this name is not used during serialization).
+
+
+
+
+ Indicates an error during serialization/deserialization of a proto stream.
+
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+ Creates a new ProtoException instance.
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields.
+
+
+
+
+ Indicates that a member should be excluded from serialization; this
+ is only normally used when using implict fields. This allows
+ ProtoIgnoreAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+
+
+
+
+ Creates a new ProtoPartialIgnoreAttribute instance.
+
+ Specifies the member to be ignored.
+
+
+
+ The name of the member to be ignored.
+
+
+
+
+ Indicates the known-types to support for an individual
+ message. This serializes each level in the hierarchy as
+ a nested message to retain wire-compatibility with
+ other protocol-buffer implementations.
+
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Creates a new instance of the ProtoIncludeAttribute.
+
+ The unique index (within the type) that will identify this data.
+ The additional type to serialize/deserialize.
+
+
+
+ Gets the unique index (within the type) that will identify this data.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Gets the additional type to serialize/deserialize.
+
+
+
+
+ Specifies whether the inherited sype's sub-message should be
+ written with a length-prefix (default), or with group markers.
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag. A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Compare with another ProtoMemberAttribute for sorting purposes
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+
+
+
+ Gets or sets the original name defined in the .proto; not used
+ during serialization.
+
+
+
+
+ Gets or sets the data-format to be used when encoding this value.
+
+
+
+
+ Gets the unique tag used to identify this member within the type.
+
+
+
+
+ Gets or sets a value indicating whether this member is mandatory.
+
+
+
+
+ Gets a value indicating whether this member is packed.
+ This option only applies to list/array data of primitive types (int, double, etc).
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Enables full object-tracking/full-graph support.
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance.
+
+
+
+
+ Gets or sets a value indicating whether this member is packed (lists/arrays).
+
+
+
+
+ Additional (optional) settings that control serialization of members
+
+
+
+
+ Default; no additional options
+
+
+
+
+ Indicates that repeated elements should use packed (length-prefixed) encoding
+
+
+
+
+ Indicates that the given item is required
+
+
+
+
+ Enables full object-tracking/full-graph support
+
+
+
+
+ Embeds the type information into the stream, allowing usage with types not known in advance
+
+
+
+
+ Indicates whether this field should *repace* existing values (the default is false, meaning *append*).
+ This option only applies to list/array data.
+
+
+
+
+ Determines whether the types AsReferenceDefault value is used, or whether this member's AsReference should be used
+
+
+
+
+ Declares a member to be used in protocol-buffer serialization, using
+ the given Tag and MemberName. This allows ProtoMemberAttribute usage
+ even for partial classes where the individual members are not
+ under direct control.
+ A DataFormat may be used to optimise the serialization
+ format (for instance, using zigzag encoding for negative numbers, or
+ fixed-length encoding for large values.
+
+
+
+
+ Creates a new ProtoMemberAttribute instance.
+
+ Specifies the unique tag used to identify this member within the type.
+ Specifies the member to be serialized.
+
+
+
+ The name of the member to be serialized.
+
+
+
+
+ A stateful reader, used to read a protobuf stream. Typical usage would be (sequentially) to call
+ ReadFieldHeader and (after matching the field) an appropriate Read* method.
+
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Creates a new reader against a stream
+
+ The source stream
+ The model to use for serialization; this can be null, but this will impair the ability to deserialize sub-objects
+ Additional context about this serialization operation
+ The number of bytes to read, or -1 to read until the end of the stream
+
+
+
+ Releases resources used by the reader, but importantly does not Dispose the
+ underlying stream; in many typical use-cases the stream is used for different
+ processes, so it is assumed that the consumer will Dispose their stream separately.
+
+
+
+
+ Reads an unsigned 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 16-bit integer from the stream: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads an unsigned 16-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads an unsigned 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a signed 8-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 32-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a signed 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Reads a string from the stream (using UTF8); supported wire-types: String
+
+
+
+
+ Throws an exception indication that the given value cannot be mapped to an enum.
+
+
+
+
+ Reads a double-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads (merges) a sub-message from the stream, internally calling StartSubItem and EndSubItem, and (in between)
+ parsing the message in accordance with the model associated with the reader
+
+
+
+
+ Makes the end of consuming a nested message in the stream; the stream must be either at the correct EndGroup
+ marker, or all fields of the sub-message must have been consumed (in either case, this means ReadFieldHeader
+ should return zero)
+
+
+
+
+ Begins consuming a nested message in the stream; supported wire-types: StartGroup, String
+
+ The token returned must be help and used when callining EndSubItem
+
+
+
+ Reads a field header from the stream, setting the wire-type and retuning the field number. If no
+ more fields are available, then 0 is returned. This methods respects sub-messages.
+
+
+
+
+ Looks ahead to see whether the next field in the stream is what we expect
+ (typically; what we've just finished reading - for example ot read successive list items)
+
+
+
+
+ Compares the streams current wire-type to the hinted wire-type, updating the reader if necessary; for example,
+ a Variant may be updated to SignedVariant. If the hinted wire-type is unrelated then no change is made.
+
+
+
+
+ Verifies that the stream's current wire-type is as expected, or a specialized sub-type (for example,
+ SignedVariant) - in which case the current wire-type is updated. Otherwise an exception is thrown.
+
+
+
+
+ Discards the data for the current field.
+
+
+
+
+ Reads an unsigned 64-bit integer from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Reads a single-precision number from the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Reads a boolean value from the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+
+ Reads a byte-sequence from the stream, appending them to an existing byte-sequence (which can be null); supported wire-types: String
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+
+ Reads a little-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a big-endian encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a varint encoded integer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source into a pre-existing buffer. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a given number of bytes directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads a string (of a given lenth, in bytes) directly from the source. An exception is thrown if the data is not all available.
+
+
+
+
+ Reads the length-prefix of a message from a stream without buffering additional data, allowing a fixed-length
+ reader to be created.
+
+
+
+ The number of bytes consumed; 0 if no data available
+
+
+
+ Copies the current field into the instance as extension data
+
+
+
+
+ Indicates whether the reader still has data remaining in the current sub-item,
+ additionally setting the wire-type for the next field if there is more data.
+ This is used when decoding packed data.
+
+
+
+
+ Utility method, not intended for public use; this helps maintain the root object is complex scenarios
+
+
+
+
+ Reads a Type from the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Merge two objects using the details from the current reader; this is used to change the type
+ of objects when an inheritance relationship is discovered later than usual during deserilazation.
+
+
+
+
+ Gets the number of the field being processed.
+
+
+
+
+ Indicates the underlying proto serialization format on the wire.
+
+
+
+
+ Gets / sets a flag indicating whether strings should be checked for repetition; if
+ true, any repeated UTF-8 byte sequence will result in the same String instance, rather
+ than a second instance of the same string. Enabled by default. Note that this uses
+ a custom interner - the system-wide string interner is not used.
+
+
+
+
+ Addition information about this deserialization operation.
+
+
+
+
+ Returns the position of the current reader (note that this is not necessarily the same as the position
+ in the underlying stream, if multiple readers are used on the same stream)
+
+
+
+
+ Get the TypeModel associated with this reader
+
+
+
+
+ Represents an output stream for writing protobuf data.
+
+ Why is the API backwards (static methods with writer arguments)?
+ See: http://marcgravell.blogspot.com/2010/03/last-will-be-first-and-first-will-be.html
+
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type).
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Write an encapsulated sub-object, using the supplied unique key (reprasenting a type) - but the
+ caller is asserting that this relationship is non-recursive; no recursion check will be
+ performed.
+
+ The object to write.
+ The key that uniquely identifies the type within the model.
+ The destination.
+
+
+
+ Writes a field-header, indicating the format of the next data we plan to write.
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Writes a byte-array to the stream; supported wire-types: String
+
+
+
+
+ Indicates the start of a nested record.
+
+ The instance to write.
+ The destination.
+ A token representing the state of the stream; this token is given to EndSubItem.
+
+
+
+ Indicates the end of a nested record.
+
+ The token obtained from StartubItem.
+ The destination.
+
+
+
+ Creates a new writer against a stream
+
+ The destination stream
+ The model to use for serialization; this can be null, but this will impair the ability to serialize sub-objects
+ Additional context about this serialization operation
+
+
+
+ Flushes data to the underlying stream, and releases any resources. The underlying stream is *not* disposed
+ by this operation.
+
+
+
+
+ Writes any buffered data (if possible) to the underlying stream.
+
+ The writer to flush
+ It is not always possible to fully flush, since some sequences
+ may require values to be back-filled into the byte-stream.
+
+
+
+ Writes an unsigned 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a string to the stream; supported wire-types: String
+
+
+
+
+ Writes an unsigned 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 64-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes an unsigned 16-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes an unsigned 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Writes a signed 8-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a signed 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64, SignedVariant
+
+
+
+
+ Writes a double-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Writes a single-precision number to the stream; supported wire-types: Fixed32, Fixed64
+
+
+
+
+ Throws an exception indicating that the given enum cannot be mapped to a serialized value.
+
+
+
+
+ Writes a boolean to the stream; supported wire-types: Variant, Fixed32, Fixed64
+
+
+
+
+ Copies any extension data stored for the instance to the underlying stream
+
+
+
+
+ Used for packed encoding; indicates that the next field should be skipped rather than
+ a field header written. Note that the field number must match, else an exception is thrown
+ when the attempt is made to write the (incorrect) field. The wire-type is taken from the
+ subsequent call to WriteFieldHeader. Only primitive types can be packed.
+
+
+
+
+ Specifies a known root object to use during reference-tracked serialization
+
+
+
+
+ Writes a Type to the stream, using the model's DynamicTypeFormatting if appropriate; supported wire-types: String
+
+
+
+
+ Addition information about this serialization operation.
+
+
+
+
+ Get the TypeModel associated with this writer
+
+
+
+
+ Additional information about a serialization operation
+
+
+
+
+ Convert a SerializationContext to a StreamingContext
+
+
+
+
+ Convert a StreamingContext to a SerializationContext
+
+
+
+
+ Gets or sets a user-defined object containing additional information about this serialization/deserialization operation.
+
+
+
+
+ A default SerializationContext, with minimal information.
+
+
+
+
+ Gets or sets the source or destination of the transmitted data.
+
+
+
+
+ Provides protocol-buffer serialization capability for concrete, attributed types. This
+ is a *default* model, but custom serializer models are also supported.
+
+
+ Protocol-buffer serialization is a compact binary format, designed to take
+ advantage of sparse data and knowledge of specific data types; it is also
+ extensible, allowing a type to be deserialized / merged even if some data is
+ not recognised.
+
+
+
+
+ The field number that is used as a default when serializing/deserializing a list of objects.
+ The data is treated as repeated message with field number 1.
+
+
+
+
+ Suggest a .proto definition for the given type
+
+ The type to generate a .proto definition for
+ The .proto definition as a string
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Applies a protocol-buffer stream to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Serializes a given instance and deserializes it as a different type;
+ this can be used to translate between wire-compatible objects (where
+ two .NET types represent the same data), or to promote/demote a type
+ through an inheritance hierarchy.
+
+ No assumption of compatibility is made between the types.
+ The type of the object being copied.
+ The type of the new object to be created.
+ The existing instance to use as a template.
+ A new instane of type TNewType, with the data from TOldType.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied SerializationInfo.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ The destination SerializationInfo to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied SerializationInfo.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ The destination SerializationInfo to write to.
+ Additional information about this serialization operation.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied XmlWriter.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ The destination XmlWriter to write to.
+
+
+
+ Applies a protocol-buffer from an XmlReader to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (cannot be null).
+ The XmlReader containing the data to apply to the instance (cannot be null).
+
+
+
+ Applies a protocol-buffer from a SerializationInfo to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (cannot be null).
+ The SerializationInfo containing the data to apply to the instance (cannot be null).
+
+
+
+ Applies a protocol-buffer from a SerializationInfo to an existing instance.
+
+ The type being merged.
+ The existing instance to be modified (cannot be null).
+ The SerializationInfo containing the data to apply to the instance (cannot be null).
+ Additional information about this serialization operation.
+
+
+
+ Precompiles the serializer for a given type.
+
+
+
+
+ Creates a new IFormatter that uses protocol-buffer [de]serialization.
+
+ The type of object to be [de]deserialized by the formatter.
+ A new IFormatter to be used during [de]serialization.
+
+
+
+ Reads a sequence of consecutive length-prefixed items from a stream, using
+ either base-128 or fixed-length prefixes. Base-128 prefixes with a tag
+ are directly comparable to serializing multiple items in succession
+ (use the tag to emulate the implicit behavior
+ when serializing a list/array). When a tag is
+ specified, any records with different tags are silently omitted. The
+ tag is ignored. The tag is ignores for fixed-length prefixes.
+
+ The type of object to deserialize.
+ The binary stream containing the serialized records.
+ The prefix style used in the data.
+ The tag of records to return (if non-positive, then no tag is
+ expected and all records are returned).
+ The sequence of deserialized objects.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ A new, initialized instance.
+
+
+
+ Creates a new instance from a protocol-buffer stream that has a length-prefix
+ on data (to assist with network IO).
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ How to encode the length prefix.
+ The expected tag of the item (only used with base-128 prefix style).
+ A new, initialized instance.
+
+
+
+ Applies a protocol-buffer stream to an existing instance, using length-prefixed
+ data - useful with network IO.
+
+ The type being merged.
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The type being serialized.
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+ Indicates the number of bytes expected for the next message.
+ The stream containing the data to investigate for a length.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+ Indicates the number of bytes expected for the next message.
+ The buffer containing the data to investigate for a length.
+ The offset of the first byte to read from the buffer.
+ The number of bytes to read from the buffer.
+ The algorithm used to encode the length.
+ The length of the message, if it could be identified.
+ True if a length could be obtained, false otherwise.
+
+
+
+ Releases any internal buffers that have been reserved for efficiency; this does not affect any serialization
+ operations; simply: it can be used (optionally) to release the buffers for garbage collection (at the expense
+ of having to re-allocate a new buffer for the next operation, rather than re-use prior buffers).
+
+
+
+
+ Provides non-generic access to the default serializer.
+
+
+
+
+ Create a deep clone of the supplied instance; any sub-items are also cloned.
+
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream.
+
+ The existing instance to be serialized (cannot be null).
+ The destination stream to write to.
+
+
+
+ Creates a new instance from a protocol-buffer stream
+
+ The type to be created.
+ The binary stream to apply to the new instance (cannot be null).
+ A new, initialized instance.
+
+
+ Applies a protocol-buffer stream to an existing instance.
+ The existing instance to be modified (cannot be null).
+ The binary stream to apply to the instance (cannot be null).
+ The updated instance
+
+
+
+ Writes a protocol-buffer representation of the given instance to the supplied stream,
+ with a length-prefix. This is useful for socket programming,
+ as DeserializeWithLengthPrefix/MergeWithLengthPrefix can be used to read the single object back
+ from an ongoing stream.
+
+ The existing instance to be serialized (cannot be null).
+ How to encode the length prefix.
+ The destination stream to write to.
+ The tag used as a prefix to each record (only used with base-128 style prefixes).
+
+
+
+ Applies a protocol-buffer stream to an existing instance (or null), using length-prefixed
+ data - useful with network IO.
+
+ The existing instance to be modified (can be null).
+ The binary stream to apply to the instance (cannot be null).
+ How to encode the length prefix.
+ Used to resolve types on a per-field basis.
+ The updated instance; this may be different to the instance argument if
+ either the original instance was null, or the stream defines a known sub-type of the
+ original instance.
+
+
+
+ Indicates whether the supplied type is explicitly modelled by the model
+
+
+
+
+ Global switches that change the behavior of protobuf-net
+
+
+
+
+
+
+
+
+
+ Maps a field-number to a type
+
+
+
+
+ Perform the steps necessary to serialize this data.
+
+ The value to be serialized.
+ The writer entity that is accumulating the output data.
+
+
+
+ Perform the steps necessary to deserialize this data.
+
+ The current value, if appropriate.
+ The reader providing the input data.
+ The updated / replacement value.
+
+
+ Emit the IL necessary to perform the given actions
+ to serialize this data.
+
+ Details and utilities for the method being generated.
+ The source of the data to work against;
+ If the value is only needed once, then LoadValue is sufficient. If
+ the value is needed multiple times, then note that a "null"
+ means "the top of the stack", in which case you should create your
+ own copy - GetLocalWithValue.
+
+
+
+ Emit the IL necessary to perform the given actions to deserialize this data.
+
+ Details and utilities for the method being generated.
+ For nested values, the instance holding the values; note
+ that this is not always provided - a null means not supplied. Since this is always
+ a variable or argument, it is not necessary to consume this value.
+
+
+
+ The type that this serializer is intended to work for.
+
+
+
+
+ Indicates whether a Read operation replaces the existing value, or
+ extends the value. If false, the "value" parameter to Read is
+ discarded, and should be passed in as null.
+
+
+
+
+ Now all Read operations return a value (although most do); if false no
+ value should be expected.
+
+
+
+
+ Uses protocol buffer serialization on the specified operation; note that this
+ must be enabled on both the client and server.
+
+
+
+
+ Configuration element to swap out DatatContractSerilaizer with the XmlProtoSerializer for a given endpoint.
+
+
+
+
+
+ Creates a new ProtoBehaviorExtension instance.
+
+
+
+
+ Creates a behavior extension based on the current configuration settings.
+
+ The behavior extension.
+
+
+
+ Gets the type of behavior.
+
+
+
+
+ Behavior to swap out DatatContractSerilaizer with the XmlProtoSerializer for a given endpoint.
+
+ Add the following to the server and client app.config in the system.serviceModel section:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Configure your endpoints to have a behaviorConfiguration as follows:
+
+
+
+
+
+
+
+
+
+
+
+
+ Describes a WCF operation behaviour that can perform protobuf serialization
+
+
+
+
+ Create a new ProtoOperationBehavior instance
+
+
+
+
+ Creates a protobuf serializer if possible (falling back to the default WCF serializer)
+
+
+
+
+ The type-model that should be used with this behaviour
+
+
+
+
+ An xml object serializer that can embed protobuf data in a base-64 hunk (looking like a byte[])
+
+
+
+
+ Attempt to create a new serializer for the given model and type
+
+ A new serializer instance if the type is recognised by the model; null otherwise
+
+
+
+ Creates a new serializer for the given model and type
+
+
+
+
+ Ends an object in the output
+
+
+
+
+ Begins an object in the output
+
+
+
+
+ Writes the body of an object in the output
+
+
+
+
+ Indicates whether this is the start of an object we are prepared to handle
+
+
+
+
+ Reads the body of an object
+
+
+
+
+ Used to hold particulars relating to nested objects. This is opaque to the caller - simply
+ give back the token you are given at the end of an object.
+
+
+
+
+ Indicates the encoding used to represent an individual value in a protobuf stream
+
+
+
+
+ Represents an error condition
+
+
+
+
+ Base-128 variant-length encoding
+
+
+
+
+ Fixed-length 8-byte encoding
+
+
+
+
+ Length-variant-prefixed encoding
+
+
+
+
+ Indicates the start of a group
+
+
+
+
+ Indicates the end of a group
+
+
+
+
+ Fixed-length 4-byte encoding
+ 10
+
+
+
+ This is not a formal wire-type in the "protocol buffers" spec, but
+ denotes a variant integer that should be interpreted using
+ zig-zag semantics (so -ve numbers aren't a significant overhead)
+
+
+
+
diff --git a/Tests/bin/Debug/xunit.assert.xml b/Tests/bin/Debug/xunit.assert.xml
new file mode 100644
index 0000000..342e7e7
--- /dev/null
+++ b/Tests/bin/Debug/xunit.assert.xml
@@ -0,0 +1,1414 @@
+
+
+
+ xunit.assert
+
+
+
+
+ Contains various static methods that are used to verify that conditions are met during the
+ process of running tests.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+ Do not call this method.
+
+
+ Do not call this method.
+
+
+
+ Verifies that the condition is false.
+
+ The condition to be tested
+ Thrown if the condition is not false
+
+
+
+ Verifies that the condition is false.
+
+ The condition to be tested
+ Thrown if the condition is not false
+
+
+
+ Verifies that the condition is false.
+
+ The condition to be tested
+ The message to show when the condition is not false
+ Thrown if the condition is not false
+
+
+
+ Verifies that the condition is false.
+
+ The condition to be tested
+ The message to show when the condition is not false
+ Thrown if the condition is not false
+
+
+
+ Verifies that an expression is true.
+
+ The condition to be inspected
+ Thrown when the condition is false
+
+
+
+ Verifies that an expression is true.
+
+ The condition to be inspected
+ Thrown when the condition is false
+
+
+
+ Verifies that an expression is true.
+
+ The condition to be inspected
+ The message to be shown when the condition is false
+ Thrown when the condition is false
+
+
+
+ Verifies that an expression is true.
+
+ The condition to be inspected
+ The message to be shown when the condition is false
+ Thrown when the condition is false
+
+
+
+ Verifies that all items in the collection pass when executed against
+ action.
+
+ The type of the object to be verified
+ The collection
+ The action to test each item against
+ Thrown when the collection contains at least one non-matching element
+
+
+
+ Verifies that a collection contains exactly a given number of elements, which meet
+ the criteria provided by the element inspectors.
+
+ The type of the object to be verified
+ The collection to be inspected
+ The element inspectors, which inspect each element in turn. The
+ total number of element inspectors must exactly match the number of elements in the collection.
+
+
+
+ Verifies that a collection contains a given object.
+
+ The type of the object to be verified
+ The object expected to be in the collection
+ The collection to be inspected
+ Thrown when the object is not present in the collection
+
+
+
+ Verifies that a collection contains a given object, using an equality comparer.
+
+ The type of the object to be verified
+ The object expected to be in the collection
+ The collection to be inspected
+ The comparer used to equate objects in the collection with the expected object
+ Thrown when the object is not present in the collection
+
+
+
+ Verifies that a collection contains a given object.
+
+ The type of the object to be verified
+ The collection to be inspected
+ The filter used to find the item you're ensuring the collection contains
+ Thrown when the object is not present in the collection
+
+
+
+ Verifies that a collection does not contain a given object.
+
+ The type of the object to be compared
+ The object that is expected not to be in the collection
+ The collection to be inspected
+ Thrown when the object is present inside the container
+
+
+
+ Verifies that a collection does not contain a given object, using an equality comparer.
+
+ The type of the object to be compared
+ The object that is expected not to be in the collection
+ The collection to be inspected
+ The comparer used to equate objects in the collection with the expected object
+ Thrown when the object is present inside the container
+
+
+
+ Verifies that a collection does not contain a given object.
+
+ The type of the object to be compared
+ The collection to be inspected
+ The filter used to find the item you're ensuring the collection does not contain
+ Thrown when the object is present inside the container
+
+
+
+ Verifies that a collection is empty.
+
+ The collection to be inspected
+ Thrown when the collection is null
+ Thrown when the collection is not empty
+
+
+
+ Verifies that two sequences are equivalent, using a default comparer.
+
+ The type of the objects to be compared
+ The expected value
+ The value to be compared against
+ Thrown when the objects are not equal
+
+
+
+ Verifies that two sequences are equivalent, using a custom equatable comparer.
+
+ The type of the objects to be compared
+ The expected value
+ The value to be compared against
+ The comparer used to compare the two objects
+ Thrown when the objects are not equal
+
+
+
+ Verifies that a collection is not empty.
+
+ The collection to be inspected
+ Thrown when a null collection is passed
+ Thrown when the collection is empty
+
+
+
+ Verifies that two sequences are not equivalent, using a default comparer.
+
+ The type of the objects to be compared
+ The expected object
+ The actual object
+ Thrown when the objects are equal
+
+
+
+ Verifies that two sequences are not equivalent, using a custom equality comparer.
+
+ The type of the objects to be compared
+ The expected object
+ The actual object
+ The comparer used to compare the two objects
+ Thrown when the objects are equal
+
+
+
+ Verifies that the given collection contains only a single
+ element of the given type.
+
+ The collection.
+ The single item in the collection.
+ Thrown when the collection does not contain
+ exactly one element.
+
+
+
+ Verifies that the given collection contains only a single
+ element of the given value. The collection may or may not
+ contain other values.
+
+ The collection.
+ The value to find in the collection.
+ The single item in the collection.
+ Thrown when the collection does not contain
+ exactly one element.
+
+
+
+ Verifies that the given collection contains only a single
+ element of the given type.
+
+ The collection type.
+ The collection.
+ The single item in the collection.
+ Thrown when the collection does not contain
+ exactly one element.
+
+
+
+ Verifies that the given collection contains only a single
+ element of the given type which matches the given predicate. The
+ collection may or may not contain other values which do not
+ match the given predicate.
+
+ The collection type.
+ The collection.
+ The item matching predicate.
+ The single item in the filtered collection.
+ Thrown when the filtered collection does
+ not contain exactly one element.
+
+
+
+ Verifies that two objects are equal, using a default comparer.
+
+ The type of the objects to be compared
+ The expected value
+ The value to be compared against
+ Thrown when the objects are not equal
+
+
+
+ Verifies that two objects are equal, using a custom equatable comparer.
+
+ The type of the objects to be compared
+ The expected value
+ The value to be compared against
+ The comparer used to compare the two objects
+ Thrown when the objects are not equal
+
+
+
+ Verifies that two values are equal, within the number of decimal
+ places given by .
+
+ The expected value
+ The value to be compared against
+ The number of decimal places (valid values: 0-15)
+ Thrown when the values are not equal
+
+
+
+ Verifies that two values are equal, within the number of decimal
+ places given by .
+
+ The expected value
+ The value to be compared against
+ The number of decimal places (valid values: 0-15)
+ Thrown when the values are not equal
+
+
+
+ Verifies that two objects are strictly equal, using the type's default comparer.
+
+ The type of the objects to be compared
+ The expected value
+ The value to be compared against
+ Thrown when the objects are not equal
+
+
+
+ Verifies that two objects are not equal, using a default comparer.
+
+ The type of the objects to be compared
+ The expected object
+ The actual object
+ Thrown when the objects are equal
+
+
+
+ Verifies that two objects are not equal, using a custom equality comparer.
+
+ The type of the objects to be compared
+ The expected object
+ The actual object
+ The comparer used to examine the objects
+ Thrown when the objects are equal
+
+
+
+ Verifies that two values are not equal, within the number of decimal
+ places given by .
+
+ The expected value
+ The value to be compared against
+ The number of decimal places (valid values: 0-15)
+ Thrown when the values are equal
+
+
+
+ Verifies that two values are not equal, within the number of decimal
+ places given by .
+
+ The expected value
+ The value to be compared against
+ The number of decimal places (valid values: 0-15)
+ Thrown when the values are equal
+
+
+
+ Verifies that two objects are strictly not equal, using the type's default comparer.
+
+ The type of the objects to be compared
+ The expected object
+ The actual object
+ Thrown when the objects are equal
+
+
+
+ Verifies that the exact exception is thrown (and not a derived exception type).
+
+ The type of the exception expected to be thrown
+ A delegate to the code to be tested
+ The exception that was thrown, when successful
+ Thrown when an exception was not thrown, or when an exception of the incorrect type is thrown
+
+
+
+ Verifies that the exact exception is thrown (and not a derived exception type).
+ Generally used to test property accessors.
+
+ The type of the exception expected to be thrown
+ A delegate to the code to be tested
+ The exception that was thrown, when successful
+ Thrown when an exception was not thrown, or when an exception of the incorrect type is thrown
+
+
+
+
+
+
+ Verifies that the exact exception is thrown (and not a derived exception type).
+
+ The type of the exception expected to be thrown
+ A delegate to the task to be tested
+ The exception that was thrown, when successful
+ Thrown when an exception was not thrown, or when an exception of the incorrect type is thrown
+
+
+
+ Verifies that the exact exception or a derived exception type is thrown.
+
+ The type of the exception expected to be thrown
+ A delegate to the code to be tested
+ The exception that was thrown, when successful
+ Thrown when an exception was not thrown, or when an exception of the incorrect type is thrown
+
+
+
+ Verifies that the exact exception or a derived exception type is thrown.
+ Generally used to test property accessors.
+
+ The type of the exception expected to be thrown
+ A delegate to the code to be tested
+ The exception that was thrown, when successful
+ Thrown when an exception was not thrown, or when an exception of the incorrect type is thrown
+
+
+
+ Verifies that the exact exception or a derived exception type is thrown.
+
+ The type of the exception expected to be thrown
+ A delegate to the task to be tested
+ The exception that was thrown, when successful
+ Thrown when an exception was not thrown, or when an exception of the incorrect type is thrown
+
+
+
+ Verifies that the exact exception is thrown (and not a derived exception type).
+
+ The type of the exception expected to be thrown
+ A delegate to the code to be tested
+ The exception that was thrown, when successful
+ Thrown when an exception was not thrown, or when an exception of the incorrect type is thrown
+
+
+
+ Verifies that the exact exception is thrown (and not a derived exception type).
+ Generally used to test property accessors.
+
+ The type of the exception expected to be thrown
+ A delegate to the code to be tested
+ The exception that was thrown, when successful
+ Thrown when an exception was not thrown, or when an exception of the incorrect type is thrown
+
+
+
+ Verifies that the exact exception is thrown (and not a derived exception type).
+
+ The type of the exception expected to be thrown
+ A delegate to the task to be tested
+ The exception that was thrown, when successful
+ Thrown when an exception was not thrown, or when an exception of the incorrect type is thrown
+
+
+
+ Verifies that the exact exception is thrown (and not a derived exception type), where the exception
+ derives from and has the given parameter name.
+
+ The parameter name that is expected to be in the exception
+ A delegate to the code to be tested
+ The exception that was thrown, when successful
+ Thrown when an exception was not thrown, or when an exception of the incorrect type is thrown
+
+
+
+ Verifies that the exact exception is thrown (and not a derived exception type), where the exception
+ derives from and has the given parameter name.
+
+ The parameter name that is expected to be in the exception
+ A delegate to the code to be tested
+ The exception that was thrown, when successful
+ Thrown when an exception was not thrown, or when an exception of the incorrect type is thrown
+
+
+
+
+
+
+ Verifies that the exact exception is thrown (and not a derived exception type), where the exception
+ derives from and has the given parameter name.
+
+ The parameter name that is expected to be in the exception
+ A delegate to the task to be tested
+ The exception that was thrown, when successful
+ Thrown when an exception was not thrown, or when an exception of the incorrect type is thrown
+
+
+
+
+
+
+ Records any exception which is thrown by the given code.
+
+ The code which may thrown an exception.
+ Returns the exception that was thrown by the code; null, otherwise.
+
+
+
+ Records any exception which is thrown by the given code that has
+ a return value. Generally used for testing property accessors.
+
+ The code which may thrown an exception.
+ Returns the exception that was thrown by the code; null, otherwise.
+
+
+
+
+
+
+ Records any exception which is thrown by the given task.
+
+ The task which may thrown an exception.
+ Returns the exception that was thrown by the code; null, otherwise.
+
+
+
+ Verifies that two objects are not the same instance.
+
+ The expected object instance
+ The actual object instance
+ Thrown when the objects are the same instance
+
+
+
+ Verifies that two objects are the same instance.
+
+ The expected object instance
+ The actual object instance
+ Thrown when the objects are not the same instance
+
+
+
+ Verifies that an object reference is not null.
+
+ The object to be validated
+ Thrown when the object is not null
+
+
+
+ Verifies that an object reference is null.
+
+ The object to be inspected
+ Thrown when the object reference is not null
+
+
+
+ Verifies that the provided object raised INotifyPropertyChanged.PropertyChanged
+ as a result of executing the given test code.
+
+ The object which should raise the notification
+ The property name for which the notification should be raised
+ The test code which should cause the notification to be raised
+ Thrown when the notification is not raised
+
+
+
+ Verifies that a value is within a given range.
+
+ The type of the value to be compared
+ The actual value to be evaluated
+ The (inclusive) low value of the range
+ The (inclusive) high value of the range
+ Thrown when the value is not in the given range
+
+
+
+ Verifies that a value is within a given range, using a comparer.
+
+ The type of the value to be compared
+ The actual value to be evaluated
+ The (inclusive) low value of the range
+ The (inclusive) high value of the range
+ The comparer used to evaluate the value's range
+ Thrown when the value is not in the given range
+
+
+
+ Verifies that a value is not within a given range, using the default comparer.
+
+ The type of the value to be compared
+ The actual value to be evaluated
+ The (inclusive) low value of the range
+ The (inclusive) high value of the range
+ Thrown when the value is in the given range
+
+
+
+ Verifies that a value is not within a given range, using a comparer.
+
+ The type of the value to be compared
+ The actual value to be evaluated
+ The (inclusive) low value of the range
+ The (inclusive) high value of the range
+ The comparer used to evaluate the value's range
+ Thrown when the value is in the given range
+
+
+
+ Verifies that a set is a proper subset of another set.
+
+ The type of the object to be verified
+ The expected superset
+ The set expected to be a proper subset
+ Thrown when the actual set is not a proper subset of the expected set
+
+
+
+ Verifies that a set is a proper superset of another set.
+
+ The type of the object to be verified
+ The expected subset
+ The set expected to be a proper superset
+ Thrown when the actual set is not a proper superset of the expected set
+
+
+
+ Verifies that a set is a subset of another set.
+
+ The type of the object to be verified
+ The expected superset
+ The set expected to be a subset
+ Thrown when the actual set is not a subset of the expected set
+
+
+
+ Verifies that a set is a superset of another set.
+
+ The type of the object to be verified
+ The expected subset
+ The set expected to be a superset
+ Thrown when the actual set is not a superset of the expected set
+
+
+
+ Verifies that a string contains a given sub-string, using the current culture.
+
+ The sub-string expected to be in the string
+ The string to be inspected
+ Thrown when the sub-string is not present inside the string
+
+
+
+ Verifies that a string contains a given sub-string, using the given comparison type.
+
+ The sub-string expected to be in the string
+ The string to be inspected
+ The type of string comparison to perform
+ Thrown when the sub-string is not present inside the string
+
+
+
+ Verifies that a string does not contain a given sub-string, using the current culture.
+
+ The sub-string which is expected not to be in the string
+ The string to be inspected
+ Thrown when the sub-string is present inside the string
+
+
+
+ Verifies that a string does not contain a given sub-string, using the current culture.
+
+ The sub-string which is expected not to be in the string
+ The string to be inspected
+ The type of string comparison to perform
+ Thrown when the sub-string is present inside the given string
+
+
+
+ Verifies that a string starts with a given string, using the current culture.
+
+ The string expected to be at the start of the string
+ The string to be inspected
+ Thrown when the string does not start with the expected string
+
+
+
+ Verifies that a string starts with a given string, using the given comparison type.
+
+ The string expected to be at the start of the string
+ The string to be inspected
+ The type of string comparison to perform
+ Thrown when the string does not start with the expected string
+
+
+
+ Verifies that a string ends with a given string, using the current culture.
+
+ The string expected to be at the end of the string
+ The string to be inspected
+ Thrown when the string does not end with the expected string
+
+
+
+ Verifies that a string ends with a given string, using the given comparison type.
+
+ The string expected to be at the end of the string
+ The string to be inspected
+ The type of string comparison to perform
+ Thrown when the string does not end with the expected string
+
+
+
+ Verifies that a string matches a regular expression.
+
+ The regex pattern expected to match
+ The string to be inspected
+ Thrown when the string does not match the regex pattern
+
+
+
+ Verifies that a string matches a regular expression.
+
+ The regex expected to match
+ The string to be inspected
+ Thrown when the string does not match the regex
+
+
+
+ Verifies that a string does not match a regular expression.
+
+ The regex pattern expected not to match
+ The string to be inspected
+ Thrown when the string matches the regex pattern
+
+
+
+ Verifies that a string does not match a regular expression.
+
+ The regex expected not to match
+ The string to be inspected
+ Thrown when the string matches the regex
+
+
+
+ Verifies that two strings are equivalent.
+
+ The expected string value.
+ The actual string value.
+ Thrown when the strings are not equivalent.
+
+
+
+ Verifies that two strings are equivalent.
+
+ The expected string value.
+ The actual string value.
+ If set to true, ignores cases differences. The invariant culture is used.
+ If set to true, treats \r\n, \r, and \n as equivalent.
+ If set to true, treats spaces and tabs (in any non-zero quantity) as equivalent.
+ Thrown when the strings are not equivalent.
+
+
+
+ Verifies that an object is of the given type or a derived type.
+
+ The type the object should be
+ The object to be evaluated
+ The object, casted to type T when successful
+ Thrown when the object is not the given type
+
+
+
+ Verifies that an object is of the given type or a derived type.
+
+ The type the object should be
+ The object to be evaluated
+ Thrown when the object is not the given type
+
+
+
+ Verifies that an object is not exactly the given type.
+
+ The type the object should not be
+ The object to be evaluated
+ Thrown when the object is the given type
+
+
+
+ Verifies that an object is not exactly the given type.
+
+ The type the object should not be
+ The object to be evaluated
+ Thrown when the object is the given type
+
+
+
+ Verifies that an object is exactly the given type (and not a derived type).
+
+ The type the object should be
+ The object to be evaluated
+ The object, casted to type T when successful
+ Thrown when the object is not the given type
+
+
+
+ Verifies that an object is exactly the given type (and not a derived type).
+
+ The type the object should be
+ The object to be evaluated
+ Thrown when the object is not the given type
+
+
+
+ Formats arguments for display in theories.
+
+
+
+
+ Format the value for presentation.
+
+ The value to be formatted.
+ The formatted value.
+
+
+
+ Default implementation of used by the xUnit.net range assertions.
+
+ The type that is being compared.
+
+
+
+
+
+
+ Default implementation of used by the xUnit.net equality assertions.
+
+ The type that is being compared.
+
+
+
+ Initializes a new instance of the class.
+
+ Set to true to skip type equality checks.
+ The inner comparer to be used when the compared objects are enumerable.
+
+
+
+
+
+
+
+
+
+ A class that wraps to create .
+
+ The type that is being compared.
+
+
+
+ Initializes a new instance of the class.
+
+ The comparer that is being adapted.
+
+
+
+
+
+
+
+
+
+ Base class for exceptions that have actual and expected values
+
+
+
+
+ Creates a new instance of the class.
+
+ The expected value
+ The actual value
+ The user message to be shown
+ The title to use for the expected value (defaults to "Expected")
+ The title to use for the actual value (defaults to "Actual")
+
+
+
+ Gets the actual value.
+
+
+
+
+ Gets the title used for the actual value.
+
+
+
+
+ Gets the expected value.
+
+
+
+
+ Gets the title used for the expected value.
+
+
+
+
+ Gets a message that describes the current exception. Includes the expected and actual values.
+
+ The error message that explains the reason for the exception, or an empty string("").
+ 1
+
+
+
+ Exception thrown when the collection did not contain exactly the given number element.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The expected number of items in the collection.
+ The actual number of items in the collection.
+
+
+
+ Exception thrown when Assert.Collection fails.
+
+
+
+
+ Creates a new instance of the class.
+
+ The expected number of items in the collection.
+ The actual number of items in the collection.
+ The index of the position where the first comparison failure occurred.
+ The exception that was thrown during the comparison failure.
+
+
+
+ The actual number of items in the collection.
+
+
+
+
+ The expected number of items in the collection.
+
+
+
+
+ The index of the position where the first comparison failure occurred, or -1 if
+ comparisions did not occur (because the actual and expected counts differed).
+
+
+
+
+
+
+
+
+
+
+ Exception thrown when an All assertion has one or more items fail an assertion.
+
+
+
+
+ Creates a new instance of the class.
+
+ The total number of items that were in the collection.
+ The list of errors that occurred during the test pass.
+
+
+
+ The errors that occurred during execution of the test.
+
+
+
+
+
+
+
+ Exception thrown when a collection unexpectedly does not contain the expected value.
+
+
+
+
+ Creates a new instance of the class.
+
+ The expected object value
+ The actual value
+
+
+
+ Exception thrown when a collection unexpectedly contains the expected value.
+
+
+
+
+ Creates a new instance of the class.
+
+ The expected object value
+ The actual value
+
+
+
+ Exception thrown when a string unexpectedly matches a regular expression.
+
+
+
+
+ Creates a new instance of the class.
+
+ The regular expression pattern expected not to match
+ The actual value
+
+
+
+ Exception thrown when a collection is unexpectedly not empty.
+
+
+
+
+ Creates a new instance of the class.
+
+
+
+
+ Exception thrown when a string does not end with the expected value.
+
+
+
+
+ Creates a new instance of the class.
+
+ The expected string value
+ The actual value
+
+
+
+ Exception thrown when two values are unexpectedly not equal.
+
+
+
+
+ Creates a new instance of the class.
+
+ The expected object value
+ The actual object value
+
+
+
+ Creates a new instance of the class for string comparisons.
+
+ The expected string value
+ The actual string value
+ The first index in the expected string where the strings differ
+ The first index in the actual string where the strings differ
+
+
+
+ Gets the index into the actual value where the values first differed.
+ Returns -1 if the difference index points were not provided.
+
+
+
+
+ Gets the index into the expected value where the values first differed.
+ Returns -1 if the difference index points were not provided.
+
+
+
+
+
+
+
+ Exception thrown when a value is unexpectedly true.
+
+
+
+
+ Creates a new instance of the class.
+
+ The user message to be display, or null for the default message
+ The actual value
+
+
+
+ Exception thrown when a value is unexpectedly not in the given range.
+
+
+
+
+ Creates a new instance of the class.
+
+ The actual object value
+ The low value of the range
+ The high value of the range
+
+
+
+ Gets the actual object value
+
+
+
+
+ Gets the high value of the range
+
+
+
+
+ Gets the low value of the range
+
+
+
+
+ Gets a message that describes the current exception.
+
+ The error message that explains the reason for the exception, or an empty string("").
+
+
+
+ Exception thrown when the value is unexpectedly not of the given type or a derived type.
+
+
+
+
+ Creates a new instance of the class.
+
+ The expected type
+ The actual object value
+
+
+
+ Exception thrown when the value is unexpectedly of the exact given type.
+
+
+
+
+ Creates a new instance of the class.
+
+ The expected type
+ The actual object value
+
+
+
+ Exception thrown when the value is unexpectedly not of the exact given type.
+
+
+
+
+ Creates a new instance of the class.
+
+ The expected type name
+ The actual type name
+
+
+
+ Exception thrown when a string does not match a regular expression.
+
+
+
+
+ Creates a new instance of the class.
+
+ The expected regular expression pattern
+ The actual value
+
+
+
+ Exception thrown when a collection is unexpectedly empty.
+
+
+
+
+ Creates a new instance of the class.
+
+
+
+
+ Exception thrown when two values are unexpectedly equal.
+
+
+
+
+ Creates a new instance of the class.
+
+
+
+
+ Exception thrown when a value is unexpectedly in the given range.
+
+
+
+
+ Creates a new instance of the class.
+
+ The actual object value
+ The low value of the range
+ The high value of the range
+
+
+
+ Gets the actual object value
+
+
+
+
+ Gets the high value of the range
+
+
+
+
+ Gets the low value of the range
+
+
+
+
+ Gets a message that describes the current exception.
+
+ The error message that explains the reason for the exception, or an empty string("").
+
+
+
+ Exception thrown when an object is unexpectedly null.
+
+
+
+
+ Creates a new instance of the class.
+
+
+
+
+ Exception thrown when two values are unexpected the same instance.
+
+
+
+
+ Creates a new instance of the class.
+
+
+
+
+ Exception thrown when an object reference is unexpectedly not null.
+
+
+
+
+ Creates a new instance of the class.
+
+
+
+
+
+ Exception to be thrown from theory execution when the number of
+ parameter values does not the test method signature.
+
+
+
+
+ Exception thrown when a set is not a proper subset of another set.
+
+
+
+
+ Creates a new instance of the class.
+
+
+
+
+ Exception thrown when a set is not a proper superset of another set.
+
+
+
+
+ Creates a new instance of the class.
+
+
+
+
+ Exception thrown when code unexpectedly fails change a property.
+
+
+
+
+ Creates a new instance of the class. Call this constructor
+ when no exception was thrown.
+
+ The name of the property that was expected to be changed.
+
+
+
+ Exception thrown when two object references are unexpectedly not the same instance.
+
+
+
+
+ Creates a new instance of the class.
+
+ The expected object reference
+ The actual object reference
+
+
+
+ Exception thrown when the collection did not contain exactly one element.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The numbers of items in the collection.
+
+
+
+ Exception thrown when a string does not start with the expected value.
+
+
+
+
+ Creates a new instance of the class.
+
+ The expected string value
+ The actual value
+
+
+
+ Exception thrown when a set is not a subset of another set.
+
+
+
+
+ Creates a new instance of the class.
+
+
+
+
+ Exception thrown when a set is not a superset of another set.
+
+
+
+
+ Creates a new instance of the class.
+
+
+
+
+ Exception thrown when code unexpectedly fails to throw an exception.
+
+
+
+
+ Creates a new instance of the class. Call this constructor
+ when no exception was thrown.
+
+ The type of the exception that was expected
+
+
+
+ Creates a new instance of the class. Call this constructor
+ when an exception of the wrong type was thrown.
+
+ The type of the exception that was expected
+ The actual exception that was thrown
+
+
+
+ THIS CONSTRUCTOR IS FOR UNIT TESTING PURPOSES ONLY.
+
+
+
+
+ Gets a string representation of the frames on the call stack at the time the current exception was thrown.
+
+ A string that describes the contents of the call stack, with the most recent method call appearing first.
+
+
+
+ Exception thrown when a value is unexpectedly false.
+
+
+
+
+ Creates a new instance of the class.
+
+ The user message to be displayed, or null for the default message
+ The actual value
+
+
+
+ The base assert exception class
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The user message to be displayed
+
+
+
+ Initializes a new instance of the class.
+
+ The user message to be displayed
+ The inner exception
+
+
+
+ Initializes a new instance of the class.
+
+ The user message to be displayed
+ The stack trace to be displayed
+
+
+
+ Gets a string representation of the frames on the call stack at the time the current exception was thrown.
+
+ A string that describes the contents of the call stack, with the most recent method call appearing first.
+
+
+
+ Gets the user message
+
+
+
+
+
+
+
diff --git a/Tests/bin/Debug/xunit.core.xml b/Tests/bin/Debug/xunit.core.xml
new file mode 100644
index 0000000..8bd3ce5
--- /dev/null
+++ b/Tests/bin/Debug/xunit.core.xml
@@ -0,0 +1,1001 @@
+
+
+
+ xunit.core
+
+
+
+
+ Rethrows an exception object without losing the existing stack trace information
+
+ The exception to re-throw.
+
+ For more information on this technique, see
+ http://www.dotnetjunkies.com/WebLog/chris.taylor/archive/2004/03/03/8353.aspx.
+ The remote_stack_trace string is here to support Mono.
+
+
+
+
+ Unwraps an exception to remove any wrappers, like .
+
+ The exception to unwrap.
+ The unwrapped exception.
+
+
+
+ Guard class, used for guard clauses and argument validation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Indicates the default display name format for test methods.
+
+
+
+
+ Use a fully qualified name (namespace + class + method)
+
+
+
+
+ Use just the method name (without class)
+
+
+
+
+ Formats arguments for display in theories.
+
+
+
+
+ Format the value for presentation.
+
+ The value to be formatted.
+ The formatted value.
+
+
+
+ Default implementation of used by the xUnit.net equality assertions.
+
+ The type that is being compared.
+
+
+
+ Initializes a new instance of the class.
+
+ Set to true to skip type equality checks.
+ The inner comparer to be used when the compared objects are enumerable.
+
+
+
+
+
+
+
+
+
+ A class that wraps to create .
+
+ The type that is being compared.
+
+
+
+ Initializes a new instance of the class.
+
+ The comparer that is being adapted.
+
+
+
+
+
+
+
+
+
+ Base attribute which indicates a test method interception (allows code to be run before and
+ after the test is run).
+
+
+
+
+ This method is called after the test method is executed.
+
+ The method under test
+
+
+
+ This method is called before the test method is executed.
+
+ The method under test
+
+
+
+ Abstract attribute which represents a data source for a data theory.
+ Data source providers derive from this attribute and implement GetData
+ to return the data for the theory.
+
+
+
+
+ Returns the data to be used to test the theory.
+
+ The method that is being tested
+ One or more sets of theory data. Each invocation of the test method
+ is represented by a single object array.
+
+
+
+ Implementation of for discovering .
+
+
+
+
+
+
+
+ Default implementation of . Uses reflection to find the
+ data associated with ; may return null when called
+ without reflection-based abstraction implementations.
+
+
+
+
+
+
+
+
+
+
+ An attribute used to decorate classes which derive from ,
+ to indicate how data elements should be discovered.
+
+
+
+
+ Initializes an instance of .
+
+ The fully qualified type name of the discoverer
+ (f.e., 'Xunit.Sdk.DataDiscoverer')
+ The name of the assembly that the discoverer type
+ is located in, without file extension (f.e., 'xunit.execution')
+
+
+
+ Aggregates exceptions. Intended to run one or more code blocks, and collect the
+ exceptions thrown by those code blocks.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class that
+ contains the exception list of its parent.
+
+ The parent aggregator to copy exceptions from.
+
+
+
+ Returns true if the aggregator has at least one exception inside it.
+
+
+
+
+ Adds an exception to the aggregator.
+
+ The exception to be added.
+
+
+
+ Adds exceptions from another aggregator into this aggregator.
+
+ The aggregator whose exceptions should be copied.
+
+
+
+ Clears the aggregator.
+
+
+
+
+ Runs the code, catching the exception that is thrown and adding it to
+ the aggregate.
+
+ The code to be run.
+
+
+
+ Runs the code, catching the exception that is thrown and adding it to
+ the aggregate.
+
+ The code to be run.
+
+
+
+ Runs the code, catching the exception that is thrown and adding it to
+ the aggregate.
+
+ The code to be run.
+
+
+
+ Returns an exception that represents the exceptions thrown by the code
+ passed to the or method.
+
+ Returns null if no exceptions were thrown; returns the
+ exact exception is a single exception was thrown; returns
+ if more than one exception was thrown.
+
+
+
+ This class is responsible for discovering the data available in an implementation
+ of . The discovery process may not always have access
+ to reflection (i.e., running in Resharper), so the discoverer must make a best
+ effort to return data, but may return null when there is not enough information
+ available (for example, if reflection is required to answer the question).
+
+
+
+
+ Returns the data to be used to test the theory.
+
+
+ This will be called during
+ discovery, at which point the may or may not
+ be backed by reflection (i.e., implementing ).
+ If the data is not available because reflection is required, then you may return
+ null to inform xUnit that the quantity of data is unknown at this point.
+ When the tests are run, if you returned back null during discovery, then this method
+ will be called again to retrieve the data, this time guaranteed to provide
+ an implementation of . At this time, you
+ must return the actual data, and returning null is not legal.
+
+ The data attribute being discovered
+ The method that is being tested/discovered
+ The theory data (or null during discovery, if not enough
+ information is available to enumerate the data)
+
+
+
+ Returns true if the data attribute supports enumeration during
+ discovery; false otherwise. Data attributes with expensive computational
+ costs and/or randomized data sets should return false.
+
+
+
+
+ Used by discovery, execution, and extensibility code to send messages to the runner.
+
+
+
+
+ Queues a message to be sent to the runner.
+
+ The message to be sent to the runner
+
+ Returns true if discovery/execution should continue; false, otherwise.
+ The return value may be safely ignored by components which are not directly responsible
+ for discovery or execution, and this is intended to communicate to those sub-systems that
+ that they should short circuit and stop their work as quickly as is reasonable.
+
+
+
+
+ Implementation of used to discover the data
+ provided by .
+
+
+
+
+
+
+
+
+
+
+ A class implements this interface to participate in ordering tests
+ for the test runner. Test case orderers are applied using the
+ , which can be applied at
+ the assembly, test collection, and test class level.
+
+
+
+
+ Orders test cases for execution.
+
+ The test cases to be ordered.
+ The test cases in the order to be run.
+
+
+
+ Marker interface that must be implemented by test framework attributes, so
+ that the test framework attribute discoverer can find them.
+
+
+
+
+ Interface to be implemented by classes which are used to discover the test framework.
+
+
+
+
+ Gets the type that implements to be used to discover
+ and run tests.
+
+ The test framework attribute that decorated the assembly
+ The test framework type
+
+
+
+ Marker interface used by attributes which provide trait data.
+
+
+
+
+ This interface is implemented by discoverers that provide trait values to
+ xUnit.net v2 tests.
+
+
+
+
+ Gets the trait values from the trait attribute.
+
+ The trait attribute containing the trait values.
+ The trait values.
+
+
+
+ Interface to be implemented by classes which are used to discover tests cases attached
+ to test methods that are attributed with (or a subclass).
+
+
+
+
+ Discover test cases from a test method.
+
+ The discovery options to be used.
+ The test method the test cases belong to.
+ The fact attribute attached to the test method.
+ Returns zero or more test cases represented by the test method.
+
+
+
+ Represents a single test case from xUnit.net v2.
+
+
+
+
+ Gets the method to be run. Differs from . in that
+ any generic argument types will have been closed based on the arguments.
+
+
+
+
+ Executes the test case, returning 0 or more result messages through the message sink.
+
+ The message sink used to send diagnostic messages to.
+ The message bus to report results to.
+ The arguments to pass to the constructor.
+ The error aggregator to use for catching exception.
+ The cancellation token source that indicates whether cancellation has been requested.
+ Returns the summary of the test case run.
+
+
+
+ This interface is intended to be implemented by components which generate test collections.
+ End users specify the desired test collection factory by applying
+ at the assembly level. Classes which implement this interface must have a constructor
+ that takes and .
+
+
+
+
+ Gets the display name for the test collection factory. This information is shown to the end
+ user as part of the description of the test environment.
+
+
+
+
+ Gets the test collection for a given test class.
+
+ The test class.
+ The test collection.
+
+
+
+ Marks an assembly as a platform specific assembly for use with xUnit.net. Type references from
+ such assemblies are allowed to use a special suffix ("My.Assembly.{Platform}"), which will
+ automatically be translated into the correct platform-specific name ("My.Assembly.desktop",
+ "My.Assembly.win8", etc.). This affects both extensibility points which require specifying
+ a string-based type name and assembly, as well as serialization.
+
+ In v2.1 and later, the supported platform target names include:
+
+ "desktop" (for desktop and PCL tests),
+ "dotnet" (everything else).
+
+ In v2.0, the following names were also supported:
+
+ "iOS-Universal" (for Xamarin test projects targeting iOS),
+ "MonoAndroid" (for Xamarin MonoAndroid tests),
+ "MonoTouch" (for Xamarin MonoTouch tests),
+ "universal" (for Windows Phone 8.1 and Windows 8.1 tests),
+ "win8" (for Windows 8 tests),
+ "wp8" (for Windows Phone 8 Silverlight tests).
+
+ For backward compatibility reasons, the v2.1 runners will support tests linked against
+ the v2.0 execution libraries.
+
+ Note that file names may be case sensitive (when running on platforms with case sensitive
+ file systems like Linux), so ensure that your assembly file name casing is consistent, and
+ that you use the suffixes here with the exact case shown.
+
+
+
+
+ Represents the statistical summary from a run of one or more tests.
+
+
+
+
+ The total number of tests run.
+
+
+
+
+ The number of failed tests.
+
+
+
+
+ The number of skipped tests.
+
+
+
+
+ The total time taken to run the tests, in seconds.
+
+
+
+
+ Adds a run summary's totals into this run summary.
+
+ The run summary to be added.
+
+
+
+ Decorates an implementation of that is used to
+ determine which test framework is used to discover and run tests.
+
+
+
+
+ Initializes an instance of .
+
+ The fully qualified type name of the discoverer
+ (f.e., 'Xunit.Sdk.DataDiscoverer')
+ The name of the assembly that the discoverer type
+ is located in, without file extension (f.e., 'xunit.execution')
+
+
+
+ An attribute used to decorate classes which derive from ,
+ to indicate how test cases should be discovered.
+
+
+
+
+ Initializes an instance of the class.
+
+ The fully qualified type name of the discoverer
+ (f.e., 'Xunit.Sdk.FactDiscoverer')
+ The name of the assembly that the discoverer type
+ is located in, without file extension (f.e., 'xunit.execution')
+
+
+
+ The implementation of which returns the trait values
+ for .
+
+
+
+
+
+
+
+ An attribute used to decorate classes which implement ,
+ to indicate how trait values should be discovered. The discoverer type must implement
+ .
+
+
+
+
+ Initializes an instance of .
+
+ The fully qualified type name of the discoverer
+ (f.e., 'Xunit.Sdk.TraitDiscoverer')
+ The name of the assembly that the discoverer type
+ is located in, without file extension (f.e., 'xunit.execution')
+
+
+
+ Provides a data source for a data theory, with the data coming from a class
+ which must implement IEnumerable<object[]>.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The class that provides the data.
+
+
+
+ Gets the type of the class that provides the data.
+
+
+
+
+
+
+
+ Used to declare a specific test collection for a test class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The test collection name.
+
+
+
+ Defines the built-in behavior types for collections in xUnit.net.
+
+
+
+
+ By default, generates a collection per assembly, and any test classes that are not
+ decorated with will be placed into the assembly-level
+ collection.
+
+
+
+
+ By default, generates a collection per test class for any test classes that are not
+ decorated with .
+
+
+
+
+ Used to declare a the default test collection behavior for the assembly.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The collection behavior for the assembly.
+
+
+
+ Initializes a new instance of the class.
+
+ The type name of the test collection factory (that implements ).
+ The assembly that exists in.
+
+
+
+ Determines whether tests in this assembly are run in parallel.
+
+
+
+
+ Determines how many tests can run in parallel with each other. If set to 0, the system will
+ use . If set to a negative number, then there will
+ be no limit to the number of threads.
+
+
+
+
+ Used to declare a test collection container class. The container class gives
+ developers a place to attach interfaces like and
+ that will be applied to all tests classes
+ that are members of the test collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The test collection name.
+
+
+
+ Attribute that is applied to a method to indicate that it is a fact that should be run
+ by the test runner. It can also be extended to support a customized definition of a
+ test method.
+
+
+
+
+ Gets the name of the test to be used when the test is skipped. Defaults to
+ null, which will cause the fully qualified test name to be used.
+
+
+
+
+ Marks the test so that it will not be run, and gets or sets the skip reason
+
+
+
+
+ Used to provide asynchronous lifetime functionality. Currently supported:
+ - Test classes
+ - Classes used in
+ - Classes used in .
+
+
+
+
+ Called immediately after the class has been created, before it is used.
+
+
+
+
+ Called when an object is no longer needed. Called just before
+ if the class also implements that.
+
+
+
+
+ Used to decorate xUnit.net test classes and collections to indicate a test which has
+ per-test-class fixture data. An instance of the fixture data is initialized just before
+ the first test in the class is run, and if it implements IDisposable, is disposed
+ after the last test in the class is run. To gain access to the fixture data from
+ inside the test, a constructor argument should be added to the test class which
+ exactly matches the . Class fixtures must have a
+ single parameterless constructor, and may take collection fixture types as constructor
+ arguments.
+
+ The type of the fixture.
+
+ If asynchronous setup of is required
+ it should implement the interface.
+
+
+
+
+ Used to decorate xUnit.net test classes and collections to indicate a test which has
+ per-test-collection fixture data. An instance of the fixture data is initialized just before
+ the first test in the collection is run, and if it implements IDisposable, is disposed
+ after the last test in the collection is run. To gain access to the fixture data from
+ inside the test, a constructor argument should be added to the test class which
+ exactly matches the .
+
+ The type of the fixture.
+
+ If asynchronous setup of is required
+ it should implement the interface.
+
+
+
+
+ Provides a data source for a data theory, with the data coming from inline values.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The data values to pass to the theory.
+
+
+
+
+
+
+ A class implements this interface to participate in ordering tests
+ for the test runner. Test collection orderers are applied using the
+ , which can be applied at
+ the assembly level.
+
+
+
+
+ Orders test collections for execution.
+
+ The test collections to be ordered.
+ The test collections in the order to be run.
+
+
+
+ Provides a data source for a data theory, with the data coming from one of the following sources:
+ 1. A static property
+ 2. A static field
+ 3. A static method (with parameters)
+ The member must return something compatible with IEnumerable<object[]> with the test data.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The name of the public static member on the test class that will provide the test data
+ The parameters for the member (only supported for methods; ignored for everything else)
+
+
+
+
+
+
+ Provides a base class for attributes that will provide member data. The member data must return
+ something compatible with .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The name of the public static member on the test class that will provide the test data
+ The parameters for the member (only supported for methods; ignored for everything else)
+
+
+
+ Returns true if the data attribute wants to skip enumerating data during discovery.
+ This will cause the theory to yield a single test case for all data, and the data discovery
+ will be during test execution instead of discovery.
+
+
+
+
+ Gets the member name.
+
+
+
+
+ Gets or sets the type to retrieve the member from. If not set, then the property will be
+ retrieved from the unit test class.
+
+
+
+
+ Gets or sets the parameters passed to the member. Only supported for static methods.
+
+
+
+
+
+
+
+ Converts an item yielded by the data member to an object array, for return from .
+
+ The method that is being tested.
+ An item yielded from the data member.
+ An suitable for return from .
+
+
+
+
+
+
+
+
+
+
+
+
+ Allows the user to record actions for a test.
+
+
+
+
+ Records any exception which is thrown by the given code.
+
+ The code which may thrown an exception.
+ Returns the exception that was thrown by the code; null, otherwise.
+
+
+
+ Records any exception which is thrown by the given code that has
+ a return value. Generally used for testing property accessors.
+
+ The code which may thrown an exception.
+ Returns the exception that was thrown by the code; null, otherwise.
+
+
+
+
+
+
+ Records any exception which is thrown by the given task.
+
+ The task which may thrown an exception.
+ Returns the exception that was thrown by the code; null, otherwise.
+
+
+
+
+
+
+ Used to decorate an assembly to allow the use a custom .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The type name of the orderer class (that implements ).
+ The assembly that exists in.
+
+
+
+ Used to decorate an assembly, test collection, or test class to allow
+ the use a custom .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The type name of the orderer class (that implements ).
+ The assembly that exists in.
+
+
+
+ Used to decorate an assembly to allow the use a custom .
+
+
+
+
+ Initializes an instance of .
+
+ The fully qualified type name of the test framework
+ (f.e., 'Xunit.Sdk.XunitTestFramework')
+ The name of the assembly that the test framework type
+ is located in, without file extension (f.e., 'xunit.execution')
+
+
+
+ Marks a test method as being a data theory. Data theories are tests which are fed
+ various bits of data from a data source, mapping to parameters on the test method.
+ If the data source contains multiple rows, then the test method is executed
+ multiple times (once with each data row). Data is provided by attributes which
+ derive from (notably, and
+ ).
+
+
+
+
+ Provides data for theories based on collection initialization syntax.
+
+
+
+
+ Adds a row to the theory.
+
+ The values to be added.
+
+
+
+
+
+
+
+
+
+ Represents a set of data for a theory with a single parameter. Data can
+ be added to the data set using the collection initializer syntax.
+
+ The parameter type.
+
+
+
+ Adds data to the theory data set.
+
+ The data value.
+
+
+
+ Represents a set of data for a theory with 2 parameters. Data can
+ be added to the data set using the collection initializer syntax.
+
+ The first parameter type.
+ The second parameter type.
+
+
+
+ Adds data to the theory data set.
+
+ The first data value.
+ The second data value.
+
+
+
+ Represents a set of data for a theory with 3 parameters. Data can
+ be added to the data set using the collection initializer syntax.
+
+ The first parameter type.
+ The second parameter type.
+ The third parameter type.
+
+
+
+ Adds data to the theory data set.
+
+ The first data value.
+ The second data value.
+ The third data value.
+
+
+
+ Represents a set of data for a theory with 3 parameters. Data can
+ be added to the data set using the collection initializer syntax.
+
+ The first parameter type.
+ The second parameter type.
+ The third parameter type.
+ The fourth parameter type.
+
+
+
+ Adds data to the theory data set.
+
+ The first data value.
+ The second data value.
+ The third data value.
+ The fourth data value.
+
+
+
+ Represents a set of data for a theory with 3 parameters. Data can
+ be added to the data set using the collection initializer syntax.
+
+ The first parameter type.
+ The second parameter type.
+ The third parameter type.
+ The fourth parameter type.
+ The fifth parameter type.
+
+
+
+ Adds data to the theory data set.
+
+ The first data value.
+ The second data value.
+ The third data value.
+ The fourth data value.
+ The fifth data value.
+
+
+
+ Attribute used to decorate a test method with arbitrary name/value pairs ("traits").
+
+
+
+
+ Creates a new instance of the class.
+
+ The trait name
+ The trait value
+
+
+
diff --git a/Tests/bin/Debug/xunit.execution.desktop.xml b/Tests/bin/Debug/xunit.execution.desktop.xml
new file mode 100644
index 0000000..3d0ebb8
--- /dev/null
+++ b/Tests/bin/Debug/xunit.execution.desktop.xml
@@ -0,0 +1,4163 @@
+
+
+
+ xunit.execution.desktop
+
+
+
+
+ Rethrows an exception object without losing the existing stack trace information
+
+ The exception to re-throw.
+
+ For more information on this technique, see
+ http://www.dotnetjunkies.com/WebLog/chris.taylor/archive/2004/03/03/8353.aspx.
+ The remote_stack_trace string is here to support Mono.
+
+
+
+
+ Unwraps an exception to remove any wrappers, like .
+
+ The exception to unwrap.
+ The unwrapped exception.
+
+
+
+ Utility classes for dealing with Exception objects.
+
+
+
+
+ Combines multiple levels of messages into a single message.
+
+ The failure information from which to get the messages.
+ The combined string.
+
+
+
+ Combines multiple levels of stack traces into a single stack trace.
+
+ The failure information from which to get the stack traces.
+ The combined string.
+
+
+
+ Unwraps exceptions and their inner exceptions.
+
+ The exception to be converted.
+ The failure information.
+
+
+
+ An implementation of that ignores all messages.
+
+
+
+
+
+
+
+ Serializes and de-serializes objects
+
+
+
+
+ De-serializes an object.
+
+ The type of the object
+ The object's serialized value
+ The de-serialized object
+
+
+
+ Serializes an object.
+
+ The value to serialize
+ The serialized value
+
+
+ Gets whether the specified is serializable with .
+ The object to test for serializability.
+ true if the object can be serialized; otherwise, false.
+
+
+
+ Converts an assembly qualified type name into a object.
+
+ The assembly qualified type name.
+ The instance of the , if available; null, otherwise.
+
+
+
+ Converts an assembly name + type name into a object.
+
+ The assembly name.
+ The type name.
+ The instance of the , if available; null, otherwise.
+
+
+
+ Gets an assembly qualified type name for serialization, with special dispensation for types which
+ originate in the execution assembly.
+
+
+
+
+ Retrieves a substring from the string, with whitespace trimmed on both ends.
+
+ The string.
+ The starting index.
+ The length.
+
+ A substring starting no earlier than startIndex and ending no later
+ than startIndex + length.
+
+
+
+
+ Default implementation of .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ An implementation of that provides several Visit methods that
+ can provide access to specific message types without the burden of casting.
+
+
+
+
+ Dispatches the message to the given callback, if it's of the correct type.
+
+ The message type
+ The message
+ The callback
+ The result of the callback, if called; true, otherwise
+
+
+
+ Dispatches the message to the given callback, if it's of the correct type.
+ The callback is provided with both the message and this instance of the visitor.
+
+ The message type
+ The message
+ The callback
+ The result of the callback, if called; true, otherwise
+
+
+
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue discovering/executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue discovering tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue discovering tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ Called when an instance of is sent to the message sink.
+
+ The message.
+ Return true to continue executing tests; false otherwise.
+
+
+
+ An implementation of that provides several Visit methods that
+ can provide access to specific message types without the burden of casting. It also records
+ when it sees a completion message, and sets the event appropriately.
+
+ The type of the completion message.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ This event is triggered when the completion message has been seen.
+
+
+
+
+
+
+
+
+
+
+ Formats arguments for display in theories.
+
+
+
+
+ Format the value for presentation.
+
+ The value to be formatted.
+ The formatted value.
+
+
+
+ Default implementation of used by the xUnit.net equality assertions.
+
+ The type that is being compared.
+
+
+
+ Initializes a new instance of the class.
+
+ Set to true to skip type equality checks.
+ The inner comparer to be used when the compared objects are enumerable.
+
+
+
+
+
+
+
+
+
+ A class that wraps to create .
+
+ The type that is being compared.
+
+
+
+ Initializes a new instance of the class.
+
+ The comparer that is being adapted.
+
+
+
+
+
+
+
+
+
+ Base class for all long-lived objects that may cross over an AppDomain.
+
+
+
+
+ Creates a new instance of the type.
+
+
+
+
+
+
+
+ Disconnects all remote objects.
+
+
+
+
+ This implementation of allows the developer to track the count
+ of outstanding "async void" operations, and wait for them all to complete.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The existing synchronization context (may be null).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns a task which is signaled when all outstanding operations are complete.
+
+
+
+
+ Default implementation of . Orders tests in
+ an unpredictable but stable order, so that repeated test runs of the
+ identical test assembly run tests in the same order.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Message sink to report diagnostic messages to
+
+
+
+
+
+
+ Default implementation of . Orders tests in
+ an unpredictable and unstable order, so that repeated test runs of the
+ identical test assembly run test collections in a random order.
+
+
+
+
+
+
+
+ Tracks disposable objects, and disposes them in the reverse order they were added to
+ the tracker.
+
+
+
+
+ Add an object to be disposed.
+
+ The object to be disposed.
+
+
+
+
+
+
+ Represents a caching factory for the types used for extensibility throughout the system.
+
+
+
+
+ Disposes the instances that are contained in the cache.
+
+
+
+
+ Gets an instance of the given type, casting it to , using the provided
+ constructor arguments. There is a single instance of a given type that is cached and reused,
+ so classes retrieved from this factory must be stateless and thread-safe.
+
+ The interface type.
+ The message sink used to send diagnostic messages
+ The implementation type.
+ The constructor arguments. Since diagnostic message sinks are optional,
+ the code first looks for a type that takes the given arguments plus the message sink, and only
+ falls back to the message sink-less constructor if none was found.
+ The instance of the type.
+
+
+
+ Gets a data discoverer.
+
+ The message sink used to send diagnostic messages
+ The discoverer type
+
+
+
+ Gets a data discoverer, as specified in a reflected .
+
+ The message sink used to send diagnostic messages
+ The data discoverer attribute
+ The data discoverer, if the type is loadable; null, otherwise.
+
+
+
+ Gets a test case orderer.
+
+ The message sink used to send diagnostic messages
+ The test case orderer type
+
+
+
+ Gets a test case orderer, as specified in a reflected .
+
+ The message sink used to send diagnostic messages
+ The test case orderer attribute.
+ The test case orderer, if the type is loadable; null, otherwise.
+
+
+
+ Gets a test collection orderer.
+
+ The message sink used to send diagnostic messages
+ The test collection orderer type
+
+
+
+ Gets a test collection orderer, as specified in a reflected .
+
+ The message sink used to send diagnostic messages
+ The test collection orderer attribute.
+ The test collection orderer, if the type is loadable; null, otherwise.
+
+
+
+ Gets a test framework discoverer.
+
+ The message sink used to send diagnostic messages
+ The test framework type discoverer type
+
+
+
+ Gets a test framework discoverer, as specified in a reflected .
+
+ The message sink used to send diagnostic messages
+ The test framework discoverer attribute
+
+
+
+ Gets a trait discoverer.
+
+ The message sink used to send diagnostic messages
+ The trait discoverer type
+
+
+
+ Gets a trait discoverer, as specified in a reflected .
+
+ The message sink used to send diagnostic messages
+ The trait discoverer attribute.
+ The trait discoverer, if the type is loadable; null, otherwise.
+
+
+
+ Gets an xUnit.net v2 test discoverer.
+
+ The message sink used to send diagnostic messages
+ The test case discoverer type
+
+
+
+ Gets an xUnit.net v2 test collection factory.
+
+ The message sink used to send diagnostic messages
+ The test collection factory type
+ The test assembly under test
+
+
+
+ Gets an xUnit.net v2 test collection factory, as specified in a reflected .
+
+ The message sink used to send diagnostic messages
+ The collection behavior attribute.
+ The test assembly.
+ The collection factory.
+
+
+
+ Implementation of that creates a single
+ default test collection for the assembly, and places any tests classes without
+ the into it.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The assembly.
+ The message sink used to send diagnostic messages
+
+
+
+
+
+
+
+
+
+ Implementation of which creates a new test
+ collection for each test class that isn't decorated with .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The assembly info.
+ The message sink used to send diagnostic messages
+
+
+
+
+
+
+
+
+
+ A simple implementation of that can be used to report an error
+ rather than running a test.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message sink used to send diagnostic messages
+ Default method display to use (when not customized).
+ The test method.
+ The error message to report for the test.
+
+
+
+ Gets the error message that will be display when the test is run.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Measures and aggregates execution time of one or more actions.
+
+
+
+
+ Returns the total time aggregated across all the actions.
+
+
+
+
+ Executes an action and aggregates its run time into the total.
+
+ The action to measure.
+
+
+
+ Executes an asynchronous action and aggregates its run time into the total.
+
+ The action to measure.
+
+
+
+ Aggregates a time span into the total time.
+
+ The time to add.
+
+
+
+ Implementation of that supports finding test cases
+ on methods decorated with .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message sink used to send diagnostic messages
+
+
+
+ Creates a single for the given test method.
+
+ The discovery options to be used.
+ The test method.
+ The attribute that decorates the test method.
+
+
+
+
+ Discover test cases from a test method. By default, inspects the test method's argument list
+ to ensure it's empty, and if not, returns a single ;
+ otherwise, it returns the result of calling .
+
+ The discovery options to be used.
+ The test method the test cases belong to.
+ The fact attribute attached to the test method.
+ Returns zero or more test cases represented by the test method.
+
+
+
+ An implementation of to support .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The test case that the lambda represents.
+ The message bus to report run status to.
+ The exception aggregator used to run code and collect exceptions.
+ The task cancellation token source, used to cancel the test run.
+
+
+
+
+
+
+ A base class that provides default behavior when running tests in an assembly. It groups the tests
+ by test collection, and then runs the individual test collections.
+
+ The type of the test case used by the test framework. Must
+ derive from .
+
+
+
+ Initializes a new instance of the class.
+
+ The assembly that contains the tests to be run.
+ The test cases to be run.
+ The message sink to report diagnostic messages to.
+ The message sink to report run status to.
+ The user's requested execution options.
+
+
+
+ Gets or sets the exception aggregator used to run code and collect exceptions.
+
+
+
+
+ Gets or sets the user's requested execution options.
+
+
+
+
+ Gets or sets the message sink to report diagnostic messages to.
+
+
+
+
+ Gets or sets the message sink to report run status to.
+
+
+
+
+ Gets or sets the assembly that contains the tests to be run.
+
+
+
+
+ Gets or sets the test case orderer that will be used to decide how to order the tests.
+
+
+
+
+ Gets or sets the test collection orderer that will be used to decide how to order the test collections.
+
+
+
+
+ Gets or sets the test cases to be run.
+
+
+
+
+
+
+
+ Override this to provide the display name for the test framework (f.e., "xUnit.net 2.0").
+ This value is placed into .
+
+
+
+
+ Override this to provide the environment information (f.e., "32-bit .NET 4.0"). This value is
+ placed into .
+
+
+
+
+ This method is called just after is sent, but before any test collections are run.
+ This method should NEVER throw; any exceptions should be placed into the .
+
+
+
+
+ This method is called just before is sent.
+ This method should NEVER throw; any exceptions should be placed into the .
+
+
+
+
+ Creates the message bus to be used for test execution. By default, it inspects
+ the options for the
+ flag, and if present, creates a message bus that ensures all messages are delivered
+ on the same thread.
+
+ The message bus.
+
+
+
+ Orders the test collections using the .
+
+ Test collections (and the associated test cases) in run order
+
+
+
+ Runs the tests in the test assembly.
+
+ Returns summary information about the tests that were run.
+
+
+
+ Runs the list of test collections. By default, groups the tests by collection and runs them synchronously.
+
+ The message bus to report run status to.
+ The task cancellation token source, used to cancel the test run.
+ Returns summary information about the tests that were run.
+
+
+
+ Override this method to run the tests in an individual test collection.
+
+ The message bus to report run status to.
+ The test collection that is being run.
+ The test cases to be run.
+ The task cancellation token source, used to cancel the test run.
+ Returns summary information about the tests that were run.
+
+
+
+ A base class that provides default behavior when running test cases.
+
+ The type of the test case used by the test framework. Must
+ derive from .
+
+
+
+ Initializes a new instance of the class.
+
+ The test case to be run.
+ The message bus to report run status to.
+ The exception aggregator used to run code and collect exceptions.
+ The task cancellation token source, used to cancel the test run.
+
+
+
+ Gets or sets the exception aggregator used to run code and collect exceptions.
+
+
+
+
+ Gets or sets the task cancellation token source, used to cancel the test run.
+
+
+
+
+ Gets or sets the message bus to report run status to.
+
+
+
+
+ Gets or sets the test case to be run.
+
+
+
+
+ This method is called just after is sent, but before any test collections are run.
+ This method should NEVER throw; any exceptions should be placed into the .
+
+
+
+
+ This method is called just before is sent.
+ This method should NEVER throw; any exceptions should be placed into the .
+
+
+
+
+ Runs the tests in the test case.
+
+ Returns summary information about the tests that were run.
+
+
+
+ Override this method to run the tests in an individual test method.
+
+ Returns summary information about the tests that were run.
+
+
+
+ A base class that provides default behavior when running tests in a test class. It groups the tests
+ by test method, and then runs the individual test methods.
+
+ The type of the test case used by the test framework. Must
+ derive from .
+
+
+
+ Initializes a new instance of the class.
+
+ The test class to be run.
+ The test class that contains the tests to be run.
+ The test cases to be run.
+ The message sink used to send diagnostic messages
+ The message bus to report run status to.
+ The test case orderer that will be used to decide how to order the test.
+ The exception aggregator used to run code and collect exceptions.
+ The task cancellation token source, used to cancel the test run.
+
+
+
+ Gets or sets the exception aggregator used to run code and collect exceptions.
+
+
+
+
+ Gets or sets the task cancellation token source, used to cancel the test run.
+
+
+
+
+ Gets or sets the CLR class that contains the tests to be run.
+
+
+
+
+ Gets the message sink used to send diagnostic messages.
+
+
+
+
+ Gets or sets the message bus to report run status to.
+
+
+
+
+ Gets or sets the test case orderer that will be used to decide how to order the test.
+
+
+
+
+ Gets or sets the test cases to be run.
+
+
+
+
+ Gets or sets the test class to be run.
+
+
+
+
+ Creates the arguments for the test class constructor. Attempts to resolve each parameter
+ individually, and adds an error when the constructor arguments cannot all be provided.
+ If the class is static, does not look for constructor, since one will not be needed.
+
+ The test class constructor arguments.
+
+
+
+ Gets the message to be used when the constructor is missing arguments.
+
+
+
+
+ This method is called just after is sent, but before any test methods are run.
+ This method should NEVER throw; any exceptions should be placed into the .
+
+
+
+
+ This method is called just before is sent.
+ This method should NEVER throw; any exceptions should be placed into the .
+
+
+
+
+ Runs the tests in the test class.
+
+ Returns summary information about the tests that were run.
+
+
+
+ Runs the list of test methods. By default, orders the tests, groups them by method and runs them synchronously.
+
+ Returns summary information about the tests that were run.
+
+
+
+ Override this method to run the tests in an individual test method.
+
+ The test method that contains the test cases.
+ The CLR method that contains the tests to be run.
+ The test cases to be run.
+ The constructor arguments that will be used to create the test class.
+ Returns summary information about the tests that were run.
+
+
+
+ Selects the constructor to be used for the test class. By default, chooses the parameterless
+ constructor. Override to change the constructor selection logic.
+
+ The constructor to be used for creating the test class.
+
+
+
+ Tries to supply a test class constructor argument. By default, always fails. Override to
+ change the argument lookup logic.
+
+ The constructor that will be used to create the test class.
+ The parameter index.
+ The parameter information.
+ The argument value that should be used for the parameter.
+ Returns true if the argument was supplied; false, otherwise.
+
+
+
+ A base class that provides default behavior when running tests in a test collection. It groups the tests
+ by test class, and then runs the individual test classes.
+
+ The type of the test case used by the test framework. Must
+ derive from .
+
+
+
+ Initializes a new instance of the class.
+
+ The test collection that contains the tests to be run.
+ The test cases to be run.
+ The message bus to report run status to.
+ The test case orderer that will be used to decide how to order the test.
+ The exception aggregator used to run code and collect exceptions.
+ The task cancellation token source, used to cancel the test run.
+
+
+
+ Gets or sets the exception aggregator used to run code and collect exceptions.
+
+
+
+
+ Gets or sets the task cancellation token source, used to cancel the test run.
+
+
+
+
+ Gets or sets the message bus to report run status to.
+
+
+
+
+ Gets or sets the test case orderer that will be used to decide how to order the test.
+
+
+
+
+ Gets or sets the test cases to be run.
+
+
+
+
+ Gets or sets the test collection that contains the tests to be run.
+
+
+
+
+ This method is called just after is sent, but before any test classes are run.
+ This method should NEVER throw; any exceptions should be placed into the .
+
+
+
+
+ This method is called just before is sent.
+ This method should NEVER throw; any exceptions should be placed into the .
+
+
+
+
+ Runs the tests in the test collection.
+
+ Returns summary information about the tests that were run.
+
+
+
+ Runs the list of test classes. By default, groups the tests by class and runs them synchronously.
+
+ Returns summary information about the tests that were run.
+
+
+
+ Override this method to run the tests in an individual test class.
+
+ The test class to be run.
+ The CLR class that contains the tests to be run.
+ The test cases to be run.
+ Returns summary information about the tests that were run.
+
+
+
+ A base class that provides default behavior to invoke a test method. This includes
+ support for async test methods (both "async Task" and "async void") as well as
+ creation and disposal of the test class.
+
+ The type of the test case used by the test framework. Must
+ derive from .
+
+
+
+ Initializes a new instance of the class.
+
+ The test that this invocation belongs to.
+ The message bus to report run status to.
+ The test class that the test method belongs to.
+ The arguments to be passed to the test class constructor.
+ The test method that will be invoked.
+ The arguments to be passed to the test method.
+ The exception aggregator used to run code and collect exceptions.
+ The task cancellation token source, used to cancel the test run.
+
+
+
+ Gets or sets the exception aggregator used to run code and collect exceptions.
+
+
+
+
+ Gets or sets the task cancellation token source, used to cancel the test run.
+
+
+
+
+ Gets or sets the constructor arguments used to construct the test class.
+
+
+
+
+ Gets the display name of the invoked test.
+
+
+
+
+ Gets or sets the message bus to report run status to.
+
+
+
+
+ Gets or sets the test to be run.
+
+
+
+
+ Gets the test case to be run.
+
+
+
+
+ Gets or sets the runtime type of the class that contains the test method.
+
+
+
+
+ Gets or sets the runtime method of the method that contains the test.
+
+
+
+
+ Gets or sets the arguments to pass to the test method when it's being invoked.
+
+
+
+
+ Gets or sets the object which measures execution time.
+
+
+
+
+ Creates the test class, unless the test method is static or there have already been errors. Note that
+ this method times the creation of the test class (using ). It is also responsible for
+ sending the and
+ messages, so if you override this method without calling the base, you are responsible for all of this behavior.
+ This method should NEVER throw; any exceptions should be placed into the .
+
+ The class instance, if appropriate; null, otherwise
+
+
+
+ This method is called just after the test method has finished executing.
+ This method should NEVER throw; any exceptions should be placed into the .
+
+
+
+
+ This method is called just before the test method is invoked.
+ This method should NEVER throw; any exceptions should be placed into the .
+
+
+
+
+ This method calls the test method via reflection. This is an available override point
+ if you need to do some other form of invocation of the actual test method.
+
+ The instance of the test class
+ The return value from the test method invocation
+
+
+
+ Creates the test class (if necessary), and invokes the test method.
+
+ Returns the time (in seconds) spent creating the test class, running
+ the test, and disposing of the test class.
+
+
+
+ Invokes the test method on the given test class instance. This method sets up support for "async void"
+ test methods, ensures that the test method has the correct number of arguments, then calls
+ to do the actual method invocation. It ensure that any async test method is fully completed before returning, and
+ returns the measured clock time that the invocation took.
+
+ The test class instance
+ Returns the time taken to invoke the test method
+
+
+
+ A base class that provides default behavior when running tests in a test method.
+
+ The type of the test case used by the test framework. Must
+ derive from .
+
+
+
+ Initializes a new instance of the class.
+
+ The test method under test.
+ The CLR class that contains the test method.
+ The CLR method that contains the tests to be run.
+ The test cases to be run.
+ The message bus to report run status to.
+ The exception aggregator used to run code and collect exceptions.
+ The task cancellation token source, used to cancel the test run.
+
+
+
+ Gets or sets the exception aggregator used to run code and collect exceptions.
+
+
+
+
+ Gets or sets the task cancellation token source, used to cancel the test run.
+
+
+
+
+ Gets or sets the CLR class that contains the test method.
+
+
+
+
+ Gets or sets the message bus to report run status to.
+
+
+
+
+ Gets or sets the CLR method that contains the tests to be run.
+
+
+
+
+ Gets or sets the test cases to be run.
+
+
+
+
+ Gets or sets the test method that contains the test cases.
+
+
+
+
+ This method is called just after is sent, but before any test cases are run.
+ This method should NEVER throw; any exceptions should be placed into the .
+
+
+
+
+ This method is called just before is sent.
+ This method should NEVER throw; any exceptions should be placed into the .
+
+
+
+
+ Runs the tests in the test method.
+
+ Returns summary information about the tests that were run.
+
+
+
+ Runs the list of test cases. By default, it runs the cases in order, synchronously.
+
+ Returns summary information about the tests that were run.
+
+
+
+ Override this method to run an individual test case.
+
+ The test case to be run.
+ Returns summary information about the test case run.
+
+
+
+ A base class that provides default behavior when running a test. This includes support
+ for skipping tests.
+
+ The type of the test case used by the test framework. Must
+ derive from .
+
+
+
+ Initializes a new instance of the class.
+
+ The test that this invocation belongs to.
+ The message bus to report run status to.
+ The test class that the test method belongs to.
+ The arguments to be passed to the test class constructor.
+ The test method that will be invoked.
+ The arguments to be passed to the test method.
+ The skip reason, if the test is to be skipped.
+ The exception aggregator used to run code and collect exceptions.
+ The task cancellation token source, used to cancel the test run.
+
+
+
+ Gets or sets the exception aggregator used to run code and collect exceptions.
+
+
+
+
+ Gets or sets the task cancellation token source, used to cancel the test run.
+
+
+
+
+ Gets or sets the constructor arguments used to construct the test class.
+
+
+
+
+ Gets or sets the display name of the invoked test.
+
+
+
+
+ Gets or sets the message bus to report run status to.
+
+
+
+
+ Gets or sets the skip reason for the test, if set.
+
+
+
+
+ Gets or sets the test to be run.
+
+
+
+
+ Gets the test case to be run.
+
+
+
+
+ Gets or sets the runtime type of the class that contains the test method.
+
+
+
+
+ Gets or sets the runtime method of the method that contains the test.
+
+
+
+
+ Gets or sets the arguments to pass to the test method when it's being invoked.
+
+
+
+
+ This method is called just after is sent, but before the test class is created.
+ This method should NEVER throw; any exceptions should be placed into the .
+
+
+
+
+ This method is called just before is sent.
+ This method should NEVER throw; any exceptions should be placed into the .
+
+
+
+
+ Runs the test.
+
+ Returns summary information about the test that was run.
+
+
+
+ Override this method to invoke the test.
+
+ The exception aggregator used to run code and collect exceptions.
+ Returns a tuple which includes the execution time (in seconds) spent running the
+ test method, and any output that was returned by the test.
+
+
+
+ The test assembly runner for xUnit.net v2 tests.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The assembly that contains the tests to be run.
+ The test cases to be run.
+ The message sink to report diagnostic messages to.
+ The message sink to report run status to.
+ The user's requested execution options.
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets the synchronization context used when potentially running tests in parallel.
+ If is greater than 0, it creates
+ and uses an instance of .
+
+ The maximum number of parallel threads.
+
+
+
+ Ensures the assembly runner is initialized (sets up the collection behavior,
+ parallelization options, and test orderers from their assembly attributes).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The test case runner for xUnit.net v2 tests.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The test case to be run.
+ The display name of the test case.
+ The skip reason, if the test is to be skipped.
+ The arguments to be passed to the test class constructor.
+ The arguments to be passed to the test method.
+ The message bus to report run status to.
+ The exception aggregator used to run code and collect exceptions.
+ The task cancellation token source, used to cancel the test run.
+
+
+
+ Gets the list of s that will be used for this test case.
+
+
+
+
+ Gets or sets the arguments passed to the test class constructor
+
+
+
+
+ Gets or sets the display name of the test case
+
+
+
+
+ Gets or sets the skip reason for the test, if set.
+
+
+
+
+ Gets or sets the runtime type for the test class that the test method belongs to.
+
+
+
+
+ Gets of sets the runtime method for the test method that the test case belongs to.
+
+
+
+
+ Gets or sets the arguments to pass to the test method when it's being invoked.
+
+
+
+
+
+
+
+ The test class runner for xUnit.net v2 tests.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The test class to be run.
+ The test class that contains the tests to be run.
+ The test cases to be run.
+ The message sink used to send diagnostic messages
+ The message bus to report run status to.
+ The test case orderer that will be used to decide how to order the test.
+ The exception aggregator used to run code and collect exceptions.
+ The task cancellation token source, used to cancel the test run.
+ The mapping of collection fixture types to fixtures.
+
+
+
+ Gets the fixture mappings that were created during .
+
+
+
+
+ Creates the instance of a class fixture type to be used by the test class. If the fixture can be created,
+ it should be placed into the dictionary; if it cannot, then the method
+ should record the error by calling Aggregator.Add
.
+
+ The type of the fixture to be created
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The test collection runner for xUnit.net v2 tests.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The test collection that contains the tests to be run.
+ The test cases to be run.
+ The message sink used to send diagnostic messages
+ The message bus to report run status to.
+ The test case orderer that will be used to decide how to order the test.
+ The exception aggregator used to run code and collect exceptions.
+ The task cancellation token source, used to cancel the test run.
+
+
+
+ Gets the fixture mappings that were created during .
+
+
+
+
+
+
+
+
+
+
+ Creates the instance of a collection fixture type to be used by the test collection. If the fixture can be created,
+ it should be placed into the dictionary; if it cannot, then the method
+ should record the error by calling Aggregator.Add
.
+
+ The type of the fixture to be created
+
+
+
+ Gives an opportunity to override test case orderer. By default, this method gets the
+ orderer from the collection definition. If this function returns null, the
+ test case orderer passed into the constructor will be used.
+
+
+
+
+
+
+
+ The test invoker for xUnit.net v2 tests.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The test that this invocation belongs to.
+ The message bus to report run status to.
+ The test class that the test method belongs to.
+ The arguments to be passed to the test class constructor.
+ The test method that will be invoked.
+ The arguments to be passed to the test method.
+ The list of s for this test invocation.
+ The exception aggregator used to run code and collect exceptions.
+ The task cancellation token source, used to cancel the test run.
+
+
+
+ Gets the list of s for this test invocation.
+
+
+
+
+
+
+
+
+
+
+ The test method runner for xUnit.net v2 tests.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The test method to be run.
+ The test class that contains the test method.
+ The test method that contains the tests to be run.
+ The test cases to be run.
+ The message sink used to send diagnostic messages to.
+ The message bus to report run status to.
+ The exception aggregator used to run code and collect exceptions.
+ The task cancellation token source, used to cancel the test run.
+ The constructor arguments for the test class.
+
+
+
+
+
+
+ The test runner for xUnit.net v2 tests.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The test that this invocation belongs to.
+ The message bus to report run status to.
+ The test class that the test method belongs to.
+ The arguments to be passed to the test class constructor.
+ The test method that will be invoked.
+ The arguments to be passed to the test method.
+ The skip reason, if the test is to be skipped.
+ The list of s for this test.
+ The exception aggregator used to run code and collect exceptions.
+ The task cancellation token source, used to cancel the test run.
+
+
+
+ Gets the list of s for this test.
+
+
+
+
+
+
+
+ Override this method to invoke the test method.
+
+ The exception aggregator used to run code and collect exceptions.
+ Returns the execution time (in seconds) spent running the test method.
+
+
+
+ The test case runner for xUnit.net v2 theories (which could not be pre-enumerated;
+ pre-enumerated test cases use ).
+
+
+
+
+ Initializes a new instance of the class.
+
+ The test case to be run.
+ The display name of the test case.
+ The skip reason, if the test is to be skipped.
+ The arguments to be passed to the test class constructor.
+ The message sink used to send diagnostic messages
+ The message bus to report run status to.
+ The exception aggregator used to run code and collect exceptions.
+ The task cancellation token source, used to cancel the test run.
+
+
+
+
+
+
+
+
+
+
+
+
+ The default implementation of .
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The test assembly.
+ The optional configuration filename (defaults to the
+ configuration file of the current app domain if not provided)
+ The version number of the assembly (defaults to "0.0.0.0")
+
+
+
+
+
+
+
+
+
+ Gets or sets the assembly version.
+
+
+
+
+
+
+
+
+
+
+ The default implementation of .
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The test collection the class belongs to
+ The test class
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ An implementation of for .
+ Compares the fully qualified names of the types.
+
+
+
+
+ The singleton instance of the comparer.
+
+
+
+
+
+
+
+
+
+
+ The default implementation of .
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The test assembly the collection belongs to
+ The optional type which contains the collection definition
+ The display name for the test collection
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ An implementation of for .
+ Compares the IDs of the test collections.
+
+
+
+
+ The singleton instance of the comparer.
+
+
+
+
+
+
+
+
+
+
+ A helper class that gets the list of test collection definitions for a given assembly.
+ Reports any misconfigurations of the test assembly via the diagnostic message sink.
+
+
+
+
+ Gets the test collection definitions for the given assembly.
+
+ The assembly.
+ The message sink used to send diagnostic messages
+ A list of mappings from test collection name to test collection definitions (as
+
+
+
+ A default implementation of that tracks objects to be
+ disposed when the framework is disposed. The discoverer and executor are automatically
+ tracked for disposal, since those interfaces mandate an implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message sink used to send diagnostic messages
+
+
+
+ Gets the message sink used to send diagnostic messages.
+
+
+
+
+ Gets the disposal tracker for the test framework.
+
+
+
+
+
+
+
+
+
+
+ Override this method to provide the implementation of .
+
+ The assembly that is being discovered.
+ Returns the test framework discoverer.
+
+
+
+ Override this method to provide the implementation of .
+
+ The assembly that is being executed.
+ Returns the test framework executor.
+
+
+
+
+
+
+
+
+
+ A base implementation of that supports test filtering
+ and runs the discovery process on a thread pool thread.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The test assembly.
+ The source information provider.
+ The message sink used to send diagnostic messages
+
+
+
+ Gets the assembly that's being discovered.
+
+
+
+
+ Gets the message sink used to report diagnostic messages.
+
+
+
+
+ Gets the disposal tracker for the test framework discoverer.
+
+
+
+
+ Get the source code information provider used during discovery.
+
+
+
+
+
+
+
+
+
+
+ Implement this method to create a test class for the given CLR type.
+
+ The CLR type.
+ The test class.
+
+
+
+
+
+
+
+
+
+
+
+
+ Core implementation to discover unit tests in a given test class.
+
+ The test class.
+ Set to true to attempt to include source information.
+ The message sink to send discovery messages to.
+ The options used by the test framework during discovery.
+ Returns true if discovery should continue; false otherwise.
+
+
+
+ Determines if a type should be used for discovery. Can be used to filter out types that
+ are not desirable. The default implementation filters out abstract (non-static) classes.
+
+ The type.
+ Returns true if the type can contain tests; false, otherwise.
+
+
+
+ Reports a discovered test case to the message bus, after updating the source code information
+ (if desired).
+
+
+
+
+
+
+
+
+
+
+
+ A reusable implementation of which contains the basic behavior
+ for running tests.
+
+ The type of the test case used by the test framework. Must
+ derive from .
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the test assembly.
+ The source line number information provider.
+ The message sink to report diagnostic messages to.
+
+
+
+ Gets the assembly information of the assembly under test.
+
+
+
+
+ Gets the message sink to send diagnostic messages to.
+
+
+
+
+ Gets the disposal tracker for the test framework discoverer.
+
+
+
+
+ Gets the source information provider.
+
+
+
+
+ Override to create a test framework discoverer that can be used to discover
+ tests when the user asks to run all test.
+
+ The test framework discoverer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Override to run test cases.
+
+ The test cases to be run.
+ The message sink to report run status to.
+ The user's requested execution options.
+
+
+
+ This class proxies for the real implementation of , based on
+ whether the user has overridden the choice via . If
+ no attribute is found, defaults to .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The test assembly (expected to implement ).
+ The source information provider (expected to implement ).
+ The diagnostic message sink (expected to implement ).
+
+
+
+ Gets the test framework that's being wrapped by the proxy.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INTERNAL CLASS. DO NOT USE.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The default implementation of .
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The test class
+ The test method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ An implementation of for .
+ Compares the names of the methods.
+
+
+
+
+ The singleton instance of the comparer.
+
+
+
+
+
+
+
+
+
+
+ A base class implementation of which is based on test cases being
+ related directly to test methods.
+
+
+
+
+ Used for de-serialization.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Default method display to use (when not customized).
+ The test method this test case belongs to.
+ The arguments for the test method.
+
+
+
+ Returns the base display name for a test ("TestClassName.MethodName").
+
+
+
+
+ Returns the default method display to use (when not customized).
+
+
+
+
+
+
+
+
+
+
+ Gets the generic types that were used to close the generic test method, if
+ applicable; null, if the test method was not an open generic.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Call to ensure the object is fully initialized().
+
+
+
+
+ Gets the unique ID for the test case.
+
+
+
+ Converts an array of bytes to its hexadecimal value as a string.
+ The bytes.
+ A string containing the hexademical representation of the provided bytes.
+
+
+ Gets a hexademical digit character from the 4-bit value.
+ A value in the range [0, 15].
+ A character in the range ['0','9'] or ['a','f'].
+
+
+
+ Called when initializing the test cases, either after constructor or de-serialization.
+ Override this method to add additional initialization-time work.
+
+
+
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Gets the output provided by the test.
+
+
+
+
+ Initialize the test output helper with information about a test case.
+
+
+
+
+ Resets the test output helper to its uninitialized state.
+
+
+
+
+
+
+
+
+
+
+ Implementation of that supports finding test cases
+ on methods decorated with .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message sink used to send diagnostic messages
+
+
+
+ Creates a test case for a single row of data. By default, returns an instance of
+ with the data row inside of it.
+
+ The discovery options to be used.
+ The test method the test cases belong to.
+ The theory attribute attached to the test method.
+ The row of data for this test case.
+ The test case
+
+
+
+ Creates a test case for a skipped theory. By default, returns an instance of
+ (which inherently discovers the skip reason via the fact attribute).
+
+ The discovery options to be used.
+ The test method the test cases belong to.
+ The theory attribute attached to the test method.
+ The skip reason that decorates .
+ The test case
+
+
+
+ Creates a test case for the entire theory. This is used when one or more of the theory data items
+ are not serializable, or if the user has requested to skip theory pre-enumeration. By default,
+ returns an instance of , which performs the data discovery at runtime.
+
+ The discovery options to be used.
+ The test method the test cases belong to.
+ The theory attribute attached to the test method.
+ The test case
+
+
+
+ Discover test cases from a test method.
+
+
+ This method performs the following steps:
+ - If the theory attribute is marked with Skip, returns the single test case from ;
+ - If pre-enumeration is off, or any of the test data is non serializable, returns the single test case from ;
+ - If there is no theory data, returns a single test case of with the error in it;
+ - Otherwise, it returns one test case per data row, created by calling .
+
+ The discovery options to be used.
+ The test method the test cases belong to.
+ The theory attribute attached to the test method.
+ Returns zero or more test cases represented by the test method.
+
+
+
+ An implementation of for xUnit v2.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The test case this test belongs to.
+ The display name for this test.
+
+
+
+
+
+
+ Gets the xUnit v2 test case.
+
+
+
+
+
+
+
+ Default implementation of for xUnit v2 that supports tests decorated with
+ both and .
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message sink used to send diagnostic messages
+ Default method display to use (when not customized).
+ The test method this test case belongs to.
+ The arguments for the test method.
+
+
+
+ Gets the display name for the test case. Calls
+ with the given base display name (which is itself either derived from ,
+ falling back to .
+
+ The fact attribute the decorated the test case.
+ The base display name from .
+ The display name for the test case.
+
+
+
+ Gets the skip reason for the test case. By default, pulls the skip reason from the
+ property.
+
+ The fact attribute the decorated the test case.
+ The skip reason, if skipped; null, otherwise.
+
+
+
+
+
+
+
+
+
+ The implementation of that supports discovery and
+ execution of unit tests linked against xunit.core.dll, using xunit.execution.dll.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message sink used to send diagnostic messages
+
+
+
+
+
+
+
+
+
+ The implementation of that supports discovery
+ of unit tests linked against xunit.core.dll, using xunit.execution.dll.
+
+
+
+
+ Gets the display name of the xUnit.net v2 test framework.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The test assembly.
+ The source information provider.
+ The message sink used to send diagnostic messages
+ The test collection factory used to look up test collections.
+
+
+
+ Gets the test collection factory that makes test collections.
+
+
+
+
+
+
+
+ Finds the tests on a test method.
+
+ The test method.
+ Set to true to indicate that source information should be included.
+ The message bus to report discovery messages to.
+ The options used by the test framework during discovery.
+ Return true to continue test discovery, false, otherwise.
+
+
+
+
+
+
+ Gets the test case discover instance for the given discoverer type. The instances are cached
+ and reused, since they should not be stateful.
+
+ The discoverer type.
+ Returns the test case discoverer instance.
+
+
+
+ The implementation of that supports execution
+ of unit tests linked against xunit.core.dll, using xunit.execution.dll.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the test assembly.
+ The source line number information provider.
+ The message sink to report diagnostic messages to.
+
+
+
+ Gets the test assembly that contains the test.
+
+
+
+
+
+
+
+
+
+
+ Represents a test case which runs multiple tests for theory data, either because the
+ data was not enumerable or because the data was not serializable.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message sink used to send diagnostic messages
+ Default method display to use (when not customized).
+ The method under test.
+
+
+
+
+
+
+ An implementation of which runs work on custom threads
+ rather than in the thread pool, and limits the number of in-flight actions.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The maximum number of tasks to run at any one time.
+
+
+
+ Gets a flag indicating whether maximum concurrency is supported.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This is an internal class, and is not intended to be called from end-user code.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Implementation of that delegates to another implementation of
+ while calling into a callback for each message.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message bus to delegate to.
+ The callback to send messages to.
+
+
+
+
+
+
+
+
+
+ Implementation of that delegates to another implementation of
+ while calling into a callback for each message. In addition,
+ it issues a event when a message of the type
+ is seen.
+
+ The type of the T final message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message bus to delegate to.
+ The callback to send messages to.
+
+
+
+ The final message that was seen that caused to be triggered.
+
+
+
+
+ An event that is triggered when a message of type is seen.
+
+
+
+
+
+
+
+ Implementation of that delegates to another implementation of
+ while calling into a callback for each message.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The inner message sink.
+ The callback.
+
+
+
+
+
+
+
+
+
+ Implementation of that delegates to another implementation of
+ while calling into a callback for each message. In addition,
+ it issues a event when a message of the type
+ is seen.
+
+ The type of the T final message.
+
+
+
+ Initializes a new instance of the class.
+
+ The inner message sink.
+ The callback.
+
+
+
+ The final message that was seen that caused to be triggered.
+
+
+
+
+ An event that is triggered when a message of type is seen.
+
+
+
+
+
+
+
+ Reflection-based implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The assembly to be wrapped.
+
+
+
+ Initializes a new instance of the class.
+
+ The assembly to be wrapped.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reflection-based implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The attribute to be wrapped.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reflection-based implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The method to be wrapped.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reflection-based implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The parameter to be wrapped.
+
+
+
+
+
+
+
+
+
+
+
+
+ Reflection-based implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The type to wrap.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wrapper to implement types from xunit.abstractions.dll using reflection.
+
+
+
+
+ Converts arguments into their target types. Can be particularly useful when pulling attribute
+ constructor arguments, whose types may not strictly match the parameter types.
+
+ The arguments to be converted.
+ The target types for the conversion.
+ The converted arguments.
+
+
+
+ Converts an into an .
+
+ The assembly to wrap.
+ The wrapper
+
+
+
+ Converts an into an using reflection.
+
+ The attribute to wrap.
+ The wrapper
+
+
+
+ Converts a into an using reflection.
+
+ The method to wrap
+ The wrapper
+
+
+
+ Converts a into an using reflection.
+
+ THe parameter to wrap
+ The wrapper
+
+
+
+ Converts a into an using reflection.
+
+ The type to wrap
+ The wrapper
+
+
+
+ This is an internal class, and is not intended to be called from end-user code.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents an exception that happened during the process of a test class. This typically
+ means there were problems identifying the correct test class constructor, or problems
+ creating the fixture data for the test class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message.
+
+
+
+
+
+
+ The implementation of that supports attributes
+ of type .
+
+
+
+
+
+
+
+ A helper class to retrieve the traits from a method.
+
+
+
+
+ Get the traits from a method.
+
+ The method to get the traits for.
+ A list of traits that are defined on the method.
+
+
+
+ Extension methods for .
+
+
+
+
+ Formulates the extended portion of the display name for a test method. For tests with no arguments, this will
+ return just the base name; for tests with arguments, attempts to format the arguments and appends the argument
+ list to the test name.
+
+ The test method
+ The base part of the display name
+ The test method arguments
+ The test method's generic types
+ The full display name for the test method
+
+
+
+ Resolves a generic type for a test method. The test parameters (and associated parameter infos) are
+ used to determine the best matching generic type for the test method that can be satisfied by all
+ the generic parameters and their values.
+
+ The generic type to be resolved
+ The parameter values being passed to the test method
+ The parameter infos for the test method
+ The best matching generic type
+
+
+
+ Resolves all the generic types for a test method. The test parameters are used to determine
+ the best matching generic types for the test method that can be satisfied by all
+ the generic parameters and their values.
+
+ The test method
+ The parameter values being passed to the test method
+ The best matching generic types
+
+
+ base implementation of MD4 family style digest as outlined in
+ "Handbook of Applied Cryptography", pages 344 - 347.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ implementation of SHA-1 as outlined in "Handbook of Applied Cryptography", pages 346 - 349.
+
+ It is interesting to ponder why the, apart from the extra IV, the other difference here from MD5
+ is the "endianness" of the word processing!
+
+
+
+
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+
+
+
+
+
+
+
+
+
+ reset the chaining variables
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+ Default implementation of and .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message to send
+
+
+
+ Initializes a new instance of the class.
+
+ The format of the message to send
+ The arguments used to format the message
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+ Default implementation of .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the substitution token used as assembly name suffix to indicate that the assembly is
+ a generalized reference to the platform-specific assembly.
+
+
+
+
+ A mirror class of the CLR's class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The data to copy into the serialization info
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns BASE64 encoded string that represents the entirety of the data.
+
+
+
+
+ Returns a triple for a key/value pair of data in a complex object
+
+ The triple to be serialized
+ The serialized version of the triple
+
+
+
+ Returns the triple values out of a serialized triple.
+
+ The serialized triple
+ The de-serialized triple
+
+
+
+ De-serializes a value that was serialized with .
+
+ The type of the object to de-serialize into
+ The serialized value
+ The de-serialized object
+
+
+
+ Serializes an object.
+
+ The value to be serialized
+ The serialized object
+
+
+
+ Represents a triple of information used when serializing complex types: the property name,
+ the value to be serialized, and the value's type.
+
+
+
+
+ Gets the triple's key
+
+
+
+
+ Gets the triple's value
+
+
+
+
+ Gets the triple's value type
+
+
+
+
+ Initializes a new instance of the class.
+
+ The triple's key
+ The triple's value
+ The triple's value type
+
+
+
+ Guard class, used for guard clauses and argument validation
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods which help bridge and contain the differences between Type and TypeInfo.
+
+
+
+
+ This class represents utility methods needed to supplement the
+ reflection capabilities provided by the CLR
+
+
+
+
+ Creates an instance of the test class for the given test case. Sends the
+ and messages as appropriate.
+
+ The test
+ The type of the test class
+ The constructor arguments for the test class
+ The message bus used to send the test messages
+ The timer used to measure the time taken for construction
+ The cancellation token source
+
+
+
+
+ Disposes the test class instance. Sends the and
+ messages as appropriate.
+
+ The test
+ The test class instance to be disposed
+ The message bus used to send the test messages
+ The timer used to measure the time taken for construction
+ The cancellation token source
+
+
+
+ Gets methods in the target type that match the protection level of the supplied method
+
+ The type
+ The method
+ The reflection method informations that match
+
+
+
+ Gets all the custom attributes for the given assembly.
+
+ The assembly
+ The type of the attribute
+ The matching attributes that decorate the assembly
+
+
+
+ Gets all the custom attributes for the given attribute.
+
+ The attribute
+ The type of the attribute to find
+ The matching attributes that decorate the attribute
+
+
+
+ Gets all the custom attributes for the method that are of the given type.
+
+ The method
+ The type of the attribute
+ The matching attributes that decorate the method
+
+
+
+ Gets all the custom attributes for the given type.
+
+ The type
+ The type of the attribute
+ The matching attributes that decorate the type
+
+
+
+ Converts an into a , if possible (for example, this
+ will not work when the test method is based on source code rather than binaries).
+
+ The method to convert
+ The runtime method, if available; null, otherwise
+
+
+
+ Converts an into a , if possible (for example, this
+ will not work when the test class is based on source code rather than binaries).
+
+ The type to convert
+ The runtime type, if available, null, otherwise
+
+
+
+ Extension methods for reading and .
+
+
+
+
+ Gets a flag that determines whether diagnostic messages will be emitted.
+
+
+
+
+ Gets a flag that determines whether diagnostic messages will be emitted. If the flag is not present,
+ returns the default value (false).
+
+
+
+
+ Gets a flag that determines the default display name format for test methods.
+
+
+
+
+ Gets a flag that determines the default display name format for test methods. If the flag is not present,
+ returns the default value ().
+
+
+
+
+ Gets a flag that determines whether theories are pre-enumerated. If they enabled, then the
+ discovery system will return a test case for each row of test data; they are disabled, then the
+ discovery system will return a single test case for the theory.
+
+
+
+
+ Gets a flag that determines whether theories are pre-enumerated. If they enabled, then the
+ discovery system will return a test case for each row of test data; they are disabled, then the
+ discovery system will return a single test case for the theory. If the flag is not present,
+ returns the default value (true).
+
+
+
+
+ Gets a flag that determines whether xUnit.net should report test results synchronously.
+
+
+
+
+ Gets a flag that determines whether xUnit.net should report test results synchronously.
+ If the flag is not set, returns the default value (false).
+
+
+
+
+ Gets a flag that determines whether diagnostic messages will be emitted.
+
+
+
+
+ Gets a flag that determines whether diagnostic messages will be emitted. If the flag is not
+ present, returns the default value (false).
+
+
+
+
+ Gets a flag to disable parallelization.
+
+
+
+
+ Gets a flag to disable parallelization. If the flag is not present, returns the
+ default value (false).
+
+
+
+
+ Gets the maximum number of threads to use when running tests in parallel.
+
+
+
+
+ Gets the maximum number of threads to use when running tests in parallel. If set to 0 (or not set),
+ the value of is used; if set to a value less
+ than 0, does not limit the number of threads.
+
+
+
+
+ Gets a flag that determines whether xUnit.net should report test results synchronously.
+
+
+
+
+ Gets a flag that determines whether xUnit.net should report test results synchronously.
+ If the flag is not set, returns the default value (false).
+
+
+
+
diff --git a/Tests/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/Tests/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100644
index 0000000..e69de29
diff --git a/Tests/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/Tests/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100644
index 0000000..e69de29
diff --git a/Tests/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/Tests/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100644
index 0000000..e69de29
diff --git a/Tests/obj/Debug/Tests.csproj.FileListAbsolute.txt b/Tests/obj/Debug/Tests.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..67070ca
--- /dev/null
+++ b/Tests/obj/Debug/Tests.csproj.FileListAbsolute.txt
@@ -0,0 +1,40 @@
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\xunit.abstractions.dll
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\xunit.runner.visualstudio.testadapter.dll
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\xunit.runner.utility.desktop.dll
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\xunit.execution.desktop.dll
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\Tests.dll
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\Tests.pdb
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\BosonProtocol.dll
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\xunit.assert.dll
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\xunit.core.dll
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\BosonProtocol.pdb
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\xunit.assert.pdb
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\xunit.assert.xml
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\xunit.core.pdb
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\xunit.core.xml
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\obj\Debug\Tests.csprojResolveAssemblyReference.cache
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\obj\Debug\Tests.dll
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\obj\Debug\Tests.pdb
+c:\users\goryanin.infosystem\documents\visual studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\ObjectsPool.dll
+c:\users\goryanin.infosystem\documents\visual studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\SocketServer.dll
+c:\users\goryanin.infosystem\documents\visual studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\Transport.dll
+c:\users\goryanin.infosystem\documents\visual studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\ObjectsPool.pdb
+c:\users\goryanin.infosystem\documents\visual studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\SocketServer.pdb
+c:\users\goryanin.infosystem\documents\visual studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\Transport.pdb
+c:\users\goryanin.infosystem\documents\visual studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\PluginBase.dll
+c:\users\goryanin.infosystem\documents\visual studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\PluginBase.pdb
+c:\users\goryanin.infosystem\documents\visual studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\xunit.execution.desktop.pdb
+c:\users\goryanin.infosystem\documents\visual studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\xunit.execution.desktop.xml
+c:\users\goryanin.infosystem\documents\visual studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\protobuf-net.dll
+c:\users\goryanin.infosystem\documents\visual studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\protobuf-net.pdb
+c:\users\goryanin.infosystem\documents\visual studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\protobuf-net.xml
+c:\users\goryanin.infosystem\documents\visual studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\BenchmarkDotNet.dll
+c:\users\goryanin.infosystem\documents\visual studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\BenchmarkDotNet.xml
+c:\users\goryanin.infosystem\documents\visual studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\PluginLauncher.dll
+c:\users\goryanin.infosystem\documents\visual studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\PluginLauncher.pdb
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\ClientExtensionsBase.dll
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\ClientGamePlugin.dll
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\GameBasePlugin.dll
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\ClientExtensionsBase.pdb
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\ClientGamePlugin.pdb
+C:\Users\goryanin.INFOSYSTEM\Documents\Visual Studio 2015\Projects\ClientExtensionsBase\Tests\bin\Debug\GameBasePlugin.pdb
diff --git a/Tests/packages.config b/Tests/packages.config
new file mode 100644
index 0000000..111e5fc
--- /dev/null
+++ b/Tests/packages.config
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Transport/Client/ClientTransportBase.cs b/Transport/Client/ClientTransportBase.cs
new file mode 100644
index 0000000..ac67544
--- /dev/null
+++ b/Transport/Client/ClientTransportBase.cs
@@ -0,0 +1,54 @@
+using System;
+using System.IO;
+using QuaternionProtocol;
+using QuaternionProtocol.Protocol;
+using Transport.CommandsBase;
+using Transport.Connections;
+using Transport.Events;
+
+namespace Transport.Client
+{
+ public abstract class ClientTransportBase : IDisposable, IClientTransport
+ {
+
+ public event EventHandler> OnConnected;
+ public event EventHandler> OnDisconected;
+
+ public event EventHandler> OnReceive;
+ public event EventHandler> OnError;
+ public abstract string TransportName { get; }
+ public abstract string Address { get; }
+ public abstract OperationState SendData(ProtocolBase data);
+ public abstract OperationState SendData(Stream data);
+ public abstract OperationState RegisterCommand(string commandName, T executeAction) where T : IClientCommand;
+ public abstract OperationState Connect(string endpointAddress);
+ public abstract void Dispose();
+ public void CloseConnection()
+ {
+ Dispose();
+ }
+ #region event invokators
+ protected void RaiseReceive(ClientGenericEventArgs e)
+ {
+ OnReceive?.Invoke(this, e);
+ }
+
+ protected void RaiseError(ClientGenericEventArgs e)
+ {
+ OnError?.Invoke(this, e);
+ }
+
+ protected void RaiseConnected(ClientGenericEventArgs args )
+ {
+ OnConnected?.Invoke(this,args);
+ }
+
+ protected void RaiseDisconnected()
+ {
+ //OnDisconnected?.Invoke(this, EventArgs.Empty);
+ }
+ #endregion
+
+
+ }
+}
\ No newline at end of file
diff --git a/Transport/Client/IClientTransport.cs b/Transport/Client/IClientTransport.cs
new file mode 100644
index 0000000..f3bf494
--- /dev/null
+++ b/Transport/Client/IClientTransport.cs
@@ -0,0 +1,18 @@
+using System;
+using System.IO;
+using QuaternionProtocol;
+using QuaternionProtocol.Protocol;
+using Transport.CommandsBase;
+using Transport.Connections;
+using Transport.Events;
+
+namespace Transport.Client
+{
+ public interface IClientTransport: ITransport
+ {
+ OperationState SendData(ProtocolBase data);
+ OperationState SendData(Stream data);
+ OperationState Connect(string endpointAddress);
+ OperationState RegisterCommand(string commandName, T executeAction) where T : IClientCommand;
+ }
+}
\ No newline at end of file
diff --git a/Transport/CommandsBase/IClientCommand.cs b/Transport/CommandsBase/IClientCommand.cs
new file mode 100644
index 0000000..74833de
--- /dev/null
+++ b/Transport/CommandsBase/IClientCommand.cs
@@ -0,0 +1,9 @@
+using Transport.Connections;
+
+namespace Transport.CommandsBase
+{
+ public interface IClientCommand
+ {
+ void Execute(ClientConnectionBase connection, IClientCommand entity);
+ }
+}
\ No newline at end of file
diff --git a/Transport/CommandsBase/ICommand.cs b/Transport/CommandsBase/ICommand.cs
new file mode 100644
index 0000000..67541c6
--- /dev/null
+++ b/Transport/CommandsBase/ICommand.cs
@@ -0,0 +1,9 @@
+using Transport.Connections;
+
+namespace Transport.CommandsBase
+{
+ public interface IServerCommand
+ {
+ void Execute(ServerConnection connection, IServerCommand entity);
+ }
+}
\ No newline at end of file
diff --git a/Transport/CommandsBase/Ping.cs b/Transport/CommandsBase/Ping.cs
new file mode 100644
index 0000000..91b5f30
--- /dev/null
+++ b/Transport/CommandsBase/Ping.cs
@@ -0,0 +1,14 @@
+using System;
+using Transport.Connections;
+
+namespace Transport.CommandsBase
+{
+ [Serializable]
+ public class Ping:IServerCommand
+ {
+ public void Execute(ServerConnection serverConnection, IServerCommand entity)
+ {
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/Transport/Connections/ClientConnection.cs b/Transport/Connections/ClientConnection.cs
new file mode 100644
index 0000000..a10f882
--- /dev/null
+++ b/Transport/Connections/ClientConnection.cs
@@ -0,0 +1,31 @@
+using System;
+using QuaternionProtocol.Protocol;
+using QuaternionProtocol.Serializers;
+using Transport.Client;
+using Transport.CommandsBase;
+
+namespace Transport.Connections
+{
+ public class ClientConnection : ClientConnectionBase
+ {
+ private readonly ClientTransportBase _transport;
+ private readonly ProtocolBase _protocol;
+ public ISerializer DeSerializer;
+
+ public ClientConnection(ClientTransportBase transport, ProtocolBase protocol) : base(transport)
+ {
+ _transport = transport;
+ _protocol = protocol;
+ }
+
+ public void OnDataReceived(ProtocolBase protocol, IClientCommand action, Type actiontype)
+ {
+ var data = protocol.ProtocolName != _protocol.ProtocolName
+ ? _protocol.CleanData(protocol.GetDataToSend())
+ : protocol.GetBody();
+
+ var obj = DeSerializer.Deserialize(actiontype, data);
+ action.Execute(this, obj as IClientCommand);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Transport/Connections/ClientConnectionBase.cs b/Transport/Connections/ClientConnectionBase.cs
new file mode 100644
index 0000000..55a4fe3
--- /dev/null
+++ b/Transport/Connections/ClientConnectionBase.cs
@@ -0,0 +1,39 @@
+#region
+
+using System;
+using QuaternionProtocol;
+using QuaternionProtocol.Protocol;
+using QuaternionProtocol.Serializers;
+using Transport.Client;
+using Transport.CommandsBase;
+using Transport.Connections.Peers;
+
+#endregion
+
+namespace Transport.Connections
+{
+ public abstract class ClientConnectionBase: IDisposable
+ {
+ public ClientPeerBase PeerRef;
+ public readonly TransportStats TransportStats;
+ private readonly IClientTransport _transport;
+
+ protected ClientConnectionBase(IClientTransport transport)
+ {
+ _transport = transport;
+ TransportStats = new TransportStats(transport.TransportName);
+ }
+
+ public string ConnectionName { get; set; }
+
+ public OperationState SendData(ProtocolBase data)
+ {
+ return _transport.SendData(data);
+ }
+
+ public void Dispose()
+ {
+ //_transport.Dispose();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Transport/Connections/ClientConnectionFactory.cs b/Transport/Connections/ClientConnectionFactory.cs
new file mode 100644
index 0000000..e54e3eb
--- /dev/null
+++ b/Transport/Connections/ClientConnectionFactory.cs
@@ -0,0 +1,29 @@
+using QuaternionProtocol.Protocol;
+using QuaternionProtocol.Protocol.Binary;
+using QuaternionProtocol.Serializers;
+using Transport.Client;
+
+namespace Transport.Connections
+{
+ public static class ClientConnectionFactory
+ {
+ public static ClientConnectionBase Create(IClientTransport transport)
+ {
+ ClientConnectionBase result = null;
+ switch (transport.TransportName)
+ {
+ case "TCPIPV4":
+ case "UDPIPV4":
+ var transp = (ClientTransportBase)transport;
+ var conn = new ClientConnection(transp, new BinaryProtocol(new byte[50]))
+ {
+ DeSerializer = new BinaryFormaterGenericSerializer