| // RUNNABLE_PHOBOS_TEST |
| // PERMUTE_ARGS: |
| // REQUIRED_ARGS: |
| |
| import std.file; |
| import std.mmfile; |
| |
| int main() |
| { |
| static string name = "test.tmp"; |
| static string s = "abcd"; |
| |
| write(name, s); |
| |
| { scope MmFile mmf = new MmFile(name); |
| string p; |
| |
| assert(mmf[0] == 'a'); |
| p = cast(string)mmf[]; |
| //printf("p.length = %d\n", p.length); |
| assert(p[1] == 'b'); |
| p = cast(string)mmf[0 .. 4]; |
| assert(p[2] == 'c'); |
| } |
| |
| { scope MmFile mmf = new MmFile(name, MmFile.Mode.read, 0, null); |
| string p; |
| |
| assert(mmf[0] == 'a'); |
| p = cast(string)mmf[]; |
| //printf("p.length = %d\n", p.length); |
| assert(mmf.length == 4); |
| assert(p[1] == 'b'); |
| p = cast(string)mmf[0 .. 4]; |
| assert(p[2] == 'c'); |
| } |
| |
| remove(name); |
| |
| { scope MmFile mmf = new MmFile(name, MmFile.Mode.readWriteNew, 4, null); |
| char[] p; |
| |
| p = cast(char[])mmf[]; |
| p[] = "1234"; |
| mmf[3] = '5'; |
| assert(mmf[2] == '3'); |
| assert(mmf[3] == '5'); |
| } |
| |
| { string p = cast(string)read(name); |
| |
| assert(p[] == "1235"); |
| } |
| |
| { scope MmFile mmf = new MmFile(name, MmFile.Mode.readWriteNew, 4, null); |
| char[] p; |
| |
| p = cast(char[])mmf[]; |
| p[] = "5678"; |
| mmf[3] = '5'; |
| assert(mmf[2] == '7'); |
| assert(mmf[3] == '5'); |
| assert(cast(string)mmf[] == "5675"); |
| } |
| |
| { string p = cast(string)read(name); |
| |
| assert(p[] == "5675"); |
| } |
| |
| { scope MmFile mmf = new MmFile(name, MmFile.Mode.readWrite, 4, null); |
| char[] p; |
| |
| p = cast(char[])mmf[]; |
| assert(cast(char[])mmf[] == "5675"); |
| p[] = "9102"; |
| mmf[2] = '5'; |
| assert(cast(string)mmf[] == "9152"); |
| } |
| |
| { string p = cast(string)read(name); |
| |
| assert(p[] == "9152"); |
| } |
| |
| remove(name); |
| |
| { scope MmFile mmf = new MmFile(name, MmFile.Mode.readWrite, 4, null); |
| char[] p; |
| |
| p = cast(char[])mmf[]; |
| p[] = "abcd"; |
| mmf[2] = '5'; |
| assert(cast(string)mmf[] == "ab5d"); |
| } |
| |
| { string p = cast(string)read(name); |
| |
| assert(p[] == "ab5d"); |
| } |
| |
| { scope MmFile mmf = new MmFile(name, MmFile.Mode.readCopyOnWrite, 4, null); |
| char[] p; |
| |
| p = cast(char[])mmf[]; |
| assert(cast(string)mmf[] == "ab5d"); |
| p[] = "9102"; |
| mmf[2] = '5'; |
| assert(cast(string)mmf[] == "9152"); |
| } |
| |
| { string p = cast(string)read(name); |
| |
| assert(p[] == "ab5d"); |
| } |
| |
| remove(name); |
| |
| return 0; |
| } |