mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-03 14:18:47 +00:00
Test io unexpected pointer movement
This commit is contained in:
@@ -85,6 +85,15 @@ _test_stream :: proc(
|
|||||||
testing.expectf(t, size_err == nil,
|
testing.expectf(t, size_err == nil,
|
||||||
"Size expected no error: %v", size_err, loc = loc) or_return
|
"Size expected no error: %v", size_err, loc = loc) or_return
|
||||||
|
|
||||||
|
// Ensure Size does not move the underlying pointer from the start.
|
||||||
|
//
|
||||||
|
// Some implementations may use seeking to determine file sizes.
|
||||||
|
if .Seek in mode_set {
|
||||||
|
pos, seek_err := io.seek(stream, 0, .Current)
|
||||||
|
testing.expectf(t, pos == 0 && seek_err == nil,
|
||||||
|
"Size+Seek Current isn't 0 after getting size: %v, %v", pos, seek_err, loc = loc) or_return
|
||||||
|
}
|
||||||
|
|
||||||
passed += { .Size }
|
passed += { .Size }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,6 +129,13 @@ _test_stream :: proc(
|
|||||||
"Read_At+Size expected no error: %v", size_err, loc = loc) or_return
|
"Read_At+Size expected no error: %v", size_err, loc = loc) or_return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ensure Read_At does not move the underlying pointer from the start.
|
||||||
|
if .Seek in mode_set {
|
||||||
|
pos, seek_err := io.seek(stream, 0, .Current)
|
||||||
|
testing.expectf(t, pos == 0 && seek_err == nil,
|
||||||
|
"Read_At+Seek Current isn't 0 after reading: %v, %v", pos, seek_err, loc = loc) or_return
|
||||||
|
}
|
||||||
|
|
||||||
passed += { .Read_At }
|
passed += { .Read_At }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,6 +206,15 @@ _test_stream :: proc(
|
|||||||
|
|
||||||
// Test Write_At.
|
// Test Write_At.
|
||||||
if .Write_At in mode_set {
|
if .Write_At in mode_set {
|
||||||
|
// Ensure Write_At does not move the underlying pointer from the start.
|
||||||
|
starting_offset : i64 = -1
|
||||||
|
if .Seek in mode_set {
|
||||||
|
pos, seek_err := io.seek(stream, 0, .Current)
|
||||||
|
testing.expectf(t, pos >= 0 && seek_err == nil,
|
||||||
|
"Write_At+Seek Current failed: %v, %v", pos, seek_err, loc = loc) or_return
|
||||||
|
starting_offset = pos
|
||||||
|
}
|
||||||
|
|
||||||
if size > 0 {
|
if size > 0 {
|
||||||
write_buf, write_buf_alloc_err := make([]u8, size)
|
write_buf, write_buf_alloc_err := make([]u8, size)
|
||||||
testing.expectf(t, write_buf_alloc_err == nil, "allocation failed", loc = loc) or_return
|
testing.expectf(t, write_buf_alloc_err == nil, "allocation failed", loc = loc) or_return
|
||||||
@@ -231,6 +256,13 @@ _test_stream :: proc(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ensure Write_At does not move the underlying pointer from the start.
|
||||||
|
if starting_offset != -1 && .Seek in mode_set {
|
||||||
|
pos, seek_err := io.seek(stream, 0, .Current)
|
||||||
|
testing.expectf(t, pos == starting_offset && seek_err == nil,
|
||||||
|
"Write_At+Seek Current isn't %v after writing: %v, %v", starting_offset, pos, seek_err, loc = loc) or_return
|
||||||
|
}
|
||||||
|
|
||||||
passed += { .Write_At }
|
passed += { .Write_At }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user