Index: download_action_unittest.cc |
diff --git a/download_action_unittest.cc b/download_action_unittest.cc |
index 7571fb4e70a08826f8f55a84f24a3f18a537e65b..2f37dfbfdbc59a0d527cc29e2889d9a8fcf7ccd1 100644 |
--- a/download_action_unittest.cc |
+++ b/download_action_unittest.cc |
@@ -80,9 +80,18 @@ struct EntryPointArgs { |
ActionProcessor *processor; |
}; |
+struct StartProcessorInRunLoopArgs { |
+ ActionProcessor* processor; |
+ MockHttpFetcher* http_fetcher; |
+}; |
+ |
gboolean StartProcessorInRunLoop(gpointer data) { |
- ActionProcessor *processor = reinterpret_cast<ActionProcessor*>(data); |
+ ActionProcessor* processor = |
+ reinterpret_cast<StartProcessorInRunLoopArgs*>(data)->processor; |
processor->StartProcessing(); |
+ MockHttpFetcher* http_fetcher = |
+ reinterpret_cast<StartProcessorInRunLoopArgs*>(data)->http_fetcher; |
+ http_fetcher->SetOffset(1); |
return FALSE; |
} |
@@ -96,10 +105,11 @@ void TestWithData(const vector<char>& data, |
ScopedTempFile output_temp_file; |
DirectFileWriter writer; |
- // takes ownership of passed in HttpFetcher |
+ // We pull off the first byte from data and seek past it. |
+ |
string hash = hash_test ? |
OmahaHashCalculator::OmahaHashOfString("random string") : |
- OmahaHashCalculator::OmahaHashOfData(data); |
+ OmahaHashCalculator::OmahaHashOfBytes(&data[1], data.size() - 1); |
uint64_t size = data.size() + (size_test ? 1 : 0); |
InstallPlan install_plan(true, |
false, |
@@ -111,8 +121,9 @@ void TestWithData(const vector<char>& data, |
ObjectFeederAction<InstallPlan> feeder_action; |
feeder_action.set_obj(install_plan); |
PrefsMock prefs; |
- DownloadAction download_action(&prefs, new MockHttpFetcher(&data[0], |
- data.size())); |
+ MockHttpFetcher* http_fetcher = new MockHttpFetcher(&data[0], data.size()); |
+ // takes ownership of passed in HttpFetcher |
+ DownloadAction download_action(&prefs, http_fetcher); |
download_action.SetTestFileWriter(&writer); |
BondActions(&feeder_action, &download_action); |
DownloadActionDelegateMock download_delegate; |
@@ -120,7 +131,11 @@ void TestWithData(const vector<char>& data, |
InSequence s; |
download_action.set_delegate(&download_delegate); |
EXPECT_CALL(download_delegate, SetDownloadStatus(true)).Times(1); |
- EXPECT_CALL(download_delegate, BytesReceived(_, _)).Times(AtLeast(1)); |
+ if (data.size() > kMockHttpFetcherChunkSize) |
+ EXPECT_CALL(download_delegate, |
+ BytesReceived(1 + kMockHttpFetcherChunkSize, _)); |
+ |
+ EXPECT_CALL(download_delegate, BytesReceived(_, _)).Times(AtLeast(1)); |
EXPECT_CALL(download_delegate, SetDownloadStatus(false)).Times(1); |
} |
ActionExitCode expected_code = kActionCodeSuccess; |
@@ -130,14 +145,17 @@ void TestWithData(const vector<char>& data, |
expected_code = kActionCodeDownloadSizeMismatchError; |
DownloadActionTestProcessorDelegate delegate(expected_code); |
delegate.loop_ = loop; |
- delegate.expected_data_ = data; |
+ delegate.expected_data_ = vector<char>(data.begin() + 1, data.end()); |
delegate.path_ = output_temp_file.GetPath(); |
ActionProcessor processor; |
processor.set_delegate(&delegate); |
processor.EnqueueAction(&feeder_action); |
processor.EnqueueAction(&download_action); |
- g_timeout_add(0, &StartProcessorInRunLoop, &processor); |
+ StartProcessorInRunLoopArgs args; |
+ args.processor = &processor; |
+ args.http_fetcher = http_fetcher; |
+ g_timeout_add(0, &StartProcessorInRunLoop, &args); |
g_main_loop_run(loop); |
g_main_loop_unref(loop); |
} |