Esempio n. 1
0
        /// <summary/>
        protected void SaveBuffers(Color[,] screenCapture)
        {
            string filename = string.Empty;

            if (saveExpectedFB)
            {
                filename = logPrefix + "_Expected_fb.png";
                PhotoConverter.SaveImageAs(renderBuffer.FrameBuffer, filename, true);
                LogImageSaved("Expected Image", filename);
            }
            if (saveExpectedTB)
            {
                filename = logPrefix + "_Expected_tb.png";
                PhotoConverter.SaveImageAs(renderBuffer.ToleranceBuffer, filename, false);
                LogImageSaved("Expected Tolerance", filename);
            }
            if (saveExpectedZB)
            {
                Color[,] zbuffer = PhotoConverter.ToColorArray(renderBuffer.ZBuffer);
                filename         = logPrefix + "_Expected_zb.png";
                PhotoConverter.SaveImageAs(zbuffer, filename, false);
                LogImageSaved("Expected Z Buffer", filename);
            }

            RenderBuffer diff = RenderVerifier.ComputeDifference(screenCapture, renderBuffer);

            if (saveDiffFB)
            {
                filename = logPrefix + "_Diff_fb.png";
                PhotoConverter.SaveImageAs(diff.FrameBuffer, filename, true);
                LogImageSaved("Diff Image", filename);
            }
            if (saveDiffTB)
            {
                filename = logPrefix + "_Diff_tb.png";
                PhotoConverter.SaveImageAs(diff.ToleranceBuffer, filename, false);
                LogImageSaved("Diff Tolerance", filename);
            }
            if (saveDiffZB)
            {
                Color[,] zbuffer = PhotoConverter.ToColorArray(diff.ZBuffer);
                filename         = logPrefix + "_Diff_zb.png";
                PhotoConverter.SaveImageAs(zbuffer, filename, false);
                LogImageSaved("Diff Z Buffer", filename);
            }
        }
Esempio n. 2
0
        /// <summary/>
        protected void VerifyWithSceneRenderer(SceneRenderer sceneRenderer)
        {
            Color[,] screenCapture = GetScreenCapture();

            this.sceneRenderer = sceneRenderer;

            Log("Invoking SceneRenderer...");
            if (variation["LogRendererPerformance"] != null &&
                StringConverter.ToBool(variation["LogRendererPerformance"]) == true)
            {
                RenderAndLogPerf();
            }
            else
            {
                RenderWithSceneRenderer();
            }

            Log(RenderVerifier.GetErrorStatistics(renderBuffer));
            Log("Verifying using SceneRenderer error metric.");

            int differences = RenderVerifier.VerifyRender(screenCapture, renderBuffer, numAllowableMismatches, VScanToleranceFile);

            if (differences > 0)
            {
                AddFailure("{0} pixels did not meet the tolerance criteria", differences);
                if (saveXamlRepro)
                {
                    Point[] failPoints = RenderVerifier.GetPointsWithFailures(screenCapture, renderBuffer);
                    sceneRenderer.SaveSelectedSubSceneAsXaml(failPoints, logPrefix + "_Repro.xaml");
                    Log("Failing triangles repro saved as: " + logPrefix + "_Repro.xaml");
                }
            }
            else if (saveXamlRepro && forceSave)
            {
                sceneRenderer.SaveSelectedSubSceneAsXaml(null, logPrefix + "_Serialized.xaml");
                Log("Current variation serialized as: " + logPrefix + "_Serialized.xaml");
            }

            if (differences > 0 || forceSave)
            {
                PhotoConverter.SaveImageAs(screenCapture, logPrefix + "_Rendered.png", true);
                LogImageSaved("Rendered Image:", logPrefix + "_Rendered.png");
                SaveBuffers(screenCapture);
            }
        }
Esempio n. 3
0
        /// <summary/>
        public override void Verify()
        {
            // Compare the two screen captures

            RenderBuffer renderBuffer = new RenderBuffer(firstCapture, BackgroundColor);

            Color[,] screenCapture = GetScreenCapture();
            int differences = RenderVerifier.VerifyRender(screenCapture, renderBuffer);

            // Log failures, if any
            if (differences > 0)
            {
                AddFailure("{0} pixels did not meet the tolerance criteria.", differences);
            }
            if (Failures != 0)
            {
                RenderBuffer diff = RenderVerifier.ComputeDifference(screenCapture, renderBuffer);
                PhotoConverter.SaveImageAs(screenCapture, logPrefix + "_Rendered.png");
                PhotoConverter.SaveImageAs(renderBuffer.FrameBuffer, logPrefix + "_Expected_fb.png");
                PhotoConverter.SaveImageAs(diff.ToleranceBuffer, logPrefix + "_Diff_tb.png");
                PhotoConverter.SaveImageAs(diff.FrameBuffer, logPrefix + "_Diff_fb.png");
            }
        }