public void CreateBuildWithReportMarker()
        {
            MobileBuildReportSettingsManager.settings.LabelBuildsEnabled = true;
            MobileBuildReportSettingsManager.settings.ShowReport         = false;
            PlayerSettings.SetScriptingBackend(BuildPipeline.GetBuildTargetGroup(Target), ScriptingRuntime);
            PreBuildSetup();
            var unityReport = BuildPipeline.BuildPlayer(new string[] { "Assets/MobileReportScene.unity" }, BuildLocation, Target, Options);

            PostBuildCleanup();

            ReportLocation = Path.Combine(ArtifactDirectory, "report.json");
            Report         = MobileBuildReportHelper.Generate(unityReport.summary.outputPath, ReportLocation);
        }
        public void ReportDeserializesCorrectly()
        {
            var loadedReport = MobileBuildReport.Load(ReportLocation);

            Assert.AreEqual(Report.Platform.ToString(), loadedReport.Platform.ToString());
            Assert.AreEqual(Report.Options.ToString(), Report.Options.ToString());
            Assert.AreEqual(Report.OutputPath, loadedReport.OutputPath);
            Assert.AreEqual(Report.BuildEndedAt, loadedReport.BuildEndedAt);
            Assert.AreEqual(Report.BuildStartedAt, loadedReport.BuildStartedAt);
            Assert.AreEqual(Report.TotalTime, loadedReport.TotalTime);
            Assert.AreEqual(Report.TotalSize, loadedReport.TotalSize);

            for (int i = 0; i < Report.PlatformData.Length; i++)
            {
                Assert.AreEqual(Report.PlatformData[i].Architecture, loadedReport.PlatformData[i].Architecture);
                Assert.AreEqual(Report.PlatformData[i].DownloadSize, loadedReport.PlatformData[i].DownloadSize);

                if (Report.PlatformData[i].Segments != null)
                {
                    foreach (var item in Report.PlatformData[i].Segments)
                    {
                        Assert.That(loadedReport.PlatformData[i].Segments.ContainsKey(item.Key));
                        Assert.AreEqual(loadedReport.PlatformData[i].Segments[item.Key], Report.PlatformData[i].Segments[item.Key]);
                    }
                }
            }
            for (var i = 0; i < Report.Assets.Length; i++)
            {
                Assert.AreEqual(Report.Assets[i].DataPath, loadedReport.Assets[i].DataPath);
                Assert.AreEqual(Report.Assets[i].Overhead, loadedReport.Assets[i].Overhead);
                for (var j = 0; j < Report.Assets[i].Contents.Length; j++)
                {
                    Assert.AreEqual(Report.Assets[i].Contents[j].Id, loadedReport.Assets[i].Contents[j].Id);
                    Assert.AreEqual(Report.Assets[i].Contents[j].Offset, loadedReport.Assets[i].Contents[j].Offset);
                    Assert.AreEqual(Report.Assets[i].Contents[j].Size, loadedReport.Assets[i].Contents[j].Size);
                    Assert.AreEqual(Report.Assets[i].Contents[j].EstimatedSize, loadedReport.Assets[i].Contents[j].EstimatedSize);
                    Assert.AreEqual(Report.Assets[i].Contents[j].SourceAssetGUID, loadedReport.Assets[i].Contents[j].SourceAssetGUID);
                    Assert.AreEqual(Report.Assets[i].Contents[j].SourceAssetPath, loadedReport.Assets[i].Contents[j].SourceAssetPath);
                    Assert.AreEqual(Report.Assets[i].Contents[j].Type, loadedReport.Assets[i].Contents[j].Type);
                }
            }
        }