1645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// Copyright 2013 The Chromium Authors. All rights reserved.
2645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// Use of this source code is governed by a BSD-style license that can be
3645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// found in the LICENSE file.
4645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
5645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include <stddef.h>
6645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include <stdint.h>
7645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
8645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include "mojo/public/interfaces/bindings/tests/test_structs.mojom.h"
9645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include "testing/gtest/include/gtest/gtest.h"
10645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
11645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chaveznamespace mojo {
12645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chaveznamespace {
13645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
14645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezstruct RedmondRect {
15645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  int32_t left;
16645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  int32_t top;
17645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  int32_t right;
18645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  int32_t bottom;
19645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez};
20645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
21645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezstruct RedmondNamedRegion {
22645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  std::string name;
23645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  std::vector<RedmondRect> rects;
24645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez};
25645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
26645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezbool AreEqualRectArrays(const Array<test::RectPtr>& rects1,
27645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez                        const Array<test::RectPtr>& rects2) {
28645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  if (rects1.size() != rects2.size())
29645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    return false;
30645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
31645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  for (size_t i = 0; i < rects1.size(); ++i) {
32645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    if (rects1[i]->x != rects2[i]->x || rects1[i]->y != rects2[i]->y ||
33645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez        rects1[i]->width != rects2[i]->width ||
34645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez        rects1[i]->height != rects2[i]->height) {
35645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez      return false;
36645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    }
37645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  }
38645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
39645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  return true;
40645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez}
41645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
42645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez}  // namespace
43645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
44645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chaveztemplate <>
45645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezstruct TypeConverter<test::RectPtr, RedmondRect> {
46645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  static test::RectPtr Convert(const RedmondRect& input) {
47645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    test::RectPtr rect(test::Rect::New());
48645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    rect->x = input.left;
49645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    rect->y = input.top;
50645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    rect->width = input.right - input.left;
51645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    rect->height = input.bottom - input.top;
52645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    return rect;
53645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  }
54645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez};
55645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
56645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chaveztemplate <>
57645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezstruct TypeConverter<RedmondRect, test::RectPtr> {
58645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  static RedmondRect Convert(const test::RectPtr& input) {
59645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    RedmondRect rect;
60645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    rect.left = input->x;
61645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    rect.top = input->y;
62645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    rect.right = input->x + input->width;
63645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    rect.bottom = input->y + input->height;
64645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    return rect;
65645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  }
66645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez};
67645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
68645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chaveztemplate <>
69645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezstruct TypeConverter<test::NamedRegionPtr, RedmondNamedRegion> {
70645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  static test::NamedRegionPtr Convert(const RedmondNamedRegion& input) {
71645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    test::NamedRegionPtr region(test::NamedRegion::New());
72645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    region->name.emplace(input.name);
73645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    region->rects = Array<test::RectPtr>::From(input.rects).PassStorage();
74645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    return region;
75645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  }
76645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez};
77645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
78645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chaveztemplate <>
79645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezstruct TypeConverter<RedmondNamedRegion, test::NamedRegionPtr> {
80645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  static RedmondNamedRegion Convert(const test::NamedRegionPtr& input) {
81645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    RedmondNamedRegion region;
82645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    if (input->name)
83645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez      region.name = input->name.value();
84645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    if (input->rects) {
85645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez      region.rects.reserve(input->rects->size());
86645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez      for (const auto& element : *input->rects)
87645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez        region.rects.push_back(element.To<RedmondRect>());
88645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    }
89645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    return region;
90645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  }
91645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez};
92645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
93645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chaveznamespace test {
94645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chaveznamespace {
95645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
96645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezTEST(TypeConversionTest, String) {
97645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  const char kText[6] = "hello";
98645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
99645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  String a = std::string(kText);
100645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  String b(kText);
101645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  String c(static_cast<const char*>(kText));
102645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
103645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_EQ(std::string(kText), a.To<std::string>());
104645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_EQ(std::string(kText), b.To<std::string>());
105645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_EQ(std::string(kText), c.To<std::string>());
106645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez}
107645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
108645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezTEST(TypeConversionTest, String_Null) {
109645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  String a(nullptr);
110645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_TRUE(a.is_null());
111645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_EQ(std::string(), a.To<std::string>());
112645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
113645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  String b = String::From(static_cast<const char*>(nullptr));
114645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_TRUE(b.is_null());
115645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez}
116645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
117645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezTEST(TypeConversionTest, String_Empty) {
118645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  String a = "";
119645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_EQ(std::string(), a.To<std::string>());
120645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
121645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  String b = std::string();
122645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_FALSE(b.is_null());
123645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_EQ(std::string(), b.To<std::string>());
124645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez}
125645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
126645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezTEST(TypeConversionTest, StringWithEmbeddedNull) {
127645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  const std::string kText("hel\0lo", 6);
128645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
129645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  String a(kText);
130645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_EQ(kText, a.To<std::string>());
131645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
132645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  // Expect truncation:
133645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  String b(kText.c_str());
134645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_EQ(std::string("hel"), b.To<std::string>());
135645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez}
136645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
137645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezTEST(TypeConversionTest, CustomTypeConverter) {
138645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  RectPtr rect(Rect::New());
139645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  rect->x = 10;
140645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  rect->y = 20;
141645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  rect->width = 50;
142645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  rect->height = 45;
143645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
144645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  RedmondRect rr = rect.To<RedmondRect>();
145645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_EQ(10, rr.left);
146645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_EQ(20, rr.top);
147645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_EQ(60, rr.right);
148645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_EQ(65, rr.bottom);
149645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
150645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  RectPtr rect2(Rect::From(rr));
151645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_EQ(rect->x, rect2->x);
152645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_EQ(rect->y, rect2->y);
153645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_EQ(rect->width, rect2->width);
154645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_EQ(rect->height, rect2->height);
155645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez}
156645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
157645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezTEST(TypeConversionTest, CustomTypeConverter_Array_Null) {
158645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  Array<RectPtr> rects;
159645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
160645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  std::vector<RedmondRect> redmond_rects = rects.To<std::vector<RedmondRect>>();
161645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
162645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_TRUE(redmond_rects.empty());
163645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez}
164645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
165645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezTEST(TypeConversionTest, CustomTypeConverter_Array) {
166645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  const RedmondRect kBase = {10, 20, 30, 40};
167645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
168645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  Array<RectPtr> rects(10);
169645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  for (size_t i = 0; i < rects.size(); ++i) {
170645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    RedmondRect rr = kBase;
171645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    rr.left += static_cast<int32_t>(i);
172645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    rr.top += static_cast<int32_t>(i);
173645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    rects[i] = Rect::From(rr);
174645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  }
175645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
176645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  std::vector<RedmondRect> redmond_rects = rects.To<std::vector<RedmondRect>>();
177645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
178645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  Array<RectPtr> rects2 = Array<RectPtr>::From(redmond_rects);
179645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_TRUE(AreEqualRectArrays(rects, rects2));
180645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez}
181645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
182645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezTEST(TypeConversionTest, CustomTypeConverter_Nested) {
183645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  RedmondNamedRegion redmond_region;
184645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  redmond_region.name = "foopy";
185645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
186645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  const RedmondRect kBase = {10, 20, 30, 40};
187645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
188645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  for (size_t i = 0; i < 10; ++i) {
189645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    RedmondRect rect = kBase;
190645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    rect.left += static_cast<int32_t>(i);
191645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    rect.top += static_cast<int32_t>(i);
192645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    redmond_region.rects.push_back(rect);
193645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  }
194645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
195645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  // Round-trip through generated struct and TypeConverter.
196645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
197645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  NamedRegionPtr copy = NamedRegion::From(redmond_region);
198645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  RedmondNamedRegion redmond_region2 = copy.To<RedmondNamedRegion>();
199645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
200645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_EQ(redmond_region.name, redmond_region2.name);
201645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  EXPECT_EQ(redmond_region.rects.size(), redmond_region2.rects.size());
202645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  for (size_t i = 0; i < redmond_region.rects.size(); ++i) {
203645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    EXPECT_EQ(redmond_region.rects[i].left, redmond_region2.rects[i].left);
204645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    EXPECT_EQ(redmond_region.rects[i].top, redmond_region2.rects[i].top);
205645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    EXPECT_EQ(redmond_region.rects[i].right, redmond_region2.rects[i].right);
206645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    EXPECT_EQ(redmond_region.rects[i].bottom, redmond_region2.rects[i].bottom);
207645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  }
208645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez}
209645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
210645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez}  // namespace
211645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez}  // namespace test
212645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez}  // namespace mojo
213