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

Unified Diff: mojo/system/memory_unittest.cc

Issue 425523002: Mojo: Convert MemoryTest.Valid to the new user pointer handling (see r285350). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 6 years, 5 months 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/system/memory.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/system/memory_unittest.cc
diff --git a/mojo/system/memory_unittest.cc b/mojo/system/memory_unittest.cc
index b23d50ae7be5ceeed08b3a8ac3cdbfa373bd4c34..e5b2c1c0772979ca441f8cd88120d9ba68692a7d 100644
--- a/mojo/system/memory_unittest.cc
+++ b/mojo/system/memory_unittest.cc
@@ -19,54 +19,150 @@ namespace {
TEST(MemoryTest, Valid) {
char my_char;
int32_t my_int32;
- int64_t my_int64;
- char my_char_array[5];
- int32_t my_int32_array[5];
- int64_t my_int64_array[5];
-
- // |VerifyUserPointer|:
-
- EXPECT_TRUE(VerifyUserPointer<char>(&my_char));
- EXPECT_TRUE(VerifyUserPointer<int32_t>(&my_int32));
- EXPECT_TRUE(VerifyUserPointer<int64_t>(&my_int64));
-
- // |VerifyUserPointerWithCount|:
-
- EXPECT_TRUE(VerifyUserPointerWithCount<char>(my_char_array, 5));
- EXPECT_TRUE(VerifyUserPointerWithCount<int32_t>(my_int32_array, 5));
- EXPECT_TRUE(VerifyUserPointerWithCount<int64_t>(my_int64_array, 5));
-
- // It shouldn't care what the pointer is if the count is zero.
- EXPECT_TRUE(VerifyUserPointerWithCount<char>(NULL, 0));
- EXPECT_TRUE(VerifyUserPointerWithCount<int32_t>(NULL, 0));
- EXPECT_TRUE(VerifyUserPointerWithCount<int32_t>(
- reinterpret_cast<const int32_t*>(1), 0));
- EXPECT_TRUE(VerifyUserPointerWithCount<int64_t>(NULL, 0));
- EXPECT_TRUE(VerifyUserPointerWithCount<int64_t>(
- reinterpret_cast<const int64_t*>(1), 0));
-
- // |VerifyUserPointerWithSize|:
-
- EXPECT_TRUE(VerifyUserPointerWithSize<1>(&my_char, sizeof(my_char)));
- EXPECT_TRUE(VerifyUserPointerWithSize<1>(&my_int32, sizeof(my_int32)));
- EXPECT_TRUE(VerifyUserPointerWithSize<MOJO_ALIGNOF(int32_t)>(
- &my_int32, sizeof(my_int32)));
- EXPECT_TRUE(VerifyUserPointerWithSize<1>(&my_int64, sizeof(my_int64)));
- EXPECT_TRUE(VerifyUserPointerWithSize<MOJO_ALIGNOF(int64_t)>(
- &my_int64, sizeof(my_int64)));
-
- EXPECT_TRUE(VerifyUserPointerWithSize<1>(my_char_array,
- sizeof(my_char_array)));
- EXPECT_TRUE(VerifyUserPointerWithSize<1>(my_int32_array,
- sizeof(my_int32_array)));
- EXPECT_TRUE(VerifyUserPointerWithSize<MOJO_ALIGNOF(int32_t)>(
- my_int32_array, sizeof(my_int32_array)));
- EXPECT_TRUE(VerifyUserPointerWithSize<1>(my_int64_array,
- sizeof(my_int64_array)));
- EXPECT_TRUE(VerifyUserPointerWithSize<MOJO_ALIGNOF(int64_t)>(
- my_int64_array, sizeof(my_int64_array)));
+ int64_t my_int64_array[5] = {}; // Zero initialize.
+
+ UserPointer<char> my_char_ptr(&my_char);
+ UserPointer<int32_t> my_int32_ptr(&my_int32);
+ UserPointer<int64_t> my_int64_array_ptr(my_int64_array);
+
+ // |UserPointer<>::IsNull()|:
+ EXPECT_FALSE(my_char_ptr.IsNull());
+ EXPECT_FALSE(my_int32_ptr.IsNull());
+ EXPECT_FALSE(my_int64_array_ptr.IsNull());
+
+ // |UserPointer<>::Put()| and |UserPointer<>::Get()|:
+ my_char_ptr.Put('x');
+ EXPECT_EQ('x', my_char);
+ EXPECT_EQ('x', my_char_ptr.Get());
+ my_int32_ptr.Put(123);
+ EXPECT_EQ(123, my_int32);
+ EXPECT_EQ(123, my_int32_ptr.Get());
+ my_int64_array_ptr.Put(456);
+ EXPECT_EQ(456, my_int64_array[0]);
+ EXPECT_EQ(456, my_int64_array_ptr.Get());
+
+ // |UserPointer<>::At()|, etc.:
+ my_int64_array_ptr.At(3).Put(789);
+ EXPECT_EQ(789, my_int64_array[3]);
+ {
+ // Copy construction:
+ UserPointer<int64_t> other(my_int64_array_ptr.At(3));
+ EXPECT_FALSE(other.IsNull());
+ EXPECT_EQ(789, other.Get());
+
+ // Assignment:
+ other = my_int64_array_ptr;
+ EXPECT_FALSE(other.IsNull());
+ EXPECT_EQ(456, other.Get());
+
+ // Assignment to |NullUserPointer()|:
+ other = NullUserPointer();
+ EXPECT_TRUE(other.IsNull());
+
+ // |MakeUserPointer()|:
+ other = MakeUserPointer(&my_int64_array[1]);
+ other.Put(-123);
+ EXPECT_EQ(-123, my_int64_array_ptr.At(1).Get());
+ }
+
+ // "const" |UserPointer<>|:
+ {
+ // Explicit constructor from |NullUserPointer()|:
+ UserPointer<const char> other((NullUserPointer()));
+ EXPECT_TRUE(other.IsNull());
+
+ // Conversion to "const":
+ other = my_char_ptr;
+ EXPECT_EQ('x', other.Get());
+ }
+
+ // Default constructor:
+ {
+ UserPointer<int32_t> other;
+ EXPECT_TRUE(other.IsNull());
+
+ other = my_int32_ptr;
+ other.Put(-456);
+ EXPECT_EQ(-456, my_int32_ptr.Get());
+ }
+
+ // |UserPointer<>::CheckArray()|:
+ my_int64_array_ptr.CheckArray(5);
+
+ // |UserPointer<>::GetArray()|:
+ {
+ // From a "const" |UserPointer<>| (why not?):
+ UserPointer<const int64_t> other(my_int64_array_ptr);
+ int64_t array[3] = {1, 2, 3};
+ other.At(1).GetArray(array, 3);
+ EXPECT_EQ(-123, array[0]);
+ EXPECT_EQ(0, array[1]);
+ EXPECT_EQ(789, array[2]);
+ }
+
+ // |UserPointer<>::PutArray()|:
+ {
+ const int64_t array[2] = {654, 321};
+ my_int64_array_ptr.At(3).PutArray(array, 2);
+ EXPECT_EQ(0, my_int64_array[2]);
+ EXPECT_EQ(654, my_int64_array[3]);
+ EXPECT_EQ(321, my_int64_array[4]);
+ }
+
+ // |UserPointer<>::Reader|:
+ {
+ UserPointer<int64_t>::Reader reader(my_int64_array_ptr, 5);
+ EXPECT_EQ(456, reader.GetPointer()[0]);
+ EXPECT_EQ(321, reader.GetPointer()[4]);
+ }
+
+ // Non-const to const:
+ {
+ UserPointer<const int64_t>::Reader reader(my_int64_array_ptr.At(3), 1);
+ const int64_t* ptr = reader.GetPointer();
+ EXPECT_EQ(654, *ptr);
+ }
+
+ // |UserPointer<>::Writer|:
+ {
+ UserPointer<int64_t>::Writer writer(my_int64_array_ptr.At(2), 1);
+ int64_t* ptr = writer.GetPointer();
+ *ptr = 1234567890123LL;
+ writer.Commit();
+ EXPECT_EQ(1234567890123LL, my_int64_array[2]);
+ }
+
+ // |UserPointer<>::ReaderWriter|:
+ {
+ UserPointer<int32_t>::ReaderWriter reader_writer(my_int32_ptr, 1);
+ int32_t* ptr = reader_writer.GetPointer();
+ EXPECT_EQ(-456, *ptr);
+ *ptr = 42;
+ reader_writer.Commit();
+ EXPECT_EQ(42, my_int32);
+ }
+
+ // |UserPointer<>::ReinterpretCast<>|:
+ // (This assumes little-endian, etc.)
+ {
+ UserPointer<const char> other(my_int32_ptr.ReinterpretCast<char>());
+ EXPECT_EQ(42, other.Get());
+ EXPECT_EQ(0, other.At(1).Get());
+ EXPECT_EQ(0, other.At(2).Get());
+ EXPECT_EQ(0, other.At(3).Get());
+ }
+
+ // |UserPointer<>::GetPointerValue()|:
+ {
+ UserPointer<int32_t> other;
+ EXPECT_EQ(0u, other.GetPointerValue());
+ other = my_int32_ptr;
+ EXPECT_EQ(reinterpret_cast<uintptr_t>(&my_int32), other.GetPointerValue());
+ }
}
+// TODO(vtl): Convert this test.
+#if 0
TEST(MemoryTest, Invalid) {
// Note: |VerifyUserPointer...()| are defined to be "best effort" checks (and
// may always return true). Thus these tests of invalid cases only reflect the
@@ -130,6 +226,7 @@ TEST(MemoryTest, Invalid) {
EXPECT_FALSE(VerifyUserPointerWithSize<8>(reinterpret_cast<const int32_t*>(1),
8));
}
+#endif
} // namespace
} // namespace system
« no previous file with comments | « mojo/system/memory.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698