OLD | NEW |
(Empty) | |
| 1 // Copyright 2014 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 "mojo/public/cpp/bindings/lib/fixed_buffer.h" |
| 6 #include "mojo/public/cpp/bindings/string.h" |
| 7 #include "mojo/public/cpp/environment/environment.h" |
| 8 #include "mojo/public/interfaces/bindings/tests/test_unions.mojom.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 |
| 11 namespace mojo { |
| 12 namespace test { |
| 13 |
| 14 TEST(UnionTest, PlainOldDataGetterSetter) { |
| 15 PodUnionPtr pod(PodUnion::New()); |
| 16 |
| 17 pod->set_f_int8(10); |
| 18 EXPECT_EQ(10, pod->get_f_int8()); |
| 19 EXPECT_TRUE(pod->is_f_int8()); |
| 20 EXPECT_FALSE(pod->is_f_int8_other()); |
| 21 EXPECT_EQ(pod->which(), PodUnion::Tag::F_INT8); |
| 22 |
| 23 pod->set_f_uint8(11); |
| 24 EXPECT_EQ(11, pod->get_f_uint8()); |
| 25 EXPECT_TRUE(pod->is_f_uint8()); |
| 26 EXPECT_FALSE(pod->is_f_int8()); |
| 27 EXPECT_EQ(pod->which(), PodUnion::Tag::F_UINT8); |
| 28 |
| 29 pod->set_f_int16(12); |
| 30 EXPECT_EQ(12, pod->get_f_int16()); |
| 31 EXPECT_TRUE(pod->is_f_int16()); |
| 32 EXPECT_EQ(pod->which(), PodUnion::Tag::F_INT16); |
| 33 |
| 34 pod->set_f_uint16(13); |
| 35 EXPECT_EQ(13, pod->get_f_uint16()); |
| 36 EXPECT_TRUE(pod->is_f_uint16()); |
| 37 EXPECT_EQ(pod->which(), PodUnion::Tag::F_UINT16); |
| 38 |
| 39 pod->set_f_int32(14); |
| 40 EXPECT_EQ(14, pod->get_f_int32()); |
| 41 EXPECT_TRUE(pod->is_f_int32()); |
| 42 EXPECT_EQ(pod->which(), PodUnion::Tag::F_INT32); |
| 43 |
| 44 pod->set_f_uint32(static_cast<uint32_t>(15)); |
| 45 EXPECT_EQ(static_cast<uint32_t>(15), pod->get_f_uint32()); |
| 46 EXPECT_TRUE(pod->is_f_uint32()); |
| 47 EXPECT_EQ(pod->which(), PodUnion::Tag::F_UINT32); |
| 48 |
| 49 pod->set_f_int64(16); |
| 50 EXPECT_EQ(16, pod->get_f_int64()); |
| 51 EXPECT_TRUE(pod->is_f_int64()); |
| 52 EXPECT_EQ(pod->which(), PodUnion::Tag::F_INT64); |
| 53 |
| 54 pod->set_f_uint64(static_cast<uint64_t>(17)); |
| 55 EXPECT_EQ(static_cast<uint64_t>(17), pod->get_f_uint64()); |
| 56 EXPECT_TRUE(pod->is_f_uint64()); |
| 57 EXPECT_EQ(pod->which(), PodUnion::Tag::F_UINT64); |
| 58 |
| 59 pod->set_f_float(1.5); |
| 60 EXPECT_EQ(1.5, pod->get_f_float()); |
| 61 EXPECT_TRUE(pod->is_f_float()); |
| 62 EXPECT_EQ(pod->which(), PodUnion::Tag::F_FLOAT); |
| 63 |
| 64 pod->set_f_double(1.9); |
| 65 EXPECT_EQ(1.9, pod->get_f_double()); |
| 66 EXPECT_TRUE(pod->is_f_double()); |
| 67 EXPECT_EQ(pod->which(), PodUnion::Tag::F_DOUBLE); |
| 68 |
| 69 pod->set_f_bool(true); |
| 70 EXPECT_TRUE(pod->get_f_bool()); |
| 71 pod->set_f_bool(false); |
| 72 EXPECT_FALSE(pod->get_f_bool()); |
| 73 EXPECT_TRUE(pod->is_f_bool()); |
| 74 EXPECT_EQ(pod->which(), PodUnion::Tag::F_BOOL); |
| 75 } |
| 76 |
| 77 TEST(UnionTest, PodEquals) { |
| 78 PodUnionPtr pod1(PodUnion::New()); |
| 79 PodUnionPtr pod2(PodUnion::New()); |
| 80 |
| 81 pod1->set_f_int8(10); |
| 82 pod2->set_f_int8(10); |
| 83 EXPECT_TRUE(pod1.Equals(pod2)); |
| 84 |
| 85 pod2->set_f_int8(11); |
| 86 EXPECT_FALSE(pod1.Equals(pod2)); |
| 87 |
| 88 pod2->set_f_int8_other(10); |
| 89 EXPECT_FALSE(pod1.Equals(pod2)); |
| 90 } |
| 91 |
| 92 TEST(UnionTest, PodClone) { |
| 93 PodUnionPtr pod(PodUnion::New()); |
| 94 pod->set_f_int8(10); |
| 95 |
| 96 PodUnionPtr pod_clone = pod.Clone(); |
| 97 EXPECT_EQ(10, pod_clone->get_f_int8()); |
| 98 EXPECT_TRUE(pod_clone->is_f_int8()); |
| 99 EXPECT_EQ(pod_clone->which(), PodUnion::Tag::F_INT8); |
| 100 } |
| 101 |
| 102 TEST(UnionTest, SerializationPod) { |
| 103 PodUnionPtr pod1(PodUnion::New()); |
| 104 pod1->set_f_int8(10); |
| 105 |
| 106 size_t size = GetSerializedSize_(pod1); |
| 107 EXPECT_EQ(16U, size); |
| 108 |
| 109 mojo::internal::FixedBuffer buf(size); |
| 110 internal::PodUnion_Data* data; |
| 111 Serialize_(pod1.Pass(), &buf, &data); |
| 112 |
| 113 PodUnionPtr pod2; |
| 114 Deserialize_(data, &pod2); |
| 115 |
| 116 EXPECT_EQ(10, pod2->get_f_int8()); |
| 117 EXPECT_TRUE(pod2->is_f_int8()); |
| 118 EXPECT_EQ(pod2->which(), PodUnion::Tag::F_INT8); |
| 119 } |
| 120 |
| 121 TEST(UnionTest, StringGetterSetter) { |
| 122 PodUnionPtr pod(PodUnion::New()); |
| 123 |
| 124 String hello("hello world"); |
| 125 pod->set_f_string(hello); |
| 126 EXPECT_EQ(hello, pod->get_f_string()); |
| 127 EXPECT_TRUE(pod->is_f_string()); |
| 128 EXPECT_EQ(pod->which(), PodUnion::Tag::F_STRING); |
| 129 } |
| 130 |
| 131 TEST(UnionTest, StringEquals) { |
| 132 PodUnionPtr pod1(PodUnion::New()); |
| 133 PodUnionPtr pod2(PodUnion::New()); |
| 134 |
| 135 pod1->set_f_string("hello world"); |
| 136 pod2->set_f_string("hello world"); |
| 137 EXPECT_TRUE(pod1.Equals(pod2)); |
| 138 |
| 139 pod2->set_f_string("hello universe"); |
| 140 EXPECT_FALSE(pod1.Equals(pod2)); |
| 141 } |
| 142 |
| 143 TEST(UnionTest, StringClone) { |
| 144 PodUnionPtr pod(PodUnion::New()); |
| 145 |
| 146 String hello("hello world"); |
| 147 pod->set_f_string(hello); |
| 148 PodUnionPtr pod_clone = pod.Clone(); |
| 149 EXPECT_EQ(hello, pod_clone->get_f_string()); |
| 150 EXPECT_TRUE(pod_clone->is_f_string()); |
| 151 EXPECT_EQ(pod_clone->which(), PodUnion::Tag::F_STRING); |
| 152 } |
| 153 |
| 154 TEST(UnionTest, StringSerialization) { |
| 155 PodUnionPtr pod1(PodUnion::New()); |
| 156 |
| 157 String hello("hello world"); |
| 158 pod1->set_f_string(hello); |
| 159 |
| 160 size_t size = GetSerializedSize_(pod1); |
| 161 mojo::internal::FixedBuffer buf(size); |
| 162 internal::PodUnion_Data* data; |
| 163 Serialize_(pod1.Pass(), &buf, &data); |
| 164 |
| 165 PodUnionPtr pod2; |
| 166 Deserialize_(data, &pod2); |
| 167 EXPECT_EQ(hello, pod2->get_f_string()); |
| 168 EXPECT_TRUE(pod2->is_f_string()); |
| 169 EXPECT_EQ(pod2->which(), PodUnion::Tag::F_STRING); |
| 170 } |
| 171 } // namespace test |
| 172 } // namespace mojo |
OLD | NEW |