コード例 #1
0
        // Validates that we hit expected values for a sequence of two states
        // TODO: Generalize and convert to more elegant pattern (if required by test scenarios)
        private void ChainedHoverLightStateValuesValidationHelper(
            float hoverLight_InnerConeIntensityExpected, float hoverLight_outerConeIntensityExpected, float hoverLight_outerConeAngleExpected,
            float pressLight_InnerConeIntensityExpected, float pressLight_outerConeIntensityExpected, float pressLight_outerConeAngleExpected,
            float hoverLight_InnerConeIntensityExpected2, float hoverLight_outerConeIntensityExpected2, float hoverLight_outerConeAngleExpected2,
            float pressLight_InnerConeIntensityExpected2, float pressLight_outerConeIntensityExpected2, float pressLight_outerConeAngleExpected2,
            string testName,
            string targetName)
        {
            if (!ValidateEffectsPresent())
            {
                return;
            }

            WaitHandle[] hoverLight_ValueValidationEvents = new WaitHandle[3];
            WaitHandle[] pressLight_ValueValidationEvents = new WaitHandle[3];

            Control target = FindName(targetName) as Control;
            var     lights = GetElementForHoverLight(target).Lights;

            var hoverLight = _revealTestApi.GetAsRevealHoverLight(lights[0]);
            var pressLight = _revealTestApi.GetAsRevealHoverLight(lights[1]);

            _hoverSpotlight = _revealTestApi.GetSpotLight(hoverLight as Windows.UI.Xaml.Media.XamlLight);
            _pressSpotlight = _revealTestApi.GetSpotLight(pressLight as Windows.UI.Xaml.Media.XamlLight);

            hoverLight_ValueValidationEvents[0] = _compositionPropertyLogger.RegisterProperty(_hoverSpotlight, "InnerConeIntensity", CompositionPropertyLogger.LoggableType.Float, 0.0f, hoverLight_InnerConeIntensityExpected, coneIntensityTolerance);
            hoverLight_ValueValidationEvents[1] = _compositionPropertyLogger.RegisterProperty(_hoverSpotlight, "OuterConeIntensity", CompositionPropertyLogger.LoggableType.Float, 0.0f, hoverLight_outerConeIntensityExpected, coneIntensityTolerance);
            hoverLight_ValueValidationEvents[2] = _compositionPropertyLogger.RegisterProperty(_hoverSpotlight, "OuterConeAngle", CompositionPropertyLogger.LoggableType.Float, 0.0f, hoverLight_outerConeAngleExpected, coneAngleTolerance);

            pressLight_ValueValidationEvents[0] = _compositionPropertyLogger.RegisterProperty(_pressSpotlight, "InnerConeIntensity", CompositionPropertyLogger.LoggableType.Float, 0.0f, pressLight_InnerConeIntensityExpected, coneIntensityTolerance);
            pressLight_ValueValidationEvents[1] = _compositionPropertyLogger.RegisterProperty(_pressSpotlight, "OuterConeIntensity", CompositionPropertyLogger.LoggableType.Float, 0.0f, pressLight_outerConeIntensityExpected, coneIntensityTolerance);
            pressLight_ValueValidationEvents[2] = _compositionPropertyLogger.RegisterProperty(_pressSpotlight, "OuterConeAngle", CompositionPropertyLogger.LoggableType.Float, 0.0f, pressLight_outerConeAngleExpected, coneAngleTolerance);


            // Off-thread validation waits until each registered property hits its expected value
            Task.Run(() =>
            {
                var combined           = hoverLight_ValueValidationEvents.Concat(pressLight_ValueValidationEvents).ToArray();
                bool hoverLight_Result = WaitHandle.WaitAll(hoverLight_ValueValidationEvents, 10000);
                bool pressLight_Result = WaitHandle.WaitAll(pressLight_ValueValidationEvents, 10000);
                RunOnUIThread.Execute(() =>
                {
                    // We will log values when we hit the secod expected state, so don't log at this point.
                    _compositionPropertyLogger.UnregisterProperty(_hoverSpotlight, "InnerConeIntensity", CompositionPropertyLogger.LoggableType.Float);
                    _compositionPropertyLogger.UnregisterProperty(_hoverSpotlight, "OuterConeIntensity", CompositionPropertyLogger.LoggableType.Float);
                    _compositionPropertyLogger.UnregisterProperty(_hoverSpotlight, "OuterConeAngle", CompositionPropertyLogger.LoggableType.Float);
                    Array.Clear(hoverLight_ValueValidationEvents, 0, 3);

                    _compositionPropertyLogger.UnregisterProperty(_pressSpotlight, "InnerConeIntensity", CompositionPropertyLogger.LoggableType.Float);
                    _compositionPropertyLogger.UnregisterProperty(_pressSpotlight, "OuterConeIntensity", CompositionPropertyLogger.LoggableType.Float);
                    _compositionPropertyLogger.UnregisterProperty(_pressSpotlight, "OuterConeAngle", CompositionPropertyLogger.LoggableType.Float);
                    Array.Clear(pressLight_ValueValidationEvents, 0, 3);

                    // Now validate we hit values for the second expected state
                    HoverLightStateValuesValidationHelper(
                        hoverLight_InnerConeIntensityExpected2, hoverLight_outerConeIntensityExpected2, hoverLight_outerConeAngleExpected2,
                        pressLight_InnerConeIntensityExpected2, pressLight_outerConeIntensityExpected2, pressLight_outerConeAngleExpected2,
                        testName,
                        targetName);
                });
            });
        }
コード例 #2
0
        private void HoverLightStateValuesValidationHelper(
            float hoverLight_InnerConeIntensityExpected, float hoverLight_outerConeIntensityExpected, float hoverLight_outerConeAngleExpected,
            float pressLight_InnerConeIntensityExpected, float pressLight_outerConeIntensityExpected, float pressLight_outerConeAngleExpected,
            string testName,
            string targetName)
        {
            if (!ValidateEffectsPresent())
            {
                return;
            }

            WaitHandle[] hoverLight_ValueValidationEvents = new WaitHandle[3];
            WaitHandle[] pressLight_ValueValidationEvents = new WaitHandle[3];

            Control target = FindName(targetName) as Control;
            var     lights = GetElementForHoverLight(target).Lights;

            var hoverLight = _revealTestApi.GetAsRevealHoverLight(lights[0]);
            var pressLight = _revealTestApi.GetAsRevealHoverLight(lights[1]);

            _hoverSpotlight = _revealTestApi.GetSpotLight(hoverLight as Windows.UI.Xaml.Media.XamlLight);
            _pressSpotlight = _revealTestApi.GetSpotLight(pressLight as Windows.UI.Xaml.Media.XamlLight);

            hoverLight_ValueValidationEvents[0] = _compositionPropertyLogger.RegisterProperty(_hoverSpotlight, "InnerConeIntensity", CompositionPropertyLogger.LoggableType.Float, 0.0f, hoverLight_InnerConeIntensityExpected, coneIntensityTolerance);
            hoverLight_ValueValidationEvents[1] = _compositionPropertyLogger.RegisterProperty(_hoverSpotlight, "OuterConeIntensity", CompositionPropertyLogger.LoggableType.Float, 0.0f, hoverLight_outerConeIntensityExpected, coneIntensityTolerance);
            hoverLight_ValueValidationEvents[2] = _compositionPropertyLogger.RegisterProperty(_hoverSpotlight, "OuterConeAngle", CompositionPropertyLogger.LoggableType.Float, 0.0f, hoverLight_outerConeAngleExpected, coneAngleTolerance);

            pressLight_ValueValidationEvents[0] = _compositionPropertyLogger.RegisterProperty(_pressSpotlight, "InnerConeIntensity", CompositionPropertyLogger.LoggableType.Float, 0.0f, pressLight_InnerConeIntensityExpected, coneIntensityTolerance);
            pressLight_ValueValidationEvents[1] = _compositionPropertyLogger.RegisterProperty(_pressSpotlight, "OuterConeIntensity", CompositionPropertyLogger.LoggableType.Float, 0.0f, pressLight_outerConeIntensityExpected, coneIntensityTolerance);
            pressLight_ValueValidationEvents[2] = _compositionPropertyLogger.RegisterProperty(_pressSpotlight, "OuterConeAngle", CompositionPropertyLogger.LoggableType.Float, 0.0f, pressLight_outerConeAngleExpected, coneAngleTolerance);


            // Off-thread validation waits until each registered property hits its expected value
            Task.Run(() =>
            {
                var combined           = hoverLight_ValueValidationEvents.Concat(pressLight_ValueValidationEvents).ToArray();
                bool hoverLight_Result = WaitHandle.WaitAll(hoverLight_ValueValidationEvents, 10000);
                bool pressLight_Result = WaitHandle.WaitAll(pressLight_ValueValidationEvents, 10000);
                RunOnUIThread.Execute(() =>
                {
                    using (var logger = new ResultsLogger(testName, TestResult))
                    {
                        var hoverLight_InnerConeIntensityValues = _compositionPropertyLogger.GetValues(_hoverSpotlight, "InnerConeIntensity");
                        var hoverLight_OuterConeIntensityValues = _compositionPropertyLogger.GetValues(_hoverSpotlight, "OuterConeIntensity");
                        var hoverLight_OuterConeAngleValues     = _compositionPropertyLogger.GetValues(_hoverSpotlight, "OuterConeAngle");

                        logger.LogMessage("HoverLight - InnerConeIntensity: " + string.Join(", ", hoverLight_InnerConeIntensityValues));
                        logger.LogMessage("HoverLight - OuterConeIntensity: " + string.Join(", ", hoverLight_OuterConeIntensityValues));
                        logger.LogMessage("HoverLight - OuterConeAngle: " + string.Join(", ", hoverLight_OuterConeAngleValues));

                        var pressLight_InnerConeIntensityValues = _compositionPropertyLogger.GetValues(_pressSpotlight, "InnerConeIntensity");
                        var pressLight_OuterConeIntensityValues = _compositionPropertyLogger.GetValues(_pressSpotlight, "OuterConeIntensity");
                        var pressLight_OuterConeAngleValues     = _compositionPropertyLogger.GetValues(_pressSpotlight, "OuterConeAngle");

                        logger.LogMessage("PressLight - InnerConeIntensity: " + string.Join(", ", pressLight_InnerConeIntensityValues));
                        logger.LogMessage("PressLight - OuterConeIntensity: " + string.Join(", ", pressLight_OuterConeIntensityValues));
                        logger.LogMessage("PressLight - OuterConeAngle: " + string.Join(", ", pressLight_OuterConeAngleValues));

                        _compositionPropertyLogger.UnregisterProperty(_hoverSpotlight, "InnerConeIntensity", CompositionPropertyLogger.LoggableType.Float);
                        _compositionPropertyLogger.UnregisterProperty(_hoverSpotlight, "OuterConeIntensity", CompositionPropertyLogger.LoggableType.Float);
                        _compositionPropertyLogger.UnregisterProperty(_hoverSpotlight, "OuterConeAngle", CompositionPropertyLogger.LoggableType.Float);
                        Array.Clear(hoverLight_ValueValidationEvents, 0, 3);

                        _compositionPropertyLogger.UnregisterProperty(_pressSpotlight, "InnerConeIntensity", CompositionPropertyLogger.LoggableType.Float);
                        _compositionPropertyLogger.UnregisterProperty(_pressSpotlight, "OuterConeIntensity", CompositionPropertyLogger.LoggableType.Float);
                        _compositionPropertyLogger.UnregisterProperty(_pressSpotlight, "OuterConeAngle", CompositionPropertyLogger.LoggableType.Float);
                        Array.Clear(pressLight_ValueValidationEvents, 0, 3);

                        logger.Verify(hoverLight_Result && hoverLight_Result, "StateValidationResult: error occured");
                    }
                });
            });
        }