|  | #!/usr/bin/python | 
|  | # Copyright 2014 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. | 
|  |  | 
|  | """Unittests for generate_ui_string_overrider.py""" | 
|  |  | 
|  | import unittest | 
|  |  | 
|  | import generate_ui_string_overrider | 
|  |  | 
|  |  | 
|  | class GenerateResourcesMapUnittest(unittest.TestCase): | 
|  | NAMESPACE = "chrome_variations" | 
|  | OUT_HEADER = "components/variations/service/ui_string_overrider_factory.h" | 
|  | TEST_INPUT = """ | 
|  | // This file is automatically generated by GRIT. Do not edit. | 
|  |  | 
|  | #pragma once | 
|  |  | 
|  | #define IDS_BOOKMARKS_NO_ITEMS 12500 | 
|  | #define IDS_BOOKMARK_BAR_IMPORT_LINK 12501 | 
|  | #define IDS_BOOKMARK_GROUP_FROM_IE 12502 | 
|  | #define IDS_BOOKMARK_GROUP_FROM_FIREFOX 12503 | 
|  | """ | 
|  |  | 
|  | def testGetResourceListFromString(self): | 
|  | expected_tuples = [(301430091, "IDS_BOOKMARKS_NO_ITEMS", "12500"), | 
|  | (2654138887, "IDS_BOOKMARK_BAR_IMPORT_LINK", "12501"), | 
|  | (2894469061, "IDS_BOOKMARK_GROUP_FROM_IE", "12502"), | 
|  | (3847176170, "IDS_BOOKMARK_GROUP_FROM_FIREFOX", "12503")] | 
|  | expected = [ | 
|  | generate_ui_string_overrider.Resource(*t) for t in expected_tuples] | 
|  |  | 
|  | actual_tuples = generate_ui_string_overrider._GetResourceListFromString( | 
|  | self.TEST_INPUT) | 
|  |  | 
|  | self.assertEqual(expected_tuples, actual_tuples) | 
|  |  | 
|  |  | 
|  | def testCheckForHashCollisions(self): | 
|  | collisions_tuples = [(123, "IDS_FOO", "12500"), | 
|  | (456, "IDS_BAR", "12501"), | 
|  | (456, "IDS_BAZ", "12502"), | 
|  | (890, "IDS_QUX", "12503"), | 
|  | (899, "IDS_NO", "12504"), | 
|  | (899, "IDS_YES", "12505")] | 
|  | list_with_collisions = [generate_ui_string_overrider.Resource(*t) | 
|  | for t in collisions_tuples] | 
|  |  | 
|  | expected_collision_tuples = [(456, "IDS_BAR", "12501"), | 
|  | (456, "IDS_BAZ", "12502"), | 
|  | (899, "IDS_NO", "12504"), | 
|  | (899, "IDS_YES", "12505")] | 
|  | expected_collisions = [generate_ui_string_overrider.Resource(*t) | 
|  | for t in expected_collision_tuples] | 
|  |  | 
|  | actual_collisions = sorted( | 
|  | generate_ui_string_overrider._CheckForHashCollisions( | 
|  | list_with_collisions)) | 
|  | actual_collisions | 
|  |  | 
|  | self.assertEqual(expected_collisions, actual_collisions) | 
|  |  | 
|  | def testGenerateSourceFileContent(self): | 
|  | expected = ( | 
|  | """\ | 
|  | // This file was generated by generate_ui_string_overrider.py. Do not edit. | 
|  |  | 
|  | #include "components/variations/service/ui_string_overrider_factory.h" | 
|  |  | 
|  | namespace chrome_variations { | 
|  |  | 
|  | namespace { | 
|  |  | 
|  | const size_t kNumResources = 4; | 
|  |  | 
|  | const uint32_t kResourceHashes[] = { | 
|  | 301430091U,  // IDS_BOOKMARKS_NO_ITEMS | 
|  | 2654138887U,  // IDS_BOOKMARK_BAR_IMPORT_LINK | 
|  | 2894469061U,  // IDS_BOOKMARK_GROUP_FROM_IE | 
|  | 3847176170U,  // IDS_BOOKMARK_GROUP_FROM_FIREFOX | 
|  | }; | 
|  |  | 
|  | const int kResourceIndices[] = { | 
|  | 12500,  // IDS_BOOKMARKS_NO_ITEMS | 
|  | 12501,  // IDS_BOOKMARK_BAR_IMPORT_LINK | 
|  | 12502,  // IDS_BOOKMARK_GROUP_FROM_IE | 
|  | 12503,  // IDS_BOOKMARK_GROUP_FROM_FIREFOX | 
|  | }; | 
|  |  | 
|  | }  // namespace | 
|  |  | 
|  | variations::UIStringOverrider CreateUIStringOverrider() { | 
|  | return variations::UIStringOverrider( | 
|  | kResourceHashes, kResourceIndices, kNumResources); | 
|  | } | 
|  |  | 
|  | }  // namespace chrome_variations | 
|  | """) | 
|  | actual = generate_ui_string_overrider._GenerateSourceFileContent( | 
|  | self.TEST_INPUT, self.NAMESPACE, self.OUT_HEADER) | 
|  |  | 
|  | self.assertEqual(expected, actual) | 
|  |  | 
|  |  | 
|  | def testGenerateHeaderFileContent(self): | 
|  | expected = ( | 
|  | """\ | 
|  | // This file was generated by generate_ui_string_overrider.py. Do not edit. | 
|  |  | 
|  | #ifndef COMPONENTS_VARIATIONS_SERVICE_UI_STRING_OVERRIDER_FACTORY_H_ | 
|  | #define COMPONENTS_VARIATIONS_SERVICE_UI_STRING_OVERRIDER_FACTORY_H_ | 
|  |  | 
|  | #include "components/variations/service/ui_string_overrider.h" | 
|  |  | 
|  | namespace chrome_variations { | 
|  |  | 
|  | // Returns an initialized UIStringOverrider. | 
|  | variations::UIStringOverrider CreateUIStringOverrider(); | 
|  |  | 
|  | }  // namespace chrome_variations | 
|  |  | 
|  | #endif  // COMPONENTS_VARIATIONS_SERVICE_UI_STRING_OVERRIDER_FACTORY_H_ | 
|  | """) | 
|  | actual = generate_ui_string_overrider._GenerateHeaderFileContent( | 
|  | self.NAMESPACE, self.OUT_HEADER) | 
|  |  | 
|  | self.assertEqual(expected, actual) | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | unittest.main() |