1 // Copyright (c) 2010 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
5 #include "testing/gtest/include/gtest/gtest.h"
6
7 #include "chrome/browser/importer/firefox_importer_utils.h"
8
9 struct GetPrefsJsValueCase {
10 std::string prefs_content;
11 std::string pref_name;
12 std::string pref_value;
13 } GetPrefsJsValueCases[] = {
14 // Basic case. Single pref, unquoted value.
15 { "user_pref(\"foo.bar\", 1);", "foo.bar", "1" },
16 // Value is quoted. Quotes should be stripped.
17 { "user_pref(\"foo.bar\", \"1\");", "foo.bar", "1" },
18 // Value has parens.
19 { "user_pref(\"foo.bar\", \"Value (detail)\");",
20 "foo.bar", "Value (detail)" },
21 // Multi-line case.
22 { "user_pref(\"foo.bar\", 1);\n"
23 "user_pref(\"foo.baz\", 2);\n"
24 "user_pref(\"foo.bag\", 3);",
25 "foo.baz", "2" },
26 // Malformed content.
27 { "user_pref(\"foo.bar\", 1);\n"
28 "user_pref(\"foo.baz\", 2;\n"
29 "user_pref(\"foo.bag\", 3);",
30 "foo.baz", "" },
31 // Malformed content.
32 { "uesr_pref(\"foo.bar\", 1);", "foo.bar", "" },
33 };
34
TEST(FirefoxImporterUtilsTest,GetPrefsJsValue)35 TEST(FirefoxImporterUtilsTest, GetPrefsJsValue) {
36 for (size_t i = 0; i < arraysize(GetPrefsJsValueCases); ++i) {
37 EXPECT_EQ(
38 GetPrefsJsValueCases[i].pref_value,
39 GetPrefsJsValue(GetPrefsJsValueCases[i].prefs_content,
40 GetPrefsJsValueCases[i].pref_name));
41 }
42 }
43