Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / chrome / browser / spellchecker / spellcheck_action_unittest.cc
blobc79e324234840b32d1af4ea76bbfc9bbd7d3bd81
1 // Copyright (c) 2013 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.
5 #include <string>
7 #include "base/json/json_reader.h"
8 #include "base/strings/utf_string_conversions.h"
9 #include "base/values.h"
10 #include "chrome/browser/spellchecker/spellcheck_action.h"
11 #include "testing/gtest/include/gtest/gtest.h"
13 TEST(SpellcheckActionTest, FinalActionsTest) {
14 static const SpellcheckAction::SpellcheckActionType kFinalActions[] = {
15 SpellcheckAction::TYPE_ADD_TO_DICT,
16 SpellcheckAction::TYPE_IGNORE,
17 SpellcheckAction::TYPE_IN_DICTIONARY,
18 SpellcheckAction::TYPE_MANUALLY_CORRECTED,
19 SpellcheckAction::TYPE_NO_ACTION,
20 SpellcheckAction::TYPE_SELECT,
22 SpellcheckAction action;
23 for (size_t i = 0; i < arraysize(kFinalActions); ++i) {
24 action.set_type(kFinalActions[i]);
25 ASSERT_TRUE(action.IsFinal());
29 TEST(SpellcheckActionTest, PendingActionsTest) {
30 static const SpellcheckAction::SpellcheckActionType kPendingActions[] = {
31 SpellcheckAction::TYPE_PENDING,
32 SpellcheckAction::TYPE_PENDING_IGNORE,
34 SpellcheckAction action;
35 for (size_t i = 0; i < arraysize(kPendingActions); ++i) {
36 action.set_type(kPendingActions[i]);
37 ASSERT_FALSE(action.IsFinal());
41 TEST(SpellcheckActionTest, FinalizeTest) {
42 SpellcheckAction action;
43 action.set_type(SpellcheckAction::TYPE_PENDING);
44 action.Finalize();
45 ASSERT_EQ(SpellcheckAction::TYPE_NO_ACTION, action.type());
47 action.set_type(SpellcheckAction::TYPE_PENDING_IGNORE);
48 action.Finalize();
49 ASSERT_EQ(SpellcheckAction::TYPE_IGNORE, action.type());
52 TEST(SpellcheckActionTest, SerializeTest) {
53 static const size_t kNumTestCases = 7;
54 static const struct {
55 SpellcheckAction action;
56 std::string expected;
57 } kTestCases[] = {
58 { SpellcheckAction(
59 SpellcheckAction::TYPE_ADD_TO_DICT, -1,
60 base::ASCIIToUTF16("nothing")),
61 "{\"actionType\": \"ADD_TO_DICT\"}" },
62 { SpellcheckAction(
63 SpellcheckAction::TYPE_IGNORE, -1, base::ASCIIToUTF16("nothing")),
64 "{\"actionType\": \"IGNORE\"}" },
65 { SpellcheckAction(
66 SpellcheckAction::TYPE_IN_DICTIONARY, -1,
67 base::ASCIIToUTF16("nothing")),
68 "{\"actionType\": \"IN_DICTIONARY\"}" },
69 { SpellcheckAction(
70 SpellcheckAction::TYPE_MANUALLY_CORRECTED, -1,
71 base::ASCIIToUTF16("hello")),
72 "{\"actionTargetValue\": \"hello\","
73 "\"actionType\": \"MANUALLY_CORRECTED\"}" },
74 { SpellcheckAction(
75 SpellcheckAction::TYPE_NO_ACTION, -1, base::ASCIIToUTF16("nothing")),
76 "{\"actionType\": \"NO_ACTION\"}" },
77 { SpellcheckAction(
78 SpellcheckAction::TYPE_PENDING, -1, base::ASCIIToUTF16("nothing")),
79 "{\"actionType\": \"PENDING\"}" },
80 { SpellcheckAction(
81 SpellcheckAction::TYPE_PENDING_IGNORE, -1,
82 base::ASCIIToUTF16("nothing")),
83 "{\"actionType\": \"PENDING\"}" },
84 { SpellcheckAction(
85 SpellcheckAction::TYPE_SELECT, 42, base::ASCIIToUTF16("nothing")),
86 "{\"actionTargetIndex\": 42, \"actionType\": \"SELECT\"}" },
88 for (size_t i = 0; i < kNumTestCases; ++i) {
89 scoped_ptr<base::DictionaryValue> serialized(
90 kTestCases[i].action.Serialize());
91 scoped_ptr<base::Value> expected =
92 base::JSONReader::Read(kTestCases[i].expected);
93 EXPECT_TRUE(serialized->Equals(expected.get()));