#!/usr/bin/env python
# Copyright 2014 The Chromium Authors
# 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 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);
}
} // 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()