| ... | @@ -2060,7 +2060,7 @@ test "invalid UTF-8/WTF-8 paths" { | ... | @@ -2060,7 +2060,7 @@ test "invalid UTF-8/WTF-8 paths" { |
| 2060 | } | 2060 | } |
| 2061 | | 2061 | |
| 2062 | test "read file non vectored" { | 2062 | test "read file non vectored" { |
| 2063 | var tmp_dir = std.testing.tmpDir(.{}); | 2063 | var tmp_dir = testing.tmpDir(.{}); |
| 2064 | defer tmp_dir.cleanup(); | 2064 | defer tmp_dir.cleanup(); |
| 2065 | | 2065 | |
| 2066 | const contents = "hello, world!\n"; | 2066 | const contents = "hello, world!\n"; |
| ... | @@ -2085,6 +2085,47 @@ test "read file non vectored" { | ... | @@ -2085,6 +2085,47 @@ test "read file non vectored" { |
| 2085 | else => |e| return e, | 2085 | else => |e| return e, |
| 2086 | }; | 2086 | }; |
| 2087 | } | 2087 | } |
| 2088 | try std.testing.expectEqualStrings(contents, w.buffered()); | 2088 | try testing.expectEqualStrings(contents, w.buffered()); |
| 2089 | try std.testing.expectEqual(contents.len, i); | 2089 | try testing.expectEqual(contents.len, i); |
| | 2090 | } |
| | 2091 | |
| | 2092 | test "seek keeping partial buffer" { |
| | 2093 | var tmp_dir = testing.tmpDir(.{}); |
| | 2094 | defer tmp_dir.cleanup(); |
| | 2095 | |
| | 2096 | const contents = "0123456789"; |
| | 2097 | |
| | 2098 | const file = try tmp_dir.dir.createFile("input.txt", .{ .read = true }); |
| | 2099 | defer file.close(); |
| | 2100 | { |
| | 2101 | var file_writer: std.fs.File.Writer = .init(file, &.{}); |
| | 2102 | try file_writer.interface.writeAll(contents); |
| | 2103 | try file_writer.interface.flush(); |
| | 2104 | } |
| | 2105 | |
| | 2106 | var read_buffer: [3]u8 = undefined; |
| | 2107 | var file_reader: std.fs.File.Reader = .init(file, &read_buffer); |
| | 2108 | |
| | 2109 | try testing.expectEqual(0, file_reader.logicalPos()); |
| | 2110 | |
| | 2111 | var buf: [4]u8 = undefined; |
| | 2112 | try file_reader.interface.readSliceAll(&buf); |
| | 2113 | |
| | 2114 | if (file_reader.interface.bufferedLen() != 3) { |
| | 2115 | // Pass the test if the OS doesn't give us vectored reads. |
| | 2116 | return; |
| | 2117 | } |
| | 2118 | |
| | 2119 | try testing.expectEqual(4, file_reader.logicalPos()); |
| | 2120 | try testing.expectEqual(7, file_reader.pos); |
| | 2121 | try file_reader.seekTo(6); |
| | 2122 | try testing.expectEqual(6, file_reader.logicalPos()); |
| | 2123 | try testing.expectEqual(7, file_reader.pos); |
| | 2124 | |
| | 2125 | try testing.expectEqualStrings("0123", &buf); |
| | 2126 | |
| | 2127 | const n = try file_reader.interface.readSliceShort(&buf); |
| | 2128 | try testing.expectEqual(4, n); |
| | 2129 | |
| | 2130 | try testing.expectEqualStrings("6789", &buf); |
| 2090 | } | 2131 | } |