private void HoverLight_ValidatePointerOverState()
        {
            if (!ValidateEffectsPresent())
            {
                return;
            }

            using (var logger = new ResultsLogger("PointerOver", TestResult))
            {
                string  targetText = TargetComboBox.GetSelectedText();
                Control target     = FindName(targetText) as Control;

                // It is more complex to validate Reveal hover brush targeting on ListViewItem
                // since it uses several brushes applied to the internal ListViewItemChrome. Skip the check here.
                bool lightTargetingResult = true;
                if (targetText != "NormalListViewItem")
                {
                    RevealBrush revealHoverBrush = target.Background as RevealBrush;
                    lightTargetingResult = VerifyHoverBrushTargeting(revealHoverBrush);
                }

                logger.Verify(lightTargetingResult, "lightTargetingResult:" + lightTargetingResult);

                var lights = GetElementForHoverLight(target).Lights;

                bool lightCountResult = lights.Count == 2;          // Reveal Press light is also present
                logger.Verify(lightCountResult, "lightCountResult:" + lightCountResult);

                var hoverLight = _revealTestApi.GetAsRevealHoverLight(lights[0]);
                logger.Verify(hoverLight != null, "HoverLight should be non-null");

                bool lightValidationResult = HoverLight_ValidatePointerOver(hoverLight);
                logger.Verify(lightValidationResult, "lightValidationResult: " + lightValidationResult);
            }
        }
        private void AnotherListViewItem_Holding(object sender, Windows.UI.Xaml.Input.HoldingRoutedEventArgs e)
        {
            if (!ValidateEffectsPresent())
            {
                return;
            }

            using (var logger = new ResultsLogger("BorderLight_TapAndHold", TestResult))
            {
                if (FallbackToLocalLight())
                {
                    bool shouldBorderLightBeOn = ShouldBorderLightBeOn();
                    logger.Verify(shouldBorderLightBeOn == true, "ShouldBorderLightBeOn: " + shouldBorderLightBeOn);
                }
                else if (SharedLight() != null)
                {
                    CompositionLight sharedLight = SharedLight();
                    logger.Verify(sharedLight != null, "Shared Light Exists: " + sharedLight);
                }
                else
                {
                    logger.LogMessage("Neither shared nor local lights exist.");
                }
            }
        }
        private void RevealButton_Click(object sender, RoutedEventArgs e)
        {
            using (var logger = new ResultsLogger("RevealCreateThenEnableEffects", TestResult))
            {
                UIElement lightsElement = GetElementForHoverLight(sender);
                var       lights        = lightsElement.Lights;

                bool lightCountResult = lights.Count == 2;          // Reveal Press light is also present
                logger.Verify(lightCountResult, "lightCountResult:" + lightCountResult);
            }
        }
 private void AnotherListViewItem_Holding(object sender, Windows.UI.Xaml.Input.HoldingRoutedEventArgs e)
 {
     if (!ValidateEffectsPresent())
     {
         return;
     }
     using (var logger = new ResultsLogger("BorderLight_TapAndHold", TestResult))
     {
         bool shouldBorderLightBeOn = ShouldBorderLightBeOn();
         logger.Verify(shouldBorderLightBeOn == true, "ShouldBorderLightBeOn: " + shouldBorderLightBeOn);
     }
 }
        private void BorderLight_ValidateBorderLightPanAway()
        {
            if (!ValidateEffectsPresent())
            {
                return;
            }

            using (var logger = new ResultsLogger("BorderLight_PanAway", TestResult))
            {
                bool shouldBorderLightBeOn = ShouldBorderLightBeOn();
                logger.Verify(shouldBorderLightBeOn == false, "ShouldBorderLightBeOn: " + shouldBorderLightBeOn);
            }
        }
Exemple #6
0
 void LogAcrylicRecipeVersion(ResultsLogger logger)
 {
     if (PlatformConfiguration.IsOsVersionGreaterThanOrEqual(OSVersion.NineteenH1))
     {
         // Color change expected on 19H1
         logger.LogMessage("Using Luminosity-based recipe (19H1)... ");
     }
     else
     {
         // No color change expected on RS5 and lower
         logger.LogMessage("Using legacy Acrylic recipe (RS5 and lower)... ");
     }
 }
        private void HoverLight_ValidateNormalState()
        {
            if (!ValidateEffectsPresent())
            {
                return;
            }

            using (var logger = new ResultsLogger("Normal", TestResult))
            {
                if (_normalStateCheckNumber < 1 || _normalStateCheckNumber > 2)
                {
                    logger.LogError("Error: unpexected call to HoverLight_ValidateNormalState");
                    return;
                }

                bool isInitialCheck = _normalStateCheckNumber == 1;
                _normalStateCheckNumber++;

                string  targetText = TargetComboBox.GetSelectedText();
                Control target     = FindName(targetText) as Control;

                // It is more complex to validate Reveal hover bursh targeting on ListViewItem
                // since it uses several brushes applied to the internal ListViewItemChrome. Skip the check here.
                bool lightTargetingResult = true;
                if (targetText != "NormalListViewItem")
                {
                    RevealBrush revealHoverBrush = target.Background as RevealBrush;
                    lightTargetingResult = VerifyHoverBrushTargeting(revealHoverBrush);
                }
                logger.Verify(lightTargetingResult, "lightTargetingResult:" + lightTargetingResult);

                var lights = GetElementForHoverLight(target).Lights;

                // No lights expected if we've never hovered over this Button
                bool lightCountResult = isInitialCheck ? lights.Count == 0 : lights.Count == 2;
                logger.Verify(lightCountResult, "lightCountResult:" + lightCountResult);
                bool lightValidationResult = true;

                // If we have hovered over the target, validate Reveal light is properly in normal state
                if (!isInitialCheck)
                {
                    var hoverLight = _revealTestApi.GetAsRevealHoverLight(lights[0]);
                    lightValidationResult = HoverLight_ValidateNormal(hoverLight);
                }
                logger.Verify(lightValidationResult, "lightValidationResult: " + lightValidationResult);
            }
        }
        private void OneMoreListViewItem_Holding(object sender, Windows.UI.Xaml.Input.HoldingRoutedEventArgs e)
        {
            if (!ValidateEffectsPresent())
            {
                return;
            }

            using (var logger = new ResultsLogger("HoverLightExpression_ListViewItem_Touch", TestResult))
            {
                Control target = FindName("OneMoreListViewItem") as Control;
                var     lights = GetElementForHoverLight(target).Lights;

                var hoverLight       = _revealTestApi.GetAsRevealHoverLight(lights[0]);
                var offsetExpression = _revealTestApi.GetHoverLightOffsetExpression(hoverLight);
                logger.Verify(String.Equals(offsetExpression.Expression, revealHoverLightOffset_PointerExpression), "HoverLightOffset using incorrect expression: " + offsetExpression.Expression + ", expected: " + revealHoverLightOffset_PointerExpression);
            }
        }
        private void AnotherButton_Click(object sender, RoutedEventArgs e)
        {
            if (!ValidateEffectsPresent())
            {
                return;
            }

            using (var logger = new ResultsLogger("HoverLightExpression_Button_Keyboard", TestResult))
            {
                Control target = FindName("AnotherButton") as Control;
                var     lights = GetElementForHoverLight(target).Lights;

                var hoverLight       = _revealTestApi.GetAsRevealHoverLight(lights[1]);     // Look at the press light
                var offsetExpression = _revealTestApi.GetHoverLightOffsetExpression(hoverLight);
                logger.Verify(String.Equals(offsetExpression.Expression, revealHoverLightOffset_KeyboardExpression), "HoverLightOffset using incorrect expression: " + offsetExpression.Expression + ", expected: " + revealHoverLightOffset_KeyboardExpression);
            }
        }
        private void AddReveal_Click(object sender, RoutedEventArgs e)
        {
            _revealAddedCount++;

            if (_listViewIem1 == null)
            {
                _listViewIem1         = new ListViewItem();
                _listViewIem1.Height  = 100;
                _listViewIem1.Width   = 300;
                _listViewIem1.Content = "Test ListViewItem";
                RevealContainer.Children.Add(_listViewIem1);
            }

            if (_revealAddedCount == 2)
            {
                // Log success once we got this far.
                using (var logger = new ResultsLogger("CoreWindowEventsTests", TestResult)) { }
            }
        }
        private void RunTestButton_Clicked(object sender, RoutedEventArgs e)
        {
            using (var logger = new ResultsLogger("RevealBrushFromMarkup", TestResult))
            {
                int       globalLightCount         = 0;
                const int globalLightCountExpected = 5;
                UIElement visualRoot = GetTopParent(Window.Current.Content);

                if (visualRoot != null && visualRoot.GetType() == typeof(ScrollViewer))
                {
                    globalLightCount = visualRoot.Lights.Count;
                }
                else
                {
                    logger.Verify(false, "visualRoot = null or type is not ScrollViewer");
                }

                logger.Verify(globalLightCount == globalLightCountExpected, "globalLightCount: " + globalLightCount + ", expected: " + globalLightCountExpected);
            }
        }
        private void HoverLightPositionValuesValidationHelper(System.Numerics.Vector3 positionExpected, string testName, string targetName)
        {
            if (!ValidateEffectsPresent())
            {
                return;
            }

            WaitHandle[] valueValidationEvents = new WaitHandle[1];

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

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

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

            valueValidationEvents[0] = _compositionPropertyLogger.RegisterProperty(_hoverSpotlight, "Offset", CompositionPropertyLogger.LoggableType.Vector3, new System.Numerics.Vector3(0F, 0F, 0F), positionExpected, offsetCoordinateTolerance);

            // Off-thread validation waits until each registered property hits its expected value
            Task.Run(() =>
            {
                bool result = WaitHandle.WaitAll(valueValidationEvents, 10000);
                RunOnUIThread.Execute(() =>
                {
                    using (var logger = new ResultsLogger(testName, TestResult))
                    {
                        var positionValues = _compositionPropertyLogger.GetValues(_hoverSpotlight, "Offset");
                        logger.LogMessage("Offset: " + string.Join(", ", positionValues));

                        _compositionPropertyLogger.UnregisterProperty(_hoverSpotlight, "Offset", CompositionPropertyLogger.LoggableType.Vector3);
                        Array.Clear(valueValidationEvents, 0, 1);

                        logger.Verify(result, "PositionValidationResult: error occured");
                    }
                });
            });
        }
Exemple #13
0
        private async void UnsetLuminosityButton_Clicked(object sender, RoutedEventArgs e)
        {
            bool result = false;

            using (var logger = new ResultsLogger("ClearLuminosityBlend", TestResult))
            {
                LogAcrylicRecipeVersion(logger);

                // Manually set TintLuminosityOpacity
                myAcrylicBrush.TintLuminosityOpacity = 1.0;
                await Task.Delay(2000);

                ShowRtb1_Text.Text = "ClearLuminosityBlend: Luminosity = 1.0";
                SampledColors customLuminsotyColors = await SamplePointColors(ShowRtb1);

                // Restore TintLuminosityOpacity to default
                myAcrylicBrush.ClearValue(AcrylicBrush.TintLuminosityOpacityProperty);
                await Task.Delay(2000);

                ShowRtb2_Text.Text = "ClearLuminosityBlend: Luminosity = auto";
                SampledColors defaultLuminosityColors = await SamplePointColors(ShowRtb2);

                if (PlatformConfiguration.IsOsVersionGreaterThanOrEqual(OSVersion.NineteenH1))
                {
                    // Color change expected on 19H1
                    result = !defaultLuminosityColors.Equals(customLuminsotyColors);
                }
                else
                {
                    // No color change expected on RS5 and lower
                    result = defaultLuminosityColors.Equals(customLuminsotyColors);
                }

                logger.Verify(result, "Sampled acrylic pixels did not change as expected");
            }
        }
Exemple #14
0
        private async void SetLuminosityButton_Clicked(object sender, RoutedEventArgs e)
        {
            bool result = false;

            using (var logger = new ResultsLogger("SetLuminosityBlend", TestResult))
            {
                LogAcrylicRecipeVersion(logger);

                // Capture state when TintLuminosityOpacity is at default value of null
                // On 19H1+, this means auto configure the Luminosity for the given Tint
                // On RS5-, it has no effect (we use the legacy acrylic recipe)

                ShowRtb1_Text.Text = "SetLuminosityBlend: Luminosity = auto";
                SampledColors initialColors = await SamplePointColors(ShowRtb1);

                // Manually set TintLuminosityOpacity
                myAcrylicBrush.TintLuminosityOpacity = 1.0;
                await Task.Delay(2000);

                ShowRtb2_Text.Text = "SetLuminosityBlend: Luminosity = 1.0";
                SampledColors customLuminosityColors = await SamplePointColors(ShowRtb2);

                if (PlatformConfiguration.IsOsVersionGreaterThanOrEqual(OSVersion.NineteenH1))
                {
                    // Color change expected on 19H1
                    result = !initialColors.Equals(customLuminosityColors);
                }
                else
                {
                    // No color change expected on RS5 and lower
                    result = initialColors.Equals(customLuminosityColors);
                }

                logger.Verify(result, "Sampled acrylic pixels did not change as expected");
            }
        }
        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");
                    }
                });
            });
        }