1 // RUNNABLE_PHOBOS_TEST 2 // PERMUTE_ARGS: 3 // REQUIRED_ARGS: 4 5 import std.file; 6 import std.mmfile; 7 8 int main() 9 { 10 static string name = "test.tmp"; 11 static string s = "abcd"; 12 13 write(name, s); 14 15 { scope MmFile mmf = new MmFile(name); 16 string p; 17 18 assert(mmf[0] == 'a'); 19 p = cast(string)mmf[]; 20 //printf("p.length = %d\n", p.length); 21 assert(p[1] == 'b'); 22 p = cast(string)mmf[0 .. 4]; 23 assert(p[2] == 'c'); 24 } 25 26 { scope MmFile mmf = new MmFile(name, MmFile.Mode.read, 0, null); 27 string p; 28 29 assert(mmf[0] == 'a'); 30 p = cast(string)mmf[]; 31 //printf("p.length = %d\n", p.length); 32 assert(mmf.length == 4); 33 assert(p[1] == 'b'); 34 p = cast(string)mmf[0 .. 4]; 35 assert(p[2] == 'c'); 36 } 37 38 remove(name); 39 40 { scope MmFile mmf = new MmFile(name, MmFile.Mode.readWriteNew, 4, null); 41 char[] p; 42 43 p = cast(char[])mmf[]; 44 p[] = "1234"; 45 mmf[3] = '5'; 46 assert(mmf[2] == '3'); 47 assert(mmf[3] == '5'); 48 } 49 50 { string p = cast(string)read(name); 51 52 assert(p[] == "1235"); 53 } 54 55 { scope MmFile mmf = new MmFile(name, MmFile.Mode.readWriteNew, 4, null); 56 char[] p; 57 58 p = cast(char[])mmf[]; 59 p[] = "5678"; 60 mmf[3] = '5'; 61 assert(mmf[2] == '7'); 62 assert(mmf[3] == '5'); 63 assert(cast(string)mmf[] == "5675"); 64 } 65 66 { string p = cast(string)read(name); 67 68 assert(p[] == "5675"); 69 } 70 71 { scope MmFile mmf = new MmFile(name, MmFile.Mode.readWrite, 4, null); 72 char[] p; 73 74 p = cast(char[])mmf[]; 75 assert(cast(char[])mmf[] == "5675"); 76 p[] = "9102"; 77 mmf[2] = '5'; 78 assert(cast(string)mmf[] == "9152"); 79 } 80 81 { string p = cast(string)read(name); 82 83 assert(p[] == "9152"); 84 } 85 86 remove(name); 87 88 { scope MmFile mmf = new MmFile(name, MmFile.Mode.readWrite, 4, null); 89 char[] p; 90 91 p = cast(char[])mmf[]; 92 p[] = "abcd"; 93 mmf[2] = '5'; 94 assert(cast(string)mmf[] == "ab5d"); 95 } 96 97 { string p = cast(string)read(name); 98 99 assert(p[] == "ab5d"); 100 } 101 102 { scope MmFile mmf = new MmFile(name, MmFile.Mode.readCopyOnWrite, 4, null); 103 char[] p; 104 105 p = cast(char[])mmf[]; 106 assert(cast(string)mmf[] == "ab5d"); 107 p[] = "9102"; 108 mmf[2] = '5'; 109 assert(cast(string)mmf[] == "9152"); 110 } 111 112 { string p = cast(string)read(name); 113 114 assert(p[] == "ab5d"); 115 } 116 117 remove(name); 118 119 return 0; 120 } 121