Code

simplify sketch result to fix crash
[inkscape.git] / src / style-test.h
2 #ifndef SEEN_STYLE_TEST_H
3 #define SEEN_STYLE_TEST_H
5 #include <cxxtest/TestSuite.h>
7 #include "test-helpers.h"
9 #include "style.h"
11 class StyleTest : public CxxTest::TestSuite
12 {
13 public:
14     SPDocument* _doc;
16     StyleTest() :
17         _doc(0)
18     {
19     }
21     virtual ~StyleTest()
22     {
23         if ( _doc )
24         {
25             sp_document_unref( _doc );
26             _doc = 0;
27         }
28     }
30     static void createSuiteSubclass( StyleTest*& dst )
31     {
32         dst = new StyleTest();
33     }
35 // createSuite and destroySuite get us per-suite setup and teardown
36 // without us having to worry about static initialization order, etc.
37     static StyleTest *createSuite()
38     {
39         StyleTest* suite = Inkscape::createSuiteAndDocument<StyleTest>( createSuiteSubclass );
40         return suite;
41     }
43     static void destroySuite( StyleTest *suite )
44     {
45         delete suite;
46     }
48     // ---------------------------------------------------------------
49     // ---------------------------------------------------------------
50     // ---------------------------------------------------------------
52     void testOne()
53     {
54         struct TestCase {
55             TestCase(gchar const* src, gchar const* dst = 0, gchar const* uri = 0) : src(src), dst(dst), uri(uri) {}
56             gchar const* src;
57             gchar const* dst;
58             gchar const* uri;
59         };
61         TestCase cases[] = {
62             TestCase("fill:none"),
63             TestCase("fill:currentColor"),
64             TestCase("fill:#ff00ff"),
66             TestCase("fill:rgb(100%, 0%, 100%)", "fill:#ff00ff"),
67             // TODO - fix this to preserve the string
68             TestCase("fill:url(#painter) rgb(100%, 0%, 100%)",
69                      "fill:url(#painter) #ff00ff", "#painter"),
71             TestCase("fill:rgb(255, 0, 255)", "fill:#ff00ff"),
72             // TODO - fix this to preserve the string
73             TestCase("fill:url(#painter) rgb(255, 0, 255)",
74                      "fill:url(#painter) #ff00ff", "#painter"),
77 //             TestCase("fill:#ff00ff icc-color(colorChange, 0.1, 0.5, 0.1)"),
79             TestCase("fill:url(#painter)", 0, "#painter"),
80             TestCase("fill:url(#painter) none", 0, "#painter"),
81             TestCase("fill:url(#painter) currentColor", 0, "#painter"),
82             TestCase("fill:url(#painter) #ff00ff", 0, "#painter"),
83 //             TestCase("fill:url(#painter) rgb(100%, 0%, 100%)", 0, "#painter"),
84 //             TestCase("fill:url(#painter) rgb(255, 0, 255)", 0, "#painter"),
86             TestCase("fill:url(#painter) #ff00ff icc-color(colorChange, 0.1, 0.5, 0.1)", 0, "#painter"),
88 //             TestCase("fill:url(#painter) inherit", 0, "#painter"),
89             TestCase("fill:inherit"),
90             TestCase(0)
91         };
93         for ( gint i = 0; cases[i].src; i++ ) {
94             SPStyle *style = sp_style_new(_doc);
95             TS_ASSERT(style);
96             if ( style ) {
97                 sp_style_merge_from_style_string( style, cases[i].src );
99                 if ( cases[i].uri ) {
100                     TSM_ASSERT( cases[i].src, style->fill.value.href );
101                     if ( style->fill.value.href ) {
102                         TS_ASSERT_EQUALS( style->fill.value.href->getURI()->toString(), std::string(cases[i].uri) );
103                     }
104                 } else {
105                     TS_ASSERT( !style->fill.value.href || !style->fill.value.href->getObject() );
106                 }
108                 gchar *str0_set = sp_style_write_string( style, SP_STYLE_FLAG_IFSET );
109                 //printf("<<%s>>\n", str0_set);
110                 if ( cases[i].dst ) {
111                     TS_ASSERT_EQUALS( std::string(str0_set), std::string(cases[i].dst) );
112                 } else {
113                     TS_ASSERT_EQUALS( std::string(str0_set), std::string(cases[i].src) );
114                 }
116                 g_free(str0_set);
117                 sp_style_unref(style);
118             }
119         }
120     }
122 };
125 #endif // SEEN_STYLE_TEST_H
127 /*
128   Local Variables:
129   mode:c++
130   c-file-style:"stroustrup"
131   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
132   indent-tabs-mode:nil
133   fill-column:99
134   End:
135 */
136 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :