1 // Aseprite
2 // Copyright (c) 2001-2018 David Capello
3 //
4 // This program is distributed under the terms of
5 // the End-User License Agreement for Aseprite.
6
7 #include "tests/test.h"
8
9 #include "app/context.h"
10 #include "app/doc.h"
11
12 using namespace app;
13 using namespace doc;
14
15 namespace doc {
16
operator <<(std::ostream & os,ColorMode mode)17 std::ostream& operator<<(std::ostream& os, ColorMode mode) {
18 return os << (int)mode;
19 }
20
21 } // namespace doc
22
TEST(Context,AddDocument)23 TEST(Context, AddDocument)
24 {
25 Context ctx;
26 auto doc = ctx.documents().add(32, 28);
27 ASSERT_TRUE(doc != NULL);
28
29 EXPECT_EQ(32, doc->width());
30 EXPECT_EQ(28, doc->height());
31 EXPECT_EQ(ColorMode::RGB, doc->colorMode()); // Default color mode is RGB
32 }
33
TEST(Context,DeleteDocuments)34 TEST(Context, DeleteDocuments)
35 {
36 Context ctx;
37 auto doc1 = ctx.documents().add(2, 2);
38 auto doc2 = ctx.documents().add(4, 4);
39 EXPECT_EQ(2, ctx.documents().size());
40
41 delete doc1;
42 delete doc2;
43
44 EXPECT_EQ(0, ctx.documents().size());
45 }
46
TEST(Context,CloseAndDeleteDocuments)47 TEST(Context, CloseAndDeleteDocuments)
48 {
49 Context ctx;
50 EXPECT_EQ(0, ctx.documents().size());
51
52 auto doc1 = ctx.documents().add(2, 2);
53 auto doc2 = ctx.documents().add(4, 4);
54 EXPECT_EQ(2, ctx.documents().size());
55
56 doc1->close();
57 EXPECT_EQ(1, ctx.documents().size());
58
59 delete doc1;
60 delete doc2;
61 EXPECT_EQ(0, ctx.documents().size());
62 }
63
TEST(Context,SwitchContext)64 TEST(Context, SwitchContext)
65 {
66 Context ctx1, ctx2;
67 auto doc1 = new Doc(nullptr);
68 auto doc2 = new Doc(nullptr);
69 doc1->setContext(&ctx1);
70 doc2->setContext(&ctx2);
71 EXPECT_EQ(&ctx1, doc1->context());
72 EXPECT_EQ(&ctx2, doc2->context());
73
74 doc1->setContext(&ctx2);
75 doc2->setContext(&ctx1);
76 EXPECT_EQ(&ctx2, doc1->context());
77 EXPECT_EQ(&ctx1, doc2->context());
78
79 ctx2.documents().remove(doc1);
80 ctx1.documents().remove(doc2);
81 ctx1.documents().add(doc1);
82 ctx2.documents().add(doc2);
83 EXPECT_EQ(&ctx1, doc1->context());
84 EXPECT_EQ(&ctx2, doc2->context());
85 }
86