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.
4//
5// Unit tests for |Misspelling| object.
6
7#include "chrome/browser/spellchecker/misspelling.h"
8
9#include "base/json/json_reader.h"
10#include "base/strings/utf_string_conversions.h"
11#include "base/values.h"
12#include "testing/gtest/include/gtest/gtest.h"
13
14TEST(MisspellingTest, SerializeTest) {
15  Misspelling misspelling;
16  misspelling.context = base::ASCIIToUTF16("How doe sit know");
17  misspelling.location = 4;
18  misspelling.length = 7;
19  misspelling.timestamp = base::Time::FromJsTime(42);
20  misspelling.hash = 9001;
21  misspelling.suggestions.push_back(base::ASCIIToUTF16("does it"));
22
23  scoped_ptr<base::Value> expected(base::JSONReader::Read(
24      "{\"originalText\": \"How doe sit know\","
25      "\"misspelledStart\": 4,"
26      "\"misspelledLength\": 7,"
27      "\"timestamp\": \"42\","
28      "\"suggestionId\":\"9001\","
29      "\"suggestions\": [\"does it\"],"
30      "\"userActions\": [{\"actionType\": \"PENDING\"}]}"));
31
32  scoped_ptr<base::DictionaryValue> serialized(misspelling.Serialize());
33  EXPECT_TRUE(serialized->Equals(expected.get()));
34}
35
36TEST(MisspellingTest, GetMisspelledStringTest) {
37  Misspelling misspelling;
38  misspelling.context = base::ASCIIToUTF16("How doe sit know");
39  misspelling.location = 4;
40  misspelling.length = 7;
41  EXPECT_EQ(base::ASCIIToUTF16("doe sit"), misspelling.GetMisspelledString());
42
43  misspelling.length = 0;
44  EXPECT_EQ(base::string16(), misspelling.GetMisspelledString());
45
46  misspelling.location = misspelling.context.length();
47  misspelling.length = 7;
48  EXPECT_EQ(base::string16(), misspelling.GetMisspelledString());
49
50  misspelling.location = misspelling.context.length() + 1;
51  EXPECT_EQ(base::string16(), misspelling.GetMisspelledString());
52}
53