#!/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()