| #include "clar_libgit2.h" |
| #include "git2/odb_backend.h" |
| |
| static git_repository *repo; |
| static git_odb *odb; |
| static git_odb_stream *stream; |
| |
| void test_odb_streamwrite__initialize(void) |
| { |
| repo = cl_git_sandbox_init("testrepo.git"); |
| cl_git_pass(git_repository_odb(&odb, repo)); |
| |
| cl_git_pass(git_odb_open_wstream(&stream, odb, 14, GIT_OBJ_BLOB)); |
| cl_assert_equal_sz(14, stream->declared_size); |
| } |
| |
| void test_odb_streamwrite__cleanup(void) |
| { |
| git_odb_stream_free(stream); |
| git_odb_free(odb); |
| cl_git_sandbox_cleanup(); |
| } |
| |
| void test_odb_streamwrite__can_accept_chunks(void) |
| { |
| git_oid oid; |
| |
| cl_git_pass(git_odb_stream_write(stream, "deadbeef", 8)); |
| cl_assert_equal_sz(8, stream->received_bytes); |
| |
| cl_git_pass(git_odb_stream_write(stream, "deadbeef", 6)); |
| cl_assert_equal_sz(8 + 6, stream->received_bytes); |
| |
| cl_git_pass(git_odb_stream_finalize_write(&oid, stream)); |
| } |
| |
| void test_odb_streamwrite__can_detect_missing_bytes(void) |
| { |
| git_oid oid; |
| |
| cl_git_pass(git_odb_stream_write(stream, "deadbeef", 8)); |
| cl_assert_equal_sz(8, stream->received_bytes); |
| |
| cl_git_pass(git_odb_stream_write(stream, "deadbeef", 4)); |
| cl_assert_equal_sz(8 + 4, stream->received_bytes); |
| |
| cl_git_fail(git_odb_stream_finalize_write(&oid, stream)); |
| } |
| |
| void test_odb_streamwrite__can_detect_additional_bytes(void) |
| { |
| cl_git_pass(git_odb_stream_write(stream, "deadbeef", 8)); |
| cl_assert_equal_sz(8, stream->received_bytes); |
| |
| cl_git_fail(git_odb_stream_write(stream, "deadbeef", 7)); |
| } |