diff options
| author | Jon A. Cruz <jon@joncruz.org> | 2006-04-28 08:48:09 +0000 |
|---|---|---|
| committer | joncruz <joncruz@users.sourceforge.net> | 2006-04-28 08:48:09 +0000 |
| commit | 694afd0e010d4ae3a45ee9dfa6ca4f75063d2d5d (patch) | |
| tree | 7bbb04120cb5c092a43f87bfa2e0fa75ce82b315 /src | |
| parent | solved Bug 1474325, added italian and czech translation (diff) | |
| download | inkscape-694afd0e010d4ae3a45ee9dfa6ca4f75063d2d5d.tar.gz inkscape-694afd0e010d4ae3a45ee9dfa6ca4f75063d2d5d.zip | |
Adding unit test for verbs.
(bzr r604)
Diffstat (limited to 'src')
| -rw-r--r-- | src/Makefile_insert | 3 | ||||
| -rw-r--r-- | src/MultiPrinter.h | 1 | ||||
| -rw-r--r-- | src/verbs-test.h | 86 | ||||
| -rw-r--r-- | src/verbs.h | 12 |
4 files changed, 100 insertions, 2 deletions
diff --git a/src/Makefile_insert b/src/Makefile_insert index ce0007a15..a797984e9 100644 --- a/src/Makefile_insert +++ b/src/Makefile_insert @@ -345,4 +345,5 @@ inkscape_version.h: ../configure.ac test_all_includes = \ attributes-test.h \ - color-profile-test.h + color-profile-test.h \ + verbs-test.h diff --git a/src/MultiPrinter.h b/src/MultiPrinter.h index 1792a744f..944eead06 100644 --- a/src/MultiPrinter.h +++ b/src/MultiPrinter.h @@ -50,7 +50,6 @@ public: virtual ~MultiPrinter() { - std::cout << "CLOSING OUT TEST" << std::endl; _xmlFile.close(); _logFile.close(); } diff --git a/src/verbs-test.h b/src/verbs-test.h new file mode 100644 index 000000000..24c7c73a6 --- /dev/null +++ b/src/verbs-test.h @@ -0,0 +1,86 @@ + + +#include <cxxtest/TestSuite.h> + +#include "verbs.h" + +class VerbsTest : public CxxTest::TestSuite +{ +public: + + class TestHook : public Inkscape::Verb { + public: + static int getInternalTableSize() { return _getBaseListSize(); } + + private: + TestHook(); + }; + + void testEnumLength() + { + TS_ASSERT_DIFFERS( 0, static_cast<int>(SP_VERB_LAST) ); + TS_ASSERT_EQUALS( static_cast<int>(SP_VERB_LAST) + 1, TestHook::getInternalTableSize() ); + } + + void testEnumFixed() + { + TS_ASSERT_EQUALS( 0, static_cast<int>(SP_VERB_INVALID) ); + TS_ASSERT_EQUALS( 1, static_cast<int>(SP_VERB_NONE) ); + + TS_ASSERT_DIFFERS( 0, static_cast<int>(SP_VERB_LAST) ); + TS_ASSERT_DIFFERS( 1, static_cast<int>(SP_VERB_LAST) ); + } + + void testFetch() + { + for ( int i = 0; i < static_cast<int>(SP_VERB_LAST); i++ ) + { + char tmp[16]; + snprintf( tmp, sizeof(tmp), "Verb# %d", i ); + tmp[sizeof(tmp)-1] = 0; + std::string descr(tmp); + + Inkscape::Verb* verb = Inkscape::Verb::get(i); + TSM_ASSERT( descr, verb ); + if ( verb ) + { + TSM_ASSERT_EQUALS( descr, verb->get_code(), i ); + + if ( i != static_cast<int>(SP_VERB_INVALID) ) + { + TSM_ASSERT( descr, verb->get_id() ); + TSM_ASSERT( descr, verb->get_name() ); + + Inkscape::Verb* bounced = verb->getbyid( verb->get_id() ); + // TODO - put this back once verbs are fixed + //TSM_ASSERT( descr, bounced ); + if ( bounced ) + { + TSM_ASSERT_EQUALS( descr, bounced->get_code(), i ); + } + else + { + TS_WARN( std::string("Unable to getbyid() for ") + descr + std::string(" ID: '") + std::string(verb->get_id()) + std::string("'") ); + } + } + else + { + TSM_ASSERT( std::string("SP_VERB_INVALID"), !verb->get_id() ); + TSM_ASSERT( std::string("SP_VERB_INVALID"), !verb->get_name() ); + } + } + } + } + +}; + +/* + 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 : diff --git a/src/verbs.h b/src/verbs.h index d715466e7..f77085d7a 100644 --- a/src/verbs.h +++ b/src/verbs.h @@ -378,6 +378,18 @@ public: void delete_view (Inkscape::UI::View::View * view); void sensitive (SPDocument * in_doc = NULL, bool in_sensitive = true); + +// Yes, multiple public, protected and private sections are bad. We'll clean that up later +protected: + /** \brief Returns the size of the internal base verb array. + \return The size in elements of the internal base array. + + This is an inline function intended for testing. This should normally not be used. + For testing, a subclass that returns this value can be created to verify that the + length matches the enum values, etc. + */ + static int _getBaseListSize() {return G_N_ELEMENTS(_base_verbs);} + }; /* Verb class */ |
