blob: 6a9d6e9094a725c826a87036130402723b998311 [file] [log] [blame]
// 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;
}