diff options
author | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-08-01 18:07:01 +0200 |
---|---|---|
committer | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-08-01 18:07:01 +0200 |
commit | 710d1d11d471d3b3f7e5a4d126487665752bbfaa (patch) | |
tree | eaf03e51ab612694c30c678ae6fd273b899d75b7 /modules/core | |
parent | 2ed110ed2d0ef093ba6cc14771b6387eff70c866 (diff) |
Added some tests
Diffstat (limited to 'modules/core')
-rw-r--r-- | modules/core/c++/buffer.cpp | 11 | ||||
-rw-r--r-- | modules/core/tests/array_buffer.cpp | 20 |
2 files changed, 30 insertions, 1 deletions
diff --git a/modules/core/c++/buffer.cpp b/modules/core/c++/buffer.cpp index 3793226..12df1ab 100644 --- a/modules/core/c++/buffer.cpp +++ b/modules/core/c++/buffer.cpp @@ -427,8 +427,17 @@ const uint8_t &array_buffer::write(size_t i) const { } error array_buffer::write_require_length(size_t bytes) { size_t write_remain = write_composite_length(); + if (bytes > write_remain) { - return make_error<err::buffer_exhausted>(); + + uint64_t resize_that_much = bytes - write_remain; + uint64_t resize_to_that_size = resize_that_much + buffer_.size(); + + try { + buffer_.resize(resize_to_that_size); + }catch(const std::exception&e){ + return make_error<err::out_of_memory>(); + } } return no_error(); } diff --git a/modules/core/tests/array_buffer.cpp b/modules/core/tests/array_buffer.cpp index bc9bffd..9785424 100644 --- a/modules/core/tests/array_buffer.cpp +++ b/modules/core/tests/array_buffer.cpp @@ -34,6 +34,26 @@ SAW_TEST("Array Buffer Write Advance") { SAW_EXPECT(buff.read_composite_length() == advance, "Unexpected Read composite length."); SAW_EXPECT(buff.write_composite_length() == (size-advance), "Unexpected Write composite length."); do_array_consistency_checks(buff); + + buff.write_advance(size-advance); + SAW_EXPECT(buff.write_position() == (size), "Unexpected write position"); + SAW_EXPECT(buff.write_composite_length() == 0u, "Unexpected Write composite length."); + do_array_consistency_checks(buff); +} + +SAW_TEST("Array Buffer Write Require Length") { + using namespace saw; + + uint64_t size = 1024u; + array_buffer buff{size}; + + error err = buff.write_require_length(2u*size); + + SAW_EXPECT(buff.read_position() == 0u, "Unexpected read position"); + SAW_EXPECT(buff.write_position() == 0u, "Unexpected write position"); + SAW_EXPECT(buff.read_composite_length() == 0u, "Unexpected Read composite length."); + SAW_EXPECT(buff.write_composite_length() == 2u*size, std::string{"Unexpected Write composite length. Size "} + std::to_string(buff.write_composite_length())); + do_array_consistency_checks(buff); } SAW_TEST("Array Buffer Write and Read Advance") { |