Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(101)

Unified Diff: mojo/public/bindings/sample/sample_test.cc

Issue 66103004: Mojo: Make sample_test.cc a gtest (and re-enable it). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: update comment Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/public/DEPS ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/bindings/sample/sample_test.cc
diff --git a/mojo/public/bindings/sample/sample_test.cc b/mojo/public/bindings/sample/sample_test.cc
index b2eaa2f197deca4700f737a83093659f3ff36d8c..e996237e21b456cbae31a96e8ca59bd59591f380 100644
--- a/mojo/public/bindings/sample/sample_test.cc
+++ b/mojo/public/bindings/sample/sample_test.cc
@@ -3,13 +3,101 @@
// found in the LICENSE file.
#include <stdio.h>
+#include <string.h>
+#include <algorithm>
#include <string>
#include "mojo/public/bindings/sample/generated/sample_service.h"
+#include "testing/gtest/include/gtest/gtest.h"
namespace sample {
+// Make a sample |Foo| in the given |ScratchBuffer|.
+Foo* MakeFoo(mojo::ScratchBuffer* buf) {
+ const std::string kName("foopy");
+ mojo::String* name = mojo::String::NewCopyOf(buf, kName);
+
+ Bar* bar = Bar::New(buf);
+ bar->set_alpha(20);
+ bar->set_beta(40);
+ bar->set_gamma(60);
+
+ mojo::Array<Bar*>* extra_bars = mojo::Array<Bar*>::New(buf, 3);
+ for (size_t i = 0; i < extra_bars->size(); ++i) {
+ Bar* bar = Bar::New(buf);
+ uint8_t base = static_cast<uint8_t>(i * 100);
+ bar->set_alpha(base);
+ bar->set_beta(base + 20);
+ bar->set_gamma(base + 40);
+ (*extra_bars)[i] = bar;
+ }
+
+ mojo::Array<uint8_t>* data = mojo::Array<uint8_t>::New(buf, 10);
+ for (size_t i = 0; i < data->size(); ++i)
+ (*data)[i] = static_cast<uint8_t>(data->size() - i);
+
+ mojo::Array<mojo::Handle>* files = mojo::Array<mojo::Handle>::New(buf, 4);
+ for (size_t i = 0; i < files->size(); ++i)
+ (*files)[i].value = static_cast<MojoHandle>(0xFFFF - i);
+
+ Foo* foo = Foo::New(buf);
+ foo->set_name(name);
+ foo->set_x(1);
+ foo->set_y(2);
+ foo->set_a(false);
+ foo->set_b(true);
+ foo->set_c(false);
+ foo->set_bar(bar);
+ foo->set_extra_bars(extra_bars);
+ foo->set_data(data);
+ foo->set_files(files);
+
+ return foo;
+}
+
+// Check that the given |Foo| is identical to the one made by |MakeFoo()|.
+void CheckFoo(const Foo* foo) {
+ const std::string kName("foopy");
+ EXPECT_EQ(kName.size(), foo->name()->size());
+ for (size_t i = 0; i < std::min(kName.size(), foo->name()->size()); i++) {
+ // Test both |operator[]| and |at|.
+ EXPECT_EQ(kName[i], foo->name()->at(i)) << i;
+ EXPECT_EQ(kName[i], (*foo->name())[i]) << i;
+ }
+ EXPECT_EQ(kName, foo->name()->To<std::string>());
+
+ EXPECT_EQ(1, foo->x());
+ EXPECT_EQ(2, foo->y());
+ EXPECT_FALSE(foo->a());
+ EXPECT_TRUE(foo->b());
+ EXPECT_FALSE(foo->c());
+
+ EXPECT_EQ(20, foo->bar()->alpha());
+ EXPECT_EQ(40, foo->bar()->beta());
+ EXPECT_EQ(60, foo->bar()->gamma());
+
+ EXPECT_EQ(3u, foo->extra_bars()->size());
+ for (size_t i = 0; i < foo->extra_bars()->size(); i++) {
+ uint8_t base = static_cast<uint8_t>(i * 100);
+ EXPECT_EQ(base, (*foo->extra_bars())[i]->alpha()) << i;
+ EXPECT_EQ(base + 20, (*foo->extra_bars())[i]->beta()) << i;
+ EXPECT_EQ(base + 40, (*foo->extra_bars())[i]->gamma()) << i;
+ }
+
+ EXPECT_EQ(10u, foo->data()->size());
+ for (size_t i = 0; i < foo->data()->size(); ++i) {
+ EXPECT_EQ(static_cast<uint8_t>(foo->data()->size() - i),
+ foo->data()->at(i)) << i;
+ }
+
+ EXPECT_EQ(4u, foo->files()->size());
+ for (size_t i = 0; i < foo->files()->size(); ++i)
+ EXPECT_EQ(static_cast<MojoHandle>(0xFFFF - i),
+ foo->files()->at(i).value) << i;
+}
+
+
static void PrintSpacer(int depth) {
for (int i = 0; i < depth; ++i)
printf(" ");
@@ -91,10 +179,15 @@ class ServiceImpl : public ServiceStub {
virtual void Frobinate(const Foo* foo, bool baz, mojo::Handle port)
MOJO_OVERRIDE {
// Users code goes here to handle the incoming Frobinate message.
- // We'll just dump the Foo structure and all of its members.
- printf("Frobinate:\n");
+ // We mainly check that we're given the expected arguments.
+ CheckFoo(foo);
+ EXPECT_TRUE(baz);
+ EXPECT_EQ(static_cast<MojoHandle>(10), port.value);
+ // Also dump the Foo structure and all of its members.
+ // TODO(vtl): Make it optional, so that the test spews less?
+ printf("Frobinate:\n");
int depth = 1;
Print(depth, "foo", foo);
Print(depth, "baz", baz);
@@ -116,7 +209,7 @@ class SimpleMessageReceiver : public mojo::MessageReceiver {
}
};
-void Exercise() {
+TEST(BindingsSampleTest, Basic) {
SimpleMessageReceiver receiver;
// User has a proxy to a Service somehow.
@@ -129,44 +222,8 @@ void Exercise() {
// allocated.
mojo::ScratchBuffer buf;
-
- Bar* bar = Bar::New(&buf);
- bar->set_alpha(20);
- bar->set_beta(40);
- bar->set_gamma(60);
-
- const char kName[] = "foopy";
- mojo::String* name = mojo::String::NewCopyOf(&buf, std::string(kName));
-
- mojo::Array<Bar*>* extra_bars = mojo::Array<Bar*>::New(&buf, 3);
- for (size_t i = 0; i < extra_bars->size(); ++i) {
- Bar* bar = Bar::New(&buf);
- uint8_t base = static_cast<uint8_t>(i * 100);
- bar->set_alpha(base);
- bar->set_beta(base + 20);
- bar->set_gamma(base + 40);
- (*extra_bars)[i] = bar;
- }
-
- mojo::Array<uint8_t>* data = mojo::Array<uint8_t>::New(&buf, 10);
- for (size_t i = 0; i < data->size(); ++i)
- (*data)[i] = static_cast<uint8_t>(data->size() - i);
-
- mojo::Array<mojo::Handle>* files = mojo::Array<mojo::Handle>::New(&buf, 4);
- for (size_t i = 0; i < files->size(); ++i)
- (*files)[i].value = static_cast<MojoHandle>(0xFFFF - i);
-
- Foo* foo = Foo::New(&buf);
- foo->set_name(name);
- foo->set_x(1);
- foo->set_y(2);
- foo->set_a(false);
- foo->set_b(true);
- foo->set_c(false);
- foo->set_bar(bar);
- foo->set_extra_bars(extra_bars);
- foo->set_data(data);
- foo->set_files(files);
+ Foo* foo = MakeFoo(&buf);
+ CheckFoo(foo);
mojo::Handle port = { 10 };
@@ -174,9 +231,3 @@ void Exercise() {
}
} // namespace sample
-
-int main() {
- // TODO(vtl): Convert this to a gtest and use mojo_run_all_unittests.
- // sample::Exercise();
- return 0;
-}
« no previous file with comments | « mojo/public/DEPS ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698