Merge pull request #1857 from slluis/fix-assembly-resolver
[mono.git] / mcs / class / System.Core / Test / System.IO.MemoryMappedFiles / MemoryMappedFileTest.cs
index 8f7ba979afc5baffc95b931313e820421be412f5..c07666a29c6d97de26b9037c2e5d60e95c43f584 100644 (file)
@@ -214,6 +214,39 @@ namespace MonoTests.System.IO.MemoryMappedFiles {
                        }
                }
 
+               [Test]
+               public unsafe void ViewAccessorReadArrayWithOffset () {
+                       var file = MemoryMappedFile.CreateFromFile (fname, FileMode.Open);
+                       var offset = 3;
+                       var expected = "lo!";
+
+                       using (var v = file.CreateViewAccessor (offset, expected.Length)) {
+                               Assert.AreEqual (offset, v.PointerOffset);
+
+                               var a = new byte [expected.Length];
+                               var n = v.ReadArray (0, a, 0, expected.Length);
+                               Assert.AreEqual (expected.Length, n);
+                               var s = new string (Array.ConvertAll (a, b => (char)b));
+                               Assert.AreEqual (expected, s);
+                       }
+               }
+
+               [Test]
+               public unsafe void ViewStreamReadWithOffset () {
+                       var file = MemoryMappedFile.CreateFromFile (fname, FileMode.Open);
+                       var offset = 3;
+                       var expected = "lo!";
+
+                       using (var v = file.CreateViewStream (offset, expected.Length)) {
+                               Assert.AreEqual (offset, v.PointerOffset);
+
+                               var a = new byte [expected.Length];
+                               var n = v.Read (a, 0, expected.Length);
+                               Assert.AreEqual (expected.Length, n);
+                               var s = new string (Array.ConvertAll (a, b => (char)b));
+                               Assert.AreEqual (expected, s);
+                       }
+               }
 
                [Test]
                public void NamedMappingToInvalidFile ()
@@ -345,16 +378,21 @@ namespace MonoTests.System.IO.MemoryMappedFiles {
                [Test]
                public void CreateViewStreamAlignToPageSize ()
                {
+#if MONOTOUCH
+                       // iOS bugs on ARM64 - bnc #27667 - apple #
+                       int pageSize = (IntPtr.Size == 4) ? Environment.SystemPageSize : 4096;
+#else
                        int pageSize = Environment.SystemPageSize;
+#endif
                        string f = Path.Combine (tempDir, "p-file");
                        File.WriteAllBytes (f, new byte [pageSize * 2 + 1]);
 
                        MemoryMappedFile mappedFile = MemoryMappedFile.CreateFromFile (f, FileMode.Open);
 
                        MemoryMappedViewStream stream = mappedFile.CreateViewStream (pageSize * 2, 0, MemoryMappedFileAccess.ReadWrite);
-
+#if !MONOTOUCH
                        Assert.AreEqual (stream.Capacity, Environment.SystemPageSize);
-
+#endif
                        stream.Write (new byte [pageSize], 0, pageSize);
                }
        }