std::move-able MemoryMapping
[folly.git] / folly / test / MemoryMappingTest.cpp
index c111073a716ec3ff6040da349f94f150a4edd674..d7ee607c501e216a2d0431b25fa32f0591f99364 100644 (file)
@@ -38,6 +38,26 @@ TEST(MemoryMapping, Basic) {
   }
 }
 
+TEST(MemoryMapping, Move) {
+  File f = File::temporary();
+  {
+    WritableMemoryMapping m(File(f.fd()), 0, sizeof(double) * 2);
+    double volatile* d = m.asWritableRange<double>().data();
+    d[0] = 37 * M_PI;
+    WritableMemoryMapping m2(std::move(m));
+    double volatile* d2 = m2.asWritableRange<double>().data();
+    d2[1] = 39 * M_PI;
+  }
+  {
+    MemoryMapping m(File(f.fd()), 0, sizeof(double));
+    const double volatile* d = m.asRange<double>().data();
+    EXPECT_EQ(d[0], 37 * M_PI);
+    MemoryMapping m2(std::move(m));
+    const double volatile* d2 = m2.asRange<double>().data();
+    EXPECT_EQ(d2[1], 39 * M_PI);
+  }
+}
+
 TEST(MemoryMapping, DoublyMapped) {
   File f = File::temporary();
   // two mappings of the same memory, different addresses.