On Thu, Nov 03, 2022 at 08:51:52AM -0700, Ali Çehreli via Digitalmars-d-learn wrote: > On 11/3/22 03:00, Bruno Pagis wrote: > > > void print() { > > writeln("array = ", this.array); > > } > > Similar to Paul Backus's program but I would try to avoid the file system > for unit tests when possible. In this case, you can print into a sink, which > can be useful in other ways as well: [...]
Alternatively, you can templatize on File to make it swappable with a mock object: void myfunc(File = std.stdio.File)(File output = stdout) { output.writeln(...); } unittest { struct MockFile { string output; void writeln(Args...)(Args args) { output ~= format(args); } } MockFile mock; myfunc(mock); assert(mock.output == ...); } T -- "Maybe" is a strange word. When mom or dad says it it means "yes", but when my big brothers say it it means "no"! -- PJ jr.