| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ash/magnifier/magnifier_scale_utils.h" |
| |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace ash { |
| namespace magnifier_scale_utils { |
| namespace { |
| |
| TEST(MagnifierScaleUtilsTest, AdjustScaleFromScroll) { |
| // Scaling by offset 0.2f followed by another 0.2f should result in the same |
| // scale if scaling by offset 0.4f (given that we start from the same scale). |
| const float min_scale = 1.0f; |
| const float max_scale = 20.f; |
| const float starting_scale = 1.0f; |
| |
| // Calculate scale if we're stepping by 0.2f twice. |
| float linear_offset = 0.2f; |
| const float step_1_scale = |
| GetScaleFromScroll(linear_offset, starting_scale, min_scale, max_scale); |
| const float step_2_scale = |
| GetScaleFromScroll(linear_offset, step_1_scale, min_scale, max_scale); |
| |
| // Calculate scale if we're stepping by 0.4f from the same starting scale. |
| linear_offset = 0.4f; |
| const float final_scale = |
| GetScaleFromScroll(linear_offset, starting_scale, min_scale, max_scale); |
| EXPECT_FLOAT_EQ(final_scale, step_2_scale); |
| |
| // However, each step doesn't change the scale linearly. |
| EXPECT_NE(step_1_scale - starting_scale, step_2_scale - step_1_scale); |
| } |
| |
| TEST(MagnifierScaleUtilsTest, GetNextMagnifierScaleValue) { |
| const float min = 3.0f; |
| const float max = 40.0f; |
| float current_scale = min; |
| |
| // A positive |delta_index| always result in an increasing scale values that |
| // are less than |max|. |
| int delta_index = 1; |
| while (current_scale < max) { |
| float new_scale = |
| GetNextMagnifierScaleValue(delta_index, current_scale, min, max); |
| EXPECT_GT(new_scale, current_scale); |
| current_scale = new_scale; |
| } |
| |
| EXPECT_FLOAT_EQ(current_scale, max); |
| |
| // And vice versa for a negative |delta_index|. |
| delta_index = -1; |
| while (current_scale > min) { |
| float new_scale = |
| GetNextMagnifierScaleValue(delta_index, current_scale, min, max); |
| EXPECT_LT(new_scale, current_scale); |
| current_scale = new_scale; |
| } |
| |
| EXPECT_FLOAT_EQ(min, current_scale); |
| } |
| |
| } // namespace |
| } // namespace magnifier_scale_utils |
| } // namespace ash |