Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(84)

Side by Side Diff: tests/DocumentTest.cpp

Issue 33423002: add tests for SkDocument (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: make functios static Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « gyp/tests.gyp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #include "Test.h"
2 #include "TestClassDef.h"
3
4 #include "SkCanvas.h"
5 #include "SkDocument.h"
6 #include "SkOSFile.h"
7 #include "SkStream.h"
8
9 static void test_empty(skiatest::Reporter* reporter) {
10 SkDynamicMemoryWStream stream;
11
12 SkDocument* doc = SkDocument::CreatePDF(&stream);
13
14 doc->close();
15
16 REPORTER_ASSERT(reporter, stream.bytesWritten() == 0);
17 }
18
19 static void test_abort(skiatest::Reporter* reporter) {
20 SkDynamicMemoryWStream stream;
21 SkAutoTUnref<SkDocument> doc(SkDocument::CreatePDF(&stream));
22
23 SkCanvas* canvas = doc->beginPage(100, 100);
24 canvas->drawColor(SK_ColorRED);
25 doc->endPage();
26
27 doc->abort();
28
29 REPORTER_ASSERT(reporter, stream.bytesWritten() == 0);
30 }
31
32 static void test_abortWithFile(skiatest::Reporter* reporter) {
33 SkString tmpDir = skiatest::Test::GetTmpDir();
34
35 if (tmpDir.isEmpty()) {
36 return; // TODO(edisonn): unfortunatelly this pattern is used in other
37 // tests, but if GetTmpDir() starts returning and empty dir
38 // allways, then all these tests will be disabled.
39 }
40
41 SkString path = SkOSPath::SkPathJoin(tmpDir.c_str(), "aborted.pdf");
42
43 // Make sure doc's destructor is called to flush.
44 {
45 SkAutoTUnref<SkDocument> doc(SkDocument::CreatePDF(path.c_str()));
46
47 SkCanvas* canvas = doc->beginPage(100, 100);
48 canvas->drawColor(SK_ColorRED);
49 doc->endPage();
50
51 doc->abort();
52 }
53
54 FILE* file = fopen(path.c_str(), "r");
55 // The created file should be empty.
56 char buffer[100];
57 REPORTER_ASSERT(reporter, fread(buffer, 1, 1, file) == 0);
58 fclose(file);
59 }
60
61 static void test_file(skiatest::Reporter* reporter) {
62 SkString tmpDir = skiatest::Test::GetTmpDir();
63 if (tmpDir.isEmpty()) {
64 return; // TODO(edisonn): unfortunatelly this pattern is used in other
65 // tests, but if GetTmpDir() starts returning and empty dir
66 // allways, then all these tests will be disabled.
67 }
68
69 SkString path = SkOSPath::SkPathJoin(tmpDir.c_str(), "file.pdf");
70
71 SkAutoTUnref<SkDocument> doc(SkDocument::CreatePDF(path.c_str()));
72
73 SkCanvas* canvas = doc->beginPage(100, 100);
74
75 canvas->drawColor(SK_ColorRED);
76 doc->endPage();
77 doc->close();
78
79 FILE* file = fopen(path.c_str(), "r");
80 REPORTER_ASSERT(reporter, file != NULL);
81 char header[100];
82 fread(header, 4, 1, file);
83 REPORTER_ASSERT(reporter, strncmp(header, "%PDF", 4) == 0);
84 fclose(file);
85 }
86
87 static void test_close(skiatest::Reporter* reporter) {
88 SkDynamicMemoryWStream stream;
89 SkAutoTUnref<SkDocument> doc(SkDocument::CreatePDF(&stream));
90
91 SkCanvas* canvas = doc->beginPage(100, 100);
92 canvas->drawColor(SK_ColorRED);
93 doc->endPage();
94
95 doc->close();
96
97 REPORTER_ASSERT(reporter, stream.bytesWritten() != 0);
98 }
99
100 DEF_TEST(document_tests, reporter) {
101 test_empty(reporter);
102 test_abort(reporter);
103 test_abortWithFile(reporter);
104 test_file(reporter);
105 test_close(reporter);
106 }
OLDNEW
« no previous file with comments | « gyp/tests.gyp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698