generate_ui_string_overrider_unittest.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #!/usr/bin/env python
  2. # Copyright 2014 The Chromium Authors. All rights reserved.
  3. # Use of this source code is governed by a BSD-style license that can be
  4. # found in the LICENSE file.
  5. """Unittests for generate_ui_string_overrider.py"""
  6. import unittest
  7. import generate_ui_string_overrider
  8. class GenerateResourcesMapUnittest(unittest.TestCase):
  9. NAMESPACE = "chrome_variations"
  10. OUT_HEADER = "components/variations/service/ui_string_overrider_factory.h"
  11. TEST_INPUT = """
  12. // This file is automatically generated by GRIT. Do not edit.
  13. #pragma once
  14. #define IDS_BOOKMARKS_NO_ITEMS 12500
  15. #define IDS_BOOKMARK_BAR_IMPORT_LINK 12501
  16. #define IDS_BOOKMARK_GROUP_FROM_IE 12502
  17. #define IDS_BOOKMARK_GROUP_FROM_FIREFOX 12503
  18. """
  19. def testGetResourceListFromString(self):
  20. expected_tuples = [(301430091, "IDS_BOOKMARKS_NO_ITEMS", "12500"),
  21. (2654138887, "IDS_BOOKMARK_BAR_IMPORT_LINK", "12501"),
  22. (2894469061, "IDS_BOOKMARK_GROUP_FROM_IE", "12502"),
  23. (3847176170, "IDS_BOOKMARK_GROUP_FROM_FIREFOX", "12503")]
  24. expected = [
  25. generate_ui_string_overrider.Resource(*t) for t in expected_tuples]
  26. actual_tuples = generate_ui_string_overrider._GetResourceListFromString(
  27. self.TEST_INPUT)
  28. self.assertEqual(expected_tuples, actual_tuples)
  29. def testCheckForHashCollisions(self):
  30. collisions_tuples = [(123, "IDS_FOO", "12500"),
  31. (456, "IDS_BAR", "12501"),
  32. (456, "IDS_BAZ", "12502"),
  33. (890, "IDS_QUX", "12503"),
  34. (899, "IDS_NO", "12504"),
  35. (899, "IDS_YES", "12505")]
  36. list_with_collisions = [generate_ui_string_overrider.Resource(*t)
  37. for t in collisions_tuples]
  38. expected_collision_tuples = [(456, "IDS_BAR", "12501"),
  39. (456, "IDS_BAZ", "12502"),
  40. (899, "IDS_NO", "12504"),
  41. (899, "IDS_YES", "12505")]
  42. expected_collisions = [generate_ui_string_overrider.Resource(*t)
  43. for t in expected_collision_tuples]
  44. actual_collisions = sorted(
  45. generate_ui_string_overrider._CheckForHashCollisions(
  46. list_with_collisions))
  47. actual_collisions
  48. self.assertEqual(expected_collisions, actual_collisions)
  49. def testGenerateSourceFileContent(self):
  50. expected = (
  51. """\
  52. // This file was generated by generate_ui_string_overrider.py. Do not edit.
  53. #include "components/variations/service/ui_string_overrider_factory.h"
  54. namespace chrome_variations {
  55. namespace {
  56. const size_t kNumResources = 4;
  57. const uint32_t kResourceHashes[] = {
  58. 301430091U, // IDS_BOOKMARKS_NO_ITEMS
  59. 2654138887U, // IDS_BOOKMARK_BAR_IMPORT_LINK
  60. 2894469061U, // IDS_BOOKMARK_GROUP_FROM_IE
  61. 3847176170U, // IDS_BOOKMARK_GROUP_FROM_FIREFOX
  62. };
  63. const int kResourceIndices[] = {
  64. 12500, // IDS_BOOKMARKS_NO_ITEMS
  65. 12501, // IDS_BOOKMARK_BAR_IMPORT_LINK
  66. 12502, // IDS_BOOKMARK_GROUP_FROM_IE
  67. 12503, // IDS_BOOKMARK_GROUP_FROM_FIREFOX
  68. };
  69. } // namespace
  70. variations::UIStringOverrider CreateUIStringOverrider() {
  71. return variations::UIStringOverrider(
  72. kResourceHashes, kResourceIndices, kNumResources);
  73. }
  74. } // namespace chrome_variations
  75. """)
  76. actual = generate_ui_string_overrider._GenerateSourceFileContent(
  77. self.TEST_INPUT, self.NAMESPACE, self.OUT_HEADER)
  78. self.assertEqual(expected, actual)
  79. def testGenerateHeaderFileContent(self):
  80. expected = (
  81. """\
  82. // This file was generated by generate_ui_string_overrider.py. Do not edit.
  83. #ifndef COMPONENTS_VARIATIONS_SERVICE_UI_STRING_OVERRIDER_FACTORY_H_
  84. #define COMPONENTS_VARIATIONS_SERVICE_UI_STRING_OVERRIDER_FACTORY_H_
  85. #include "components/variations/service/ui_string_overrider.h"
  86. namespace chrome_variations {
  87. // Returns an initialized UIStringOverrider.
  88. variations::UIStringOverrider CreateUIStringOverrider();
  89. } // namespace chrome_variations
  90. #endif // COMPONENTS_VARIATIONS_SERVICE_UI_STRING_OVERRIDER_FACTORY_H_
  91. """)
  92. actual = generate_ui_string_overrider._GenerateHeaderFileContent(
  93. self.NAMESPACE, self.OUT_HEADER)
  94. self.assertEqual(expected, actual)
  95. if __name__ == '__main__':
  96. unittest.main()