Code

97be4fead6edfde82139ef468833264f4bf58b43
[inkscape.git] / src / sp-style-elem-test.cpp
1 #include "attributes.h"
2 #include "document.h"
3 #include "inkscape-private.h"
4 #include "sp-style-elem.h"
5 #include "streq.h"
6 #include "utest/utest.h"
7 #include "xml/repr.h"
9 /// Dummy functions to keep linker happy
10 int sp_main_gui (int, char const**) { return 0; }
11 int sp_main_console (int, char const**) { return 0; }
13 static bool
14 test_style_elem()
15 {
16     utest_start("SPStyleElem");
17 //#if 0
18     UTEST_TEST("init") {
19         SPStyleElem *style_elem = static_cast<SPStyleElem *>(g_object_new(SP_TYPE_STYLE_ELEM, NULL));
20         UTEST_ASSERT(!style_elem->is_css);
21         UTEST_ASSERT(style_elem->media.print);
22         UTEST_ASSERT(style_elem->media.screen);
23         g_object_unref(style_elem);
24     }
25 //#endif
27     /* Create the global inkscape object. */
28     static_cast<void>(g_object_new(inkscape_get_type(), NULL));
30 //#if 0
31     SPDocument *doc = sp_document_new_dummy();
33     UTEST_TEST("sp_object_set(\"type\")") {
34         SPStyleElem *style_elem = static_cast<SPStyleElem *>(g_object_new(SP_TYPE_STYLE_ELEM, NULL));
35         SP_OBJECT(style_elem)->document = doc;
36         sp_object_set(SP_OBJECT(style_elem), SP_ATTR_TYPE, "something unrecognized");
37         UTEST_ASSERT(!style_elem->is_css);
38         sp_object_set(SP_OBJECT(style_elem), SP_ATTR_TYPE, "text/css");
39         UTEST_ASSERT(style_elem->is_css);
40         sp_object_set(SP_OBJECT(style_elem), SP_ATTR_TYPE, "atext/css");
41         UTEST_ASSERT(!style_elem->is_css);
42         sp_object_set(SP_OBJECT(style_elem), SP_ATTR_TYPE, "text/cssx");
43         UTEST_ASSERT(!style_elem->is_css);
44         g_object_unref(style_elem);
45     }
47     UTEST_TEST("write") {
48         SPStyleElem *style_elem = SP_STYLE_ELEM(g_object_new(SP_TYPE_STYLE_ELEM, NULL));
49         SP_OBJECT(style_elem)->document = doc;
50         sp_object_set(SP_OBJECT(style_elem), SP_ATTR_TYPE, "text/css");
51         Inkscape::XML::Node *repr = sp_repr_new("svg:style");
52         SP_OBJECT(style_elem)->updateRepr(repr, SP_OBJECT_WRITE_ALL);
53         {
54             gchar const *typ = repr->attribute("type");
55             UTEST_ASSERT(streq(typ, "text/css"));
56         }
57         g_object_unref(style_elem);
58     }
60     UTEST_TEST("build") {
61         SPStyleElem &style_elem = *SP_STYLE_ELEM(g_object_new(SP_TYPE_STYLE_ELEM, NULL));
62         Inkscape::XML::Node *const repr = sp_repr_new("svg:style");
63         repr->setAttribute("type", "text/css");
64         sp_object_invoke_build(&style_elem, doc, repr, false);
65         UTEST_ASSERT(style_elem.is_css);
66         UTEST_ASSERT(style_elem.media.print);
67         UTEST_ASSERT(style_elem.media.screen);
69         /* Some checks relevant to the read_content test below. */
70         {
71             g_assert(doc->style_cascade);
72             CRStyleSheet const *const stylesheet = cr_cascade_get_sheet(doc->style_cascade, ORIGIN_AUTHOR);
73             g_assert(stylesheet);
74             g_assert(stylesheet->statements == NULL);
75         }
77         g_object_unref(&style_elem);
78         Inkscape::GC::release(repr);
79     }
81     UTEST_TEST("read_content") {
82         SPStyleElem &style_elem = *SP_STYLE_ELEM(g_object_new(SP_TYPE_STYLE_ELEM, NULL));
83         Inkscape::XML::Node *const repr = sp_repr_new("svg:style");
84         repr->setAttribute("type", "text/css");
85         Inkscape::XML::Node *const content_repr = sp_repr_new_text(".myclass { }");
86         repr->addChild(content_repr, NULL);
87         sp_object_invoke_build(&style_elem, doc, repr, false);
88         UTEST_ASSERT(style_elem.is_css);
89         UTEST_ASSERT(doc->style_cascade);
90         CRStyleSheet const *const stylesheet = cr_cascade_get_sheet(doc->style_cascade, ORIGIN_AUTHOR);
91         UTEST_ASSERT(stylesheet != NULL);
92         UTEST_ASSERT(stylesheet->statements != NULL);
93         g_object_unref(&style_elem);
94         Inkscape::GC::release(repr);
95     }
96 //#endif
97     return utest_end();
98 }
100 int main()
102     g_type_init();
103     Inkscape::GC::init();
104     return ( test_style_elem()
105              ? EXIT_SUCCESS
106              : EXIT_FAILURE );
109 /*
110   Local Variables:
111   mode:c++
112   c-file-style:"stroustrup"
113   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
114   indent-tabs-mode:nil
115   fill-column:99
116   End:
117 */
118 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :