| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 // TODO(nona): Add more tests. | 4 // TODO(nona): Add more tests. | 
| 5 | 5 | 
| 6 #include "chromeos/dbus/ibus/ibus_text.h" | 6 #include "chromeos/dbus/ibus/ibus_text.h" | 
| 7 | 7 | 
| 8 #include <string> | 8 #include <string> | 
| 9 | 9 | 
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" | 
| 11 #include "base/logging.h" | 11 #include "base/logging.h" | 
| 12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" | 
| 13 #include "chromeos/dbus/ibus/ibus_object.h" | 13 #include "chromeos/dbus/ibus/ibus_object.h" | 
| 14 #include "dbus/message.h" | 14 #include "dbus/message.h" | 
| 15 #include "testing/gmock/include/gmock/gmock.h" | 15 #include "testing/gmock/include/gmock/gmock.h" | 
| 16 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" | 
| 17 | 17 | 
| 18 namespace chromeos { | 18 namespace chromeos { | 
| 19 // TODO(nona): Remove ibus namespace after complete libibus removal. | 19 // TODO(nona): Remove ibus namespace after complete libibus removal. | 
| 20 namespace ibus { | 20 namespace ibus { | 
| 21 | 21 | 
| 22 TEST(IBusTextTest, WriteReadTest) { | 22 TEST(IBusTextTest, WriteReadTest) { | 
| 23   const char kSampleText[] = "Sample Text"; | 23   const char kSampleText[] = "Sample Text"; | 
|  | 24   const char kAnnotation[] = "Annotation"; | 
|  | 25   const char kDescription[] = "Description"; | 
| 24   const IBusText::UnderlineAttribute kSampleUnderlineAttribute1 = { | 26   const IBusText::UnderlineAttribute kSampleUnderlineAttribute1 = { | 
| 25     IBusText::IBUS_TEXT_UNDERLINE_SINGLE, 10, 20}; | 27     IBusText::IBUS_TEXT_UNDERLINE_SINGLE, 10, 20}; | 
| 26 | 28 | 
| 27   const IBusText::UnderlineAttribute kSampleUnderlineAttribute2 = { | 29   const IBusText::UnderlineAttribute kSampleUnderlineAttribute2 = { | 
| 28     IBusText::IBUS_TEXT_UNDERLINE_DOUBLE, 11, 21}; | 30     IBusText::IBUS_TEXT_UNDERLINE_DOUBLE, 11, 21}; | 
| 29 | 31 | 
| 30   const IBusText::UnderlineAttribute kSampleUnderlineAttribute3 = { | 32   const IBusText::UnderlineAttribute kSampleUnderlineAttribute3 = { | 
| 31     IBusText::IBUS_TEXT_UNDERLINE_ERROR, 12, 22}; | 33     IBusText::IBUS_TEXT_UNDERLINE_ERROR, 12, 22}; | 
| 32 | 34 | 
| 33   const IBusText::SelectionAttribute kSampleSelectionAttribute = {30, 40}; | 35   const IBusText::SelectionAttribute kSampleSelectionAttribute = {30, 40}; | 
| 34 | 36 | 
| 35   // Make IBusText | 37   // Make IBusText | 
| 36   IBusText text; | 38   IBusText text; | 
| 37   text.set_text(kSampleText); | 39   text.set_text(kSampleText); | 
|  | 40   text.set_annotation(kAnnotation); | 
|  | 41   text.set_description(kDescription); | 
| 38   std::vector<IBusText::UnderlineAttribute>* underline_attributes = | 42   std::vector<IBusText::UnderlineAttribute>* underline_attributes = | 
| 39       text.mutable_underline_attributes(); | 43       text.mutable_underline_attributes(); | 
| 40   underline_attributes->push_back(kSampleUnderlineAttribute1); | 44   underline_attributes->push_back(kSampleUnderlineAttribute1); | 
| 41   underline_attributes->push_back(kSampleUnderlineAttribute2); | 45   underline_attributes->push_back(kSampleUnderlineAttribute2); | 
| 42   underline_attributes->push_back(kSampleUnderlineAttribute3); | 46   underline_attributes->push_back(kSampleUnderlineAttribute3); | 
| 43   std::vector<IBusText::SelectionAttribute>* selection_attributes = | 47   std::vector<IBusText::SelectionAttribute>* selection_attributes = | 
| 44       text.mutable_selection_attributes(); | 48       text.mutable_selection_attributes(); | 
| 45   selection_attributes->push_back(kSampleSelectionAttribute); | 49   selection_attributes->push_back(kSampleSelectionAttribute); | 
| 46 | 50 | 
| 47   // Write to Response object. | 51   // Write to Response object. | 
| 48   scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty()); | 52   scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty()); | 
| 49   dbus::MessageWriter writer(response.get()); | 53   dbus::MessageWriter writer(response.get()); | 
| 50   AppendIBusText(text, &writer); | 54   AppendIBusText(text, &writer); | 
| 51 | 55 | 
| 52   // Read from Response object. | 56   // Read from Response object. | 
| 53   dbus::MessageReader reader(response.get()); | 57   dbus::MessageReader reader(response.get()); | 
| 54   IBusText expected_text; | 58   IBusText expected_text; | 
| 55   ASSERT_TRUE(PopIBusText(&reader, &expected_text)); | 59   ASSERT_TRUE(PopIBusText(&reader, &expected_text)); | 
| 56   EXPECT_EQ(expected_text.text(), kSampleText); | 60   EXPECT_EQ(kSampleText, expected_text.text()); | 
|  | 61   EXPECT_EQ(kAnnotation, expected_text.annotation()); | 
|  | 62   EXPECT_EQ(kDescription, expected_text.description()); | 
| 57   EXPECT_EQ(3U, expected_text.underline_attributes().size()); | 63   EXPECT_EQ(3U, expected_text.underline_attributes().size()); | 
| 58   EXPECT_EQ(1U, expected_text.selection_attributes().size()); | 64   EXPECT_EQ(1U, expected_text.selection_attributes().size()); | 
| 59 } | 65 } | 
| 60 | 66 | 
| 61 TEST(IBusTextTest, StringAsIBusTextTest) { | 67 TEST(IBusTextTest, StringAsIBusTextTest) { | 
| 62   const char kSampleText[] = "Sample Text"; | 68   const char kSampleText[] = "Sample Text"; | 
| 63 | 69 | 
| 64   // Write to Response object. | 70   // Write to Response object. | 
| 65   scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty()); | 71   scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty()); | 
| 66   dbus::MessageWriter writer(response.get()); | 72   dbus::MessageWriter writer(response.get()); | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
| 83   dbus::MessageWriter writer(response.get()); | 89   dbus::MessageWriter writer(response.get()); | 
| 84   AppendStringAsIBusText(kSampleText, &writer); | 90   AppendStringAsIBusText(kSampleText, &writer); | 
| 85 | 91 | 
| 86   // Read from Response object. | 92   // Read from Response object. | 
| 87   dbus::MessageReader reader(response.get()); | 93   dbus::MessageReader reader(response.get()); | 
| 88   std::string result; | 94   std::string result; | 
| 89   ASSERT_TRUE(PopStringFromIBusText(&reader, &result)); | 95   ASSERT_TRUE(PopStringFromIBusText(&reader, &result)); | 
| 90   EXPECT_EQ(kSampleText, result); | 96   EXPECT_EQ(kSampleText, result); | 
| 91 } | 97 } | 
| 92 | 98 | 
| 93 TEST(IBusTextTest, ReadAnnotationFieldTest) { |  | 
| 94   const char kSampleText[] = "Sample Text"; |  | 
| 95   const char kSampleAnnotationText[] = "Sample Annotation"; |  | 
| 96 |  | 
| 97   // Create IBusLookupTable. |  | 
| 98   scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty()); |  | 
| 99   dbus::MessageWriter writer(response.get()); |  | 
| 100   dbus::MessageWriter top_variant_writer(NULL); |  | 
| 101   writer.OpenVariant("(sa{sv}sv)", &top_variant_writer); |  | 
| 102   dbus::MessageWriter contents_writer(NULL); |  | 
| 103   top_variant_writer.OpenStruct(&contents_writer); |  | 
| 104   contents_writer.AppendString("IBusText"); |  | 
| 105 |  | 
| 106   // Write attachment field. |  | 
| 107   dbus::MessageWriter attachment_array_writer(NULL); |  | 
| 108   contents_writer.OpenArray("{sv}", &attachment_array_writer); |  | 
| 109   dbus::MessageWriter entry_writer(NULL); |  | 
| 110   attachment_array_writer.OpenDictEntry(&entry_writer); |  | 
| 111   entry_writer.AppendString("annotation"); |  | 
| 112   dbus::MessageWriter variant_writer(NULL); |  | 
| 113   entry_writer.OpenVariant("v", &variant_writer); |  | 
| 114   dbus::MessageWriter sub_variant_writer(NULL); |  | 
| 115   variant_writer.OpenVariant("s", &sub_variant_writer); |  | 
| 116   sub_variant_writer.AppendString(kSampleAnnotationText); |  | 
| 117 |  | 
| 118   // Close attachment field container. |  | 
| 119   variant_writer.CloseContainer(&sub_variant_writer); |  | 
| 120   entry_writer.CloseContainer(&variant_writer); |  | 
| 121   attachment_array_writer.CloseContainer(&entry_writer); |  | 
| 122   contents_writer.CloseContainer(&attachment_array_writer); |  | 
| 123 |  | 
| 124   // Write IBusText contents. |  | 
| 125   contents_writer.AppendString(kSampleText); |  | 
| 126   IBusObjectWriter ibus_attr_list_writer("IBusAttrList", "av", |  | 
| 127                                          &contents_writer); |  | 
| 128   dbus::MessageWriter attribute_array_writer(NULL); |  | 
| 129   ibus_attr_list_writer.OpenArray("v", &attribute_array_writer); |  | 
| 130   ibus_attr_list_writer.CloseContainer(&attribute_array_writer); |  | 
| 131   ibus_attr_list_writer.CloseAll(); |  | 
| 132 |  | 
| 133   // Close all containers. |  | 
| 134   top_variant_writer.CloseContainer(&contents_writer); |  | 
| 135   writer.CloseContainer(&top_variant_writer); |  | 
| 136 |  | 
| 137   // Read IBusText. |  | 
| 138   IBusText ibus_text; |  | 
| 139   dbus::MessageReader reader(response.get()); |  | 
| 140   PopIBusText(&reader, &ibus_text); |  | 
| 141 |  | 
| 142   // Check values. |  | 
| 143   EXPECT_EQ(kSampleText, ibus_text.text()); |  | 
| 144   EXPECT_EQ(kSampleAnnotationText, ibus_text.annotation()); |  | 
| 145 } |  | 
| 146 |  | 
| 147 TEST(IBusTextTest, ReadDescriptionFieldTest) { |  | 
| 148   const char kSampleText[] = "Sample Text"; |  | 
| 149   const char kSampleDescriptionText[] = "Sample Description"; |  | 
| 150 |  | 
| 151   // Create IBusLookupTable. |  | 
| 152   scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty()); |  | 
| 153   dbus::MessageWriter writer(response.get()); |  | 
| 154   dbus::MessageWriter top_variant_writer(NULL); |  | 
| 155   writer.OpenVariant("(sa{sv}sv)", &top_variant_writer); |  | 
| 156   dbus::MessageWriter contents_writer(NULL); |  | 
| 157   top_variant_writer.OpenStruct(&contents_writer); |  | 
| 158   contents_writer.AppendString("IBusText"); |  | 
| 159 |  | 
| 160   // Write attachment field. |  | 
| 161   dbus::MessageWriter attachment_array_writer(NULL); |  | 
| 162   contents_writer.OpenArray("{sv}", &attachment_array_writer); |  | 
| 163   dbus::MessageWriter entry_writer(NULL); |  | 
| 164   attachment_array_writer.OpenDictEntry(&entry_writer); |  | 
| 165   entry_writer.AppendString("description"); |  | 
| 166   dbus::MessageWriter variant_writer(NULL); |  | 
| 167   entry_writer.OpenVariant("v", &variant_writer); |  | 
| 168   dbus::MessageWriter sub_variant_writer(NULL); |  | 
| 169   variant_writer.OpenVariant("s", &sub_variant_writer); |  | 
| 170   sub_variant_writer.AppendString(kSampleDescriptionText); |  | 
| 171 |  | 
| 172   // Close attachment field container. |  | 
| 173   variant_writer.CloseContainer(&sub_variant_writer); |  | 
| 174   entry_writer.CloseContainer(&variant_writer); |  | 
| 175   attachment_array_writer.CloseContainer(&entry_writer); |  | 
| 176   contents_writer.CloseContainer(&attachment_array_writer); |  | 
| 177 |  | 
| 178   // Write IBusText contents. |  | 
| 179   contents_writer.AppendString(kSampleText); |  | 
| 180   IBusObjectWriter ibus_attr_list_writer("IBusAttrList", "av", |  | 
| 181                                          &contents_writer); |  | 
| 182   dbus::MessageWriter attribute_array_writer(NULL); |  | 
| 183   ibus_attr_list_writer.OpenArray("v", &attribute_array_writer); |  | 
| 184   ibus_attr_list_writer.CloseContainer(&attribute_array_writer); |  | 
| 185   ibus_attr_list_writer.CloseAll(); |  | 
| 186 |  | 
| 187   // Close all containers. |  | 
| 188   top_variant_writer.CloseContainer(&contents_writer); |  | 
| 189   writer.CloseContainer(&top_variant_writer); |  | 
| 190 |  | 
| 191   // Read IBusText. |  | 
| 192   IBusText ibus_text; |  | 
| 193   dbus::MessageReader reader(response.get()); |  | 
| 194   PopIBusText(&reader, &ibus_text); |  | 
| 195 |  | 
| 196   // Check values. |  | 
| 197   EXPECT_EQ(kSampleText, ibus_text.text()); |  | 
| 198   EXPECT_EQ(kSampleDescriptionText, ibus_text.description()); |  | 
| 199 } |  | 
| 200 |  | 
| 201 }  // namespace ibus | 99 }  // namespace ibus | 
| 202 }  // namespace chromeos | 100 }  // namespace chromeos | 
| OLD | NEW | 
|---|