accelerator_keys_mojom_traits_unittest.cc 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // Copyright 2021 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "ash/public/mojom/accelerator_keys_mojom_traits.h"
  5. #include "ash/public/mojom/accelerator_keys.mojom.h"
  6. #include "base/containers/fixed_flat_map.h"
  7. #include "base/cxx17_backports.h"
  8. #include "mojo/public/cpp/test_support/test_utils.h"
  9. #include "testing/gtest/include/gtest/gtest.h"
  10. #include "ui/events/keycodes/keyboard_codes_posix.h"
  11. namespace ash {
  12. using mojom_vkey = ash::mojom::VKey;
  13. namespace {
  14. template <typename MojoEnum, typename KeyboardCodeEnum, size_t N>
  15. void TestKeyboardCodeToMojo(
  16. const base::fixed_flat_map<MojoEnum, KeyboardCodeEnum, N>& enums) {
  17. for (auto enum_pair : enums) {
  18. EXPECT_EQ(enum_pair.first,
  19. (mojo::EnumTraits<MojoEnum, KeyboardCodeEnum>::ToMojom(
  20. enum_pair.second)))
  21. << "enum " << enum_pair.first << " != " << enum_pair.second;
  22. }
  23. }
  24. template <typename MojoEnum, typename KeyboardCodeEnum, size_t N>
  25. void TestMojoToKeyboardCode(
  26. const base::fixed_flat_map<MojoEnum, KeyboardCodeEnum, N>& enums) {
  27. for (auto enum_pair : enums) {
  28. KeyboardCodeEnum mojo_to_code;
  29. EXPECT_TRUE((mojo::EnumTraits<MojoEnum, KeyboardCodeEnum>::FromMojom(
  30. enum_pair.first, &mojo_to_code)));
  31. EXPECT_EQ(mojo_to_code, enum_pair.second)
  32. << "enum " << enum_pair.first << " != " << enum_pair.second;
  33. }
  34. }
  35. } // namespace
  36. TEST(AcceleratorKeysTraitsTest, SerializeAndDeserialize) {
  37. // Spot check random VKey's and confirm that they were able to serialize to
  38. // mojom and then deserialize back to VKey.
  39. const auto enums = base::MakeFixedFlatMap<mojom_vkey, ui::KeyboardCode>(
  40. {{mojom_vkey::kCancel, ui::KeyboardCode::VKEY_CANCEL},
  41. {mojom_vkey::kControl, ui::KeyboardCode::VKEY_CONTROL},
  42. {mojom_vkey::kShift, ui::KeyboardCode::VKEY_SHIFT},
  43. {mojom_vkey::kModeChange, ui::KeyboardCode::VKEY_MODECHANGE},
  44. {mojom_vkey::kHelp, ui::KeyboardCode::VKEY_HELP},
  45. {mojom_vkey::kKana, ui::KeyboardCode::VKEY_KANA},
  46. {mojom_vkey::kNum4, ui::KeyboardCode::VKEY_4},
  47. {mojom_vkey::kWlan, ui::KeyboardCode::VKEY_WLAN},
  48. {mojom_vkey::kF14, ui::KeyboardCode::VKEY_F14},
  49. {mojom_vkey::kPrivacyScreenToggle,
  50. ui::KeyboardCode::VKEY_PRIVACY_SCREEN_TOGGLE}});
  51. TestKeyboardCodeToMojo(enums);
  52. TestMojoToKeyboardCode(enums);
  53. }
  54. } // namespace ash