/*!

@page storage-mocking Writing Tests with a Mock Client

## Mocking GCS bucket read and write

It is possible to mock GCS bucket read and write using gmock framework, this is specially useful
for developer using GCS C++ client library.

### Mocking Successful call of ReadObject()

Mocking of ReadObject can be achieved by mocking `ObjectReadSource`. The following code snippet
explains this

@snippet storage_client_mock_samples.cc mock successful readobject

### Mocking Failed call of ReadObject()

Mocking of ReadObject can be achieved by mocking `ObjectReadSource`. The following code snippet
explains this

@snippet storage_client_mock_samples.cc mock failed readobject

### Mocking Successful call of WriteObject()

Mocking of ReadObject can be achieved by mocking `ObjectWriteStreambuf`. The following code snippet
explains this

@snippet storage_client_mock_samples.cc mock successful writeobject

### Mocking Failed call of WriteObject()

Mocking of ReadObject can be achieved by mocking `ObjectWriteStreambuf`. The following code snippet
explains this

@snippet storage_client_mock_samples.cc mock failed writeobject

The documentation for each member function in the [Client] class includes short
snippets on how to call the function. The snippets for
[ReadObject()][ReadObject], [WriteObject()][WriteObject],
[ListObjects()][ListObjects], and [DeleteObject()][DeleteObject] are
good places to continue learning about the library.

[Client]: @ref google::cloud::storage::Client
[ReadObject]: @ref google::cloud::storage::Client::ReadObject()
[WriteObject]: @ref google::cloud::storage::Client::WriteObject()
[ListObjects]: @ref google::cloud::storage::Client::ListObjects()
[DeleteObject]: @ref google::cloud::storage::Client::DeleteObject()

*/
