1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
#ifndef SEEN_STYLE_TEST_H
#define SEEN_STYLE_TEST_H
#include <cxxtest/TestSuite.h>
#include "style.h"
class StyleTest : public CxxTest::TestSuite
{
public:
void testOne()
{
struct TestCase {
TestCase(gchar const* src, gchar const* dst = 0, gchar const* uri = 0) : src(src), dst(dst), uri(uri) {}
gchar const* src;
gchar const* dst;
gchar const* uri;
};
TestCase cases[] = {
TestCase("fill:none"),
TestCase("fill:currentColor"),
TestCase("fill:#ff00ff"),
TestCase("fill:rgb(100%, 0%, 100%)", "fill:#ff00ff"),
TestCase("fill:rgb(255, 0, 255)", "fill:#ff00ff"),
// TestCase("fill:#ff00ff icc-color(colorChange, 0.1, 0.5, 0.1)"),
TestCase("fill:url(#painter)", 0, "#painter"),
// TestCase("fill:url(#painter) none", 0, "#painter"),
// TestCase("fill:url(#painter) currentColor", 0, "#painter"),
// TestCase("fill:url(#painter) #ff00ff", 0, "#painter"),
// TestCase("fill:url(#painter) rgb(100%, 0%, 100%)", 0, "#painter"),
// TestCase("fill:url(#painter) rgb(255, 0, 255)", 0, "#painter"),
// TestCase("fill:url(#painter) #ff00ff icc-color(colorChange, 0.1, 0.5, 0.1)",
// "fill:url(#painter) #ff00ff icc-color(colorChange, 0.10000000000000001, 0.50000000000000000, 0.10000000000000001)", "#painter"),
// TestCase("fill:url(#painter) inherit", 0, "#painter"),
TestCase("fill:inherit"),
TestCase(0)
};
for ( gint i = 0; cases[i].src; i++ ) {
SPStyle *style = sp_style_new();
TS_ASSERT(style);
if ( style ) {
sp_style_merge_from_style_string( style, cases[i].src );
if ( cases[i].uri ) {
TS_ASSERT( style->fill.value.paint.uri );
if ( style->fill.value.paint.uri ) {
TS_ASSERT_EQUALS( std::string(style->fill.value.paint.uri), std::string(cases[i].uri) );
}
} else {
TS_ASSERT( !style->fill.value.paint.uri );
}
gchar *str0_set = sp_style_write_string( style, SP_STYLE_FLAG_IFSET );
//printf("<<%s>>\n", str0_set);
if ( cases[i].dst ) {
TS_ASSERT_EQUALS( std::string(str0_set), std::string(cases[i].dst) );
} else {
TS_ASSERT_EQUALS( std::string(str0_set), std::string(cases[i].src) );
}
g_free(str0_set);
sp_style_unref(style);
}
}
}
};
#endif // SEEN_STYLE_TEST_H
/*
Local Variables:
mode:c++
c-file-style:"stroustrup"
c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
indent-tabs-mode:nil
fill-column:99
End:
*/
// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
|