added tests
This commit is contained in:
@@ -576,4 +576,162 @@ TEST_F(ring_buffer_open_file_test,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(ring_buffer_open_file_test, forward_center_noop_when_within_half) {
|
||||||
|
auto source_path = test::generate_test_file_name("ring_buffer_open_file");
|
||||||
|
EXPECT_CALL(provider, is_read_only()).WillRepeatedly(Return(false));
|
||||||
|
|
||||||
|
filesystem_item fsi;
|
||||||
|
fsi.directory = false;
|
||||||
|
fsi.api_path = "/test.txt";
|
||||||
|
fsi.size = test_chunk_size * 16U;
|
||||||
|
fsi.source_path = source_path;
|
||||||
|
|
||||||
|
{
|
||||||
|
ring_buffer_open_file file(ring_buffer_dir, test_chunk_size, 30U, fsi,
|
||||||
|
provider, 8U);
|
||||||
|
|
||||||
|
file.set(0U, 3U);
|
||||||
|
file.forward(1U);
|
||||||
|
|
||||||
|
EXPECT_EQ(std::size_t(4U), file.get_current_chunk());
|
||||||
|
EXPECT_EQ(std::size_t(0U), file.get_first_chunk());
|
||||||
|
EXPECT_EQ(std::size_t(7U), file.get_last_chunk());
|
||||||
|
|
||||||
|
for (std::size_t chunk = 0U; chunk <= 7U; ++chunk) {
|
||||||
|
EXPECT_TRUE(file.get_read_state(chunk)) << "chunk " << chunk;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(ring_buffer_open_file_test, forward_center_caps_at_file_end) {
|
||||||
|
auto source_path = test::generate_test_file_name("ring_buffer_open_file");
|
||||||
|
EXPECT_CALL(provider, is_read_only()).WillRepeatedly(Return(false));
|
||||||
|
|
||||||
|
filesystem_item fsi;
|
||||||
|
fsi.directory = false;
|
||||||
|
fsi.api_path = "/test.txt";
|
||||||
|
fsi.size = test_chunk_size * 16U;
|
||||||
|
fsi.source_path = source_path;
|
||||||
|
|
||||||
|
{
|
||||||
|
ring_buffer_open_file file(ring_buffer_dir, test_chunk_size, 30U, fsi,
|
||||||
|
provider, 8U);
|
||||||
|
|
||||||
|
file.set(6U, 9U);
|
||||||
|
file.forward(100U);
|
||||||
|
|
||||||
|
EXPECT_EQ(std::size_t(15U), file.get_current_chunk());
|
||||||
|
EXPECT_EQ(std::size_t(8U), file.get_first_chunk());
|
||||||
|
EXPECT_EQ(std::size_t(15U), file.get_last_chunk());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(ring_buffer_open_file_test,
|
||||||
|
forward_delta_ge_ring_triggers_full_invalidation_path) {
|
||||||
|
auto source_path = test::generate_test_file_name("ring_buffer_open_file");
|
||||||
|
EXPECT_CALL(provider, is_read_only()).WillRepeatedly(Return(false));
|
||||||
|
|
||||||
|
filesystem_item fsi;
|
||||||
|
fsi.directory = false;
|
||||||
|
fsi.api_path = "/test.txt";
|
||||||
|
fsi.size = test_chunk_size * 16U;
|
||||||
|
fsi.source_path = source_path;
|
||||||
|
|
||||||
|
{
|
||||||
|
ring_buffer_open_file file(ring_buffer_dir, test_chunk_size, 30U, fsi,
|
||||||
|
provider, 8U);
|
||||||
|
|
||||||
|
file.set(0U, 0U);
|
||||||
|
file.forward(100U);
|
||||||
|
|
||||||
|
EXPECT_EQ(std::size_t(15U), file.get_current_chunk());
|
||||||
|
EXPECT_EQ(std::size_t(8U), file.get_first_chunk());
|
||||||
|
EXPECT_EQ(std::size_t(15U), file.get_last_chunk());
|
||||||
|
|
||||||
|
for (std::size_t chunk = 8U; chunk <= 15U; ++chunk) {
|
||||||
|
EXPECT_FALSE(file.get_read_state(chunk)) << "chunk " << chunk;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(ring_buffer_open_file_test,
|
||||||
|
forward_center_marks_only_tail_entrants_unread) {
|
||||||
|
auto source_path = test::generate_test_file_name("ring_buffer_open_file");
|
||||||
|
EXPECT_CALL(provider, is_read_only()).WillRepeatedly(Return(false));
|
||||||
|
|
||||||
|
filesystem_item fsi;
|
||||||
|
fsi.directory = false;
|
||||||
|
fsi.api_path = "/test.txt";
|
||||||
|
fsi.size = test_chunk_size * 16U;
|
||||||
|
fsi.source_path = source_path;
|
||||||
|
|
||||||
|
{
|
||||||
|
ring_buffer_open_file file(ring_buffer_dir, test_chunk_size, 30U, fsi,
|
||||||
|
provider, 8U);
|
||||||
|
|
||||||
|
file.set(0U, 3U);
|
||||||
|
file.forward(2U);
|
||||||
|
|
||||||
|
EXPECT_EQ(std::size_t(5U), file.get_current_chunk());
|
||||||
|
EXPECT_EQ(std::size_t(1U), file.get_first_chunk());
|
||||||
|
EXPECT_EQ(std::size_t(8U), file.get_last_chunk());
|
||||||
|
|
||||||
|
for (std::size_t chunk = 1U; chunk <= 7U; ++chunk) {
|
||||||
|
EXPECT_TRUE(file.get_read_state(chunk)) << "chunk " << chunk;
|
||||||
|
}
|
||||||
|
EXPECT_FALSE(file.get_read_state(8U));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(ring_buffer_open_file_test, reverse_does_not_trigger_forward_centering) {
|
||||||
|
auto source_path = test::generate_test_file_name("ring_buffer_open_file");
|
||||||
|
EXPECT_CALL(provider, is_read_only()).WillRepeatedly(Return(false));
|
||||||
|
|
||||||
|
filesystem_item fsi;
|
||||||
|
fsi.directory = false;
|
||||||
|
fsi.api_path = "/test.txt";
|
||||||
|
fsi.size = test_chunk_size * 16U;
|
||||||
|
fsi.source_path = source_path;
|
||||||
|
|
||||||
|
{
|
||||||
|
ring_buffer_open_file file(ring_buffer_dir, test_chunk_size, 30U, fsi,
|
||||||
|
provider, 8U);
|
||||||
|
|
||||||
|
file.set(8U, 12U);
|
||||||
|
file.reverse(1U);
|
||||||
|
|
||||||
|
EXPECT_EQ(std::size_t(11U), file.get_current_chunk());
|
||||||
|
EXPECT_EQ(std::size_t(8U), file.get_first_chunk());
|
||||||
|
EXPECT_EQ(std::size_t(15U), file.get_last_chunk());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(ring_buffer_open_file_test,
|
||||||
|
forward_minimal_slide_then_center_multi_step) {
|
||||||
|
auto source_path = test::generate_test_file_name("ring_buffer_open_file");
|
||||||
|
EXPECT_CALL(provider, is_read_only()).WillRepeatedly(Return(false));
|
||||||
|
|
||||||
|
filesystem_item fsi;
|
||||||
|
fsi.directory = false;
|
||||||
|
fsi.api_path = "/test.txt";
|
||||||
|
fsi.size = test_chunk_size * 32U;
|
||||||
|
fsi.source_path = source_path;
|
||||||
|
|
||||||
|
{
|
||||||
|
ring_buffer_open_file file(ring_buffer_dir, test_chunk_size, 30U, fsi,
|
||||||
|
provider, 8U);
|
||||||
|
|
||||||
|
file.set(0U, 3U);
|
||||||
|
file.forward(7U);
|
||||||
|
|
||||||
|
EXPECT_EQ(std::size_t(10U), file.get_current_chunk());
|
||||||
|
EXPECT_EQ(std::size_t(6U), file.get_first_chunk());
|
||||||
|
EXPECT_EQ(std::size_t(13U), file.get_last_chunk());
|
||||||
|
|
||||||
|
EXPECT_FALSE(file.get_read_state(11U));
|
||||||
|
EXPECT_FALSE(file.get_read_state(12U));
|
||||||
|
EXPECT_FALSE(file.get_read_state(13U));
|
||||||
|
}
|
||||||
|
}
|
||||||
} // namespace repertory
|
} // namespace repertory
|
||||||
|
Reference in New Issue
Block a user