public void GaussianCustomSerializationTest() { using (var stream = new MemoryStream()) { var writer = new WrappedBinaryWriter(new BinaryWriter(stream)); writer.Write(Gaussian.FromNatural(-13.89, 436.12)); writer.Write(Gaussian.PointMass(Math.PI)); writer.Write(Gaussian.Uniform()); stream.Seek(0, SeekOrigin.Begin); using (var reader = new WrappedBinaryReader(new BinaryReader(stream))) { Gaussian natural = reader.ReadGaussian(); Assert.Equal(-13.89, natural.MeanTimesPrecision); Assert.Equal(436.12, natural.Precision); Gaussian pointMass = reader.ReadGaussian(); Assert.True(pointMass.IsPointMass); Assert.Equal(Math.PI, pointMass.GetMean()); Gaussian uniform = reader.ReadGaussian(); Assert.True(uniform.IsUniform()); } } }
public void GammaCustomSerializationTest() { using (var stream = new MemoryStream()) { var writer = new WrappedBinaryWriter(new BinaryWriter(stream)); writer.Write(Gamma.FromShapeAndRate(1.0, 10.0)); writer.Write(Gamma.PointMass(Math.PI)); writer.Write(Gamma.Uniform()); stream.Seek(0, SeekOrigin.Begin); using (var reader = new WrappedBinaryReader(new BinaryReader(stream))) { Gamma shapeAndRate = reader.ReadGamma(); Assert.Equal(1.0, shapeAndRate.Shape); Assert.Equal(10.0, shapeAndRate.Rate); Gamma pointMass = reader.ReadGamma(); Assert.True(pointMass.IsPointMass); Assert.Equal(Math.PI, pointMass.GetMean()); Gamma uniform = reader.ReadGamma(); Assert.True(uniform.IsUniform()); } } }
/// <summary> /// Persists an object that controls its binary serialization to the specified stream. /// </summary> /// <param name="obj">The object to be serialized.</param> /// <param name="stream">The serialization stream.</param> /// <remarks>To load a saved learner, you can use the factory methods whose names start with LoadBackwardCompatible.</remarks> public static void SaveForwardCompatibleAsBinary(this ICustomSerializable obj, Stream stream) { if (obj == null) { throw new ArgumentNullException(nameof(obj)); } if (stream == null) { throw new ArgumentNullException(nameof(stream)); } using (var writer = new WrappedBinaryWriter(new BinaryWriter(stream, Encoding.UTF8, true))) { obj.SaveForwardCompatible(writer); } }