| ... | ... | @@ -1525,6 +1525,41 @@ test "sendfile" { |
| 1525 | 1525 | try testing.expectEqualStrings("header1\nsecond header\nine1\nsecontrailer1\nsecond trailer\n", written_buf[0..amt]); |
| 1526 | 1526 | } |
| 1527 | 1527 | |
| 1528 | test "sendfile with buffered data" { |
| 1529 | var tmp = tmpDir(.{}); |
| 1530 | defer tmp.cleanup(); |
| 1531 | |
| 1532 | try tmp.dir.makePath("os_test_tmp"); |
| 1533 | |
| 1534 | var dir = try tmp.dir.openDir("os_test_tmp", .{}); |
| 1535 | defer dir.close(); |
| 1536 | |
| 1537 | var src_file = try dir.createFile("sendfile1.txt", .{ .read = true }); |
| 1538 | defer src_file.close(); |
| 1539 | |
| 1540 | try src_file.writeAll("AAAABBBB"); |
| 1541 | |
| 1542 | var dest_file = try dir.createFile("sendfile2.txt", .{ .read = true }); |
| 1543 | defer dest_file.close(); |
| 1544 | |
| 1545 | var src_buffer: [32]u8 = undefined; |
| 1546 | var file_reader = src_file.reader(&src_buffer); |
| 1547 | |
| 1548 | try file_reader.seekTo(0); |
| 1549 | try file_reader.interface.fill(8); |
| 1550 | |
| 1551 | var fallback_buffer: [32]u8 = undefined; |
| 1552 | var file_writer = dest_file.writer(&fallback_buffer); |
| 1553 | |
| 1554 | try std.testing.expectEqual(4, try file_writer.interface.sendFileAll(&file_reader, .limited(4))); |
| 1555 | |
| 1556 | var written_buf: [8]u8 = undefined; |
| 1557 | const amt = try dest_file.preadAll(&written_buf, 0); |
| 1558 | |
| 1559 | try std.testing.expectEqual(4, amt); |
| 1560 | try std.testing.expectEqualSlices(u8, "AAAA", written_buf[0..amt]); |
| 1561 | } |
| 1562 | |
| 1528 | 1563 | test "copyRangeAll" { |
| 1529 | 1564 | var tmp = tmpDir(.{}); |
| 1530 | 1565 | defer tmp.cleanup(); |