diff options
| author | Jon A. Cruz <jon@joncruz.org> | 2008-08-01 07:52:55 +0000 |
|---|---|---|
| committer | joncruz <joncruz@users.sourceforge.net> | 2008-08-01 07:52:55 +0000 |
| commit | 1ecb8294a7ee5bbfd0c2d1b9b0ef031f135e574e (patch) | |
| tree | f7ba37cb1785645bb729ddf285f5898e030991a9 /src | |
| parent | adding tabs to SVGFonts dialog (diff) | |
| download | inkscape-1ecb8294a7ee5bbfd0c2d1b9b0ef031f135e574e.tar.gz inkscape-1ecb8294a7ee5bbfd0c2d1b9b0ef031f135e574e.zip | |
Added to tests for SVG units, and fixed warning of missing case
(bzr r6498)
Diffstat (limited to 'src')
| -rw-r--r-- | src/svg/svg-length-test.h | 44 | ||||
| -rw-r--r-- | src/svg/svg-length.cpp | 1 | ||||
| -rw-r--r-- | src/svg/svg-length.h | 35 |
3 files changed, 63 insertions, 17 deletions
diff --git a/src/svg/svg-length-test.h b/src/svg/svg-length-test.h index 829612b26..0f1ca5c95 100644 --- a/src/svg/svg-length-test.h +++ b/src/svg/svg-length-test.h @@ -4,6 +4,9 @@ #include <glib.h> #include <utility> +// function internal to svg-length.cpp: +gchar const *sp_svg_length_get_css_units(SVGLength::Unit unit); + class SvgLengthTest : public CxxTest::TestSuite { private: @@ -90,6 +93,47 @@ public: } } + void testEnumMappedToString() + { + for ( int i = (static_cast<int>(SVGLength::NONE) + 1); i <= static_cast<int>(SVGLength::LAST_UNIT); i++ ) { + SVGLength::Unit target = static_cast<SVGLength::Unit>(i); + // PX is a special case where we don't have a unit string + if ( (target != SVGLength::PX) && (target != SVGLength::FOOT) ) { + gchar const* val = sp_svg_length_get_css_units(target); + TSM_ASSERT_DIFFERS(i, val, ""); + } + } + } + + // Ensure that all unit suffix strings used are allowed by SVG + void testStringsAreValidSVG() + { + gchar const* valid[] = {"", "em", "ex", "px", "pt", "pc", "cm", "mm", "in", "%"}; + std::set<std::string> validStrings(valid, valid + G_N_ELEMENTS(valid)); + for ( int i = (static_cast<int>(SVGLength::NONE) + 1); i <= static_cast<int>(SVGLength::LAST_UNIT); i++ ) { + SVGLength::Unit target = static_cast<SVGLength::Unit>(i); + gchar const* val = sp_svg_length_get_css_units(target); + TSM_ASSERT(i, validStrings.find(std::string(val)) != validStrings.end()); + } + } + + // Ensure that all unit suffix strings allowed by SVG are covered by enum + void testValidSVGStringsSupported() + { + // Note that "px" is ommitted from the list, as it will be assumed to be so if not explicitly set. + gchar const* valid[] = {"em", "ex", "pt", "pc", "cm", "mm", "in", "%"}; + std::set<std::string> validStrings(valid, valid + G_N_ELEMENTS(valid)); + for ( int i = (static_cast<int>(SVGLength::NONE) + 1); i <= static_cast<int>(SVGLength::LAST_UNIT); i++ ) { + SVGLength::Unit target = static_cast<SVGLength::Unit>(i); + gchar const* val = sp_svg_length_get_css_units(target); + std::set<std::string>::iterator iter = validStrings.find(std::string(val)); + if (iter != validStrings.end()) { + validStrings.erase(iter); + } + } + TSM_ASSERT_EQUALS(validStrings, validStrings.size(), 0); + } + // TODO: More tests }; diff --git a/src/svg/svg-length.cpp b/src/svg/svg-length.cpp index 8c2a8caf3..505ca4ad9 100644 --- a/src/svg/svg-length.cpp +++ b/src/svg/svg-length.cpp @@ -508,6 +508,7 @@ gchar const *sp_svg_length_get_css_units(SVGLength::Unit unit) case SVGLength::MM: return "mm"; case SVGLength::CM: return "cm"; case SVGLength::INCH: return "in"; + case SVGLength::FOOT: return ""; // Does not have a "foot" unit string in the SVG spec case SVGLength::EM: return "em"; case SVGLength::EX: return "ex"; case SVGLength::PERCENT: return "%"; diff --git a/src/svg/svg-length.h b/src/svg/svg-length.h index 9623d20f3..1f4be8123 100644 --- a/src/svg/svg-length.h +++ b/src/svg/svg-length.h @@ -1,5 +1,5 @@ -#ifndef __SP_SVG_LENGTH_H__ -#define __SP_SVG_LENGTH_H__ +#ifndef SEEN_SP_SVG_LENGTH_H +#define SEEN_SP_SVG_LENGTH_H /** * \file src/svg/svg-length.h @@ -21,19 +21,20 @@ class SVGLength { public: - + enum Unit { NONE, - PX, - PT, - PC, - MM, - CM, - INCH, - FOOT, - EM, - EX, - PERCENT + PX, + PT, + PC, + MM, + CM, + INCH, + FOOT, + EM, + EX, + PERCENT, + LAST_UNIT = PERCENT }; bool _set; @@ -43,9 +44,9 @@ public: float operator=(float v) { _set = true; - unit = NONE; - value = computed = v; - return v; + unit = NONE; + value = computed = v; + return v; } bool read(gchar const *str); @@ -56,7 +57,7 @@ public: void update(double em, double ex, double scale); }; -#endif +#endif // SEEN_SP_SVG_LENGTH_H /* Local Variables: |
