1 // Copyright (c) 2012 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 // TODO(nona): Add more tests.
6 #include "chromeos/dbus/ibus/ibus_text.h"
10 #include "base/compiler_specific.h"
11 #include "base/logging.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "chromeos/dbus/ibus/ibus_object.h"
14 #include "dbus/message.h"
15 #include "testing/gmock/include/gmock/gmock.h"
16 #include "testing/gtest/include/gtest/gtest.h"
20 TEST(IBusTextTest
, WriteReadTest
) {
21 const char kSampleText
[] = "Sample Text";
22 const char kAnnotation
[] = "Annotation";
23 const char kDescriptionTitle
[] = "Description Title";
24 const char kDescriptionBody
[] = "Description Body";
25 const IBusText::UnderlineAttribute kSampleUnderlineAttribute1
= {
26 IBusText::IBUS_TEXT_UNDERLINE_SINGLE
, 10, 20};
28 const IBusText::UnderlineAttribute kSampleUnderlineAttribute2
= {
29 IBusText::IBUS_TEXT_UNDERLINE_DOUBLE
, 11, 21};
31 const IBusText::UnderlineAttribute kSampleUnderlineAttribute3
= {
32 IBusText::IBUS_TEXT_UNDERLINE_ERROR
, 12, 22};
34 const IBusText::SelectionAttribute kSampleSelectionAttribute
= {30, 40};
38 text
.set_text(kSampleText
);
39 text
.set_annotation(kAnnotation
);
40 text
.set_description_title(kDescriptionTitle
);
41 text
.set_description_body(kDescriptionBody
);
42 std::vector
<IBusText::UnderlineAttribute
>* underline_attributes
=
43 text
.mutable_underline_attributes();
44 underline_attributes
->push_back(kSampleUnderlineAttribute1
);
45 underline_attributes
->push_back(kSampleUnderlineAttribute2
);
46 underline_attributes
->push_back(kSampleUnderlineAttribute3
);
47 std::vector
<IBusText::SelectionAttribute
>* selection_attributes
=
48 text
.mutable_selection_attributes();
49 selection_attributes
->push_back(kSampleSelectionAttribute
);
51 // Write to Response object.
52 scoped_ptr
<dbus::Response
> response(dbus::Response::CreateEmpty());
53 dbus::MessageWriter
writer(response
.get());
54 AppendIBusText(text
, &writer
);
56 // Read from Response object.
57 dbus::MessageReader
reader(response
.get());
58 IBusText expected_text
;
59 ASSERT_TRUE(PopIBusText(&reader
, &expected_text
));
60 EXPECT_EQ(kSampleText
, expected_text
.text());
61 EXPECT_EQ(kAnnotation
, expected_text
.annotation());
62 EXPECT_EQ(kDescriptionTitle
, expected_text
.description_title());
63 EXPECT_EQ(kDescriptionBody
, expected_text
.description_body());
64 EXPECT_EQ(3U, expected_text
.underline_attributes().size());
65 EXPECT_EQ(1U, expected_text
.selection_attributes().size());
68 TEST(IBusTextTest
, StringAsIBusTextTest
) {
69 const char kSampleText
[] = "Sample Text";
71 // Write to Response object.
72 scoped_ptr
<dbus::Response
> response(dbus::Response::CreateEmpty());
73 dbus::MessageWriter
writer(response
.get());
74 AppendStringAsIBusText(kSampleText
, &writer
);
76 // Read from Response object.
77 dbus::MessageReader
reader(response
.get());
79 ASSERT_TRUE(PopIBusText(&reader
, &ibus_text
));
80 EXPECT_EQ(kSampleText
, ibus_text
.text());
81 EXPECT_TRUE(ibus_text
.underline_attributes().empty());
82 EXPECT_TRUE(ibus_text
.selection_attributes().empty());
85 TEST(IBusTextTest
, PopStringFromIBusTextTest
) {
86 const char kSampleText
[] = "Sample Text";
88 // Write to Response object.
89 scoped_ptr
<dbus::Response
> response(dbus::Response::CreateEmpty());
90 dbus::MessageWriter
writer(response
.get());
91 AppendStringAsIBusText(kSampleText
, &writer
);
93 // Read from Response object.
94 dbus::MessageReader
reader(response
.get());
96 ASSERT_TRUE(PopStringFromIBusText(&reader
, &result
));
97 EXPECT_EQ(kSampleText
, result
);
100 } // namespace chromeos