@system unittest { import std.stdio; static import std.file; auto testFile = std.file.deleteme(); std.file.write(testFile, "\r\n\n\r\n"); scope(exit) std.file.remove(testFile); auto f = File(testFile, "r"); auto buf = f.rawRead(new char[5]); f.close(); assert(buf == "\r\n\n\r\n"); } @system unittest { import std.stdio; static import std.file; auto testFile = std.file.deleteme(); auto f = File(testFile, "w"); scope(exit) std.file.remove(testFile); f.rawWrite("\r\n\n\r\n"); f.close(); assert(std.file.read(testFile) == "\r\n\n\r\n"); } @system unittest { import std.stdio; import std.conv : text; static import std.file; auto testFile = std.file.deleteme(); std.file.write(testFile, "abcdefghijklmnopqrstuvwqxyz"); scope(exit) { std.file.remove(testFile); } auto f = File(testFile); auto a = new ubyte[4]; f.rawRead(a); assert(f.tell == 4, text(f.tell)); } @system unittest { import std.stdio; static import std.file; auto deleteme = std.file.deleteme(); std.file.write(deleteme, "hello\nworld\ntrue\nfalse\n"); scope(exit) std.file.remove(deleteme); string s; auto f = File(deleteme); f.readf!"%s\n"(s); assert(s == "hello", "["~s~"]"); f.readf("%s\n", s); assert(s == "world", "["~s~"]"); bool b1, b2; f.readf("%s\n%s\n", b1, b2); assert(b1 == true && b2 == false); } @system unittest { import std.stdio; static import std.file; import std.typecons : tuple; // prepare test file auto testFile = std.file.deleteme(); scope(failure) printf("Failed test at line %d\n", __LINE__); std.file.write(testFile, "1 2\n4 1\n5 100"); scope(exit) std.file.remove(testFile); File f = File(testFile); scope(exit) f.close(); auto expected = [tuple(1, 2), tuple(4, 1), tuple(5, 100)]; uint i; foreach (e; f.byRecord!(int, int)("%s %s")) { assert(e == expected[i++]); } } @safe unittest { import std.stdio; static assert(isFileHandle!(FILE*)); static assert(isFileHandle!(File)); } @safe unittest { import std.stdio; // Read stdin, sort lines, write to stdout import std.algorithm.mutation : copy; import std.algorithm.sorting : sort; import std.array : array; import std.typecons : Yes; void main() { stdin // read from stdin .byLineCopy(Yes.keepTerminator) // copying each line .array() // convert to array of lines .sort() // sort the lines .copy( // copy output of .sort to an OutputRange stdout.lockingTextWriter()); // the OutputRange } } @safe unittest { import std.stdio; void main() { stdout.writeln("Write a message to stdout."); } } @safe unittest { import std.stdio; void main() { import std.algorithm.iteration : filter, map, sum; import std.format : format; import std.range : iota, tee; int len; const r = 6.iota .filter!(a => a % 2) // 1 3 5 .map!(a => a * 2) // 2 6 10 .tee!(_ => stdout.writefln("len: %d", len++)) .sum; assert(r == 18); } } @safe unittest { import std.stdio; void main() { import std.algorithm.mutation : copy; import std.algorithm.iteration : map; import std.format : format; import std.range : iota; 10.iota .map!(e => "N: %d".format(e)) .copy(stdout.lockingTextWriter()); // the OutputRange } } @safe unittest { import std.stdio; void main() { stderr.writeln("Write a message to stderr."); } }