Exemplo n.º 1
0
        public void CustomSerialization()
        {
            MemoryStream stream = new MemoryStream();
            BinaryWriter writer = new BinaryWriter(stream);
            BinaryReader reader = new BinaryReader(stream);

            try
            {
                stream.Position = 0;
                BuildResult result1 = new BuildResult(resultWithOutputs, false /* shallow copy */);
                result1.HandleId  = 2;
                result1.RequestId = 3;
                result1.WriteToStream(writer);

                BuildResult result2 = new BuildResult(resultWithOutputs, true /* deep copy */);
                result2.HandleId  = 2;
                result2.RequestId = 3;
                result2.WriteToStream(writer);

                BuildResult result3 = new BuildResult(null, new Hashtable(StringComparer.OrdinalIgnoreCase), true, 0, 1, 2, true, null, null, 0, 0, 0);
                result3.HandleId  = 2;
                result3.RequestId = 3;
                result3.WriteToStream(writer);

                BuildResult result4 = new BuildResult(null, new Hashtable(StringComparer.OrdinalIgnoreCase), true, 0, 1, 2, true, "DefaultTarget", "InitialTarget", 0, 0, 0);
                result4.HandleId  = 2;
                result4.RequestId = 3;
                result4.ResultByTarget.Add("ONE", Target.BuildState.CompletedSuccessfully);
                result4.WriteToStream(writer);
                long streamWriteEndPosition = stream.Position;
                stream.Position = 0;

                BuildResult result5 = BuildResult.CreateFromStream(reader);
                BuildResult result6 = BuildResult.CreateFromStream(reader);
                BuildResult result7 = BuildResult.CreateFromStream(reader);
                BuildResult result8 = BuildResult.CreateFromStream(reader);
                long        streamReadEndPosition = stream.Position;
                Assert.IsTrue(streamWriteEndPosition == streamReadEndPosition, "Stream end positions should be equal");
                CompareBuildResult(result1, result5);
                CompareBuildResult(result2, result6);
                CompareBuildResult(result3, result7);
                CompareBuildResult(result4, result8);
                Assert.IsTrue(result8.ResultByTarget.Count == 1);
                Assert.IsTrue(((Target.BuildState)result8.ResultByTarget["ONE"]) == Target.BuildState.CompletedSuccessfully);
                BuildItem[] buildItemArray = ((BuildItem[])result1.OutputsByTarget["TaskItems"]);
                Assert.IsTrue(buildItemArray.Length == 2);
                Assert.IsTrue(string.Compare(buildItemArray[0].Include, buildItem1.Include, StringComparison.OrdinalIgnoreCase) == 0);
                Assert.IsTrue(string.Compare(buildItemArray[1].Include, buildItem2.Include, StringComparison.OrdinalIgnoreCase) == 0);
                Assert.IsTrue(string.Compare(buildItemArray[1].Name, buildItem2.Name, StringComparison.OrdinalIgnoreCase) == 0);
            }
            finally
            {
                reader.Close();
                writer = null;
                stream = null;
            }
        }