Index: printing/emf_win_unittest.cc |
diff --git a/printing/emf_win_unittest.cc b/printing/emf_win_unittest.cc |
index 4312b2ca7c389549ab40b3626f1e2a6eff086edd..7aa8faa00f49afaebfd669bd4ba6fdc4d72d9b7c 100644 |
--- a/printing/emf_win_unittest.cc |
+++ b/printing/emf_win_unittest.cc |
@@ -15,6 +15,7 @@ |
#include "base/scoped_ptr.h" |
#include "base/scoped_temp_dir.h" |
#include "base/win/scoped_hdc.h" |
+#include "printing/metafile_factory.h" |
#include "printing/printing_context.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -195,3 +196,31 @@ TEST(EmfTest, FileBackedDC) { |
emf.CloseEmf(); |
} |
+TEST(EmfTest, DCFactory) { |
vandebo (ex-Chrome)
2011/02/22 22:18:16
Maybe put this next to DC. You could pull out the
dpapad
2011/02/23 00:44:39
The unit test is basically identical, only the ini
|
+ // Simplest use case. |
+ scoped_ptr<printing::NativeMetafile> emf( |
+ printing::MetafileFactory::GetMetafile()); |
+ RECT rect = {100, 100, 200, 200}; |
+ HDC hdc = CreateCompatibleDC(NULL); |
+ EXPECT_TRUE(hdc != NULL); |
+ EXPECT_TRUE(emf->CreateDc(hdc, &rect)); |
+ EXPECT_TRUE(emf->hdc() != NULL); |
+ // In theory, you'd use the HDC with GDI functions here. |
+ EXPECT_TRUE(emf->CloseDc()); |
+ uint32 size = emf->GetDataSize(); |
+ EXPECT_EQ(size, EMF_HEADER_SIZE); |
+ std::vector<BYTE> data; |
+ EXPECT_TRUE(emf->GetData(&data)); |
+ EXPECT_EQ(data.size(), size); |
+ emf->CloseEmf(); |
+ EXPECT_TRUE(DeleteDC(hdc)); |
+ |
+ // Playback the data. |
+ hdc = CreateCompatibleDC(NULL); |
+ EXPECT_TRUE(hdc); |
+ EXPECT_TRUE(emf>Init(&data.front(), size)); |
+ RECT output_rect = {0, 0, 10, 10}; |
+ EXPECT_TRUE(emf->Playback(hdc, &output_rect)); |
+ EXPECT_TRUE(DeleteDC(hdc)); |
+} |
+ |