From 5acd50728a4deae35313988cbd5b72faf5e8445a Mon Sep 17 00:00:00 2001 From: joncruz Date: Fri, 28 Apr 2006 08:48:09 +0000 Subject: [PATCH] Adding unit test for verbs. --- ChangeLog | 9 +++-- src/Makefile_insert | 3 +- src/MultiPrinter.h | 1 - src/verbs-test.h | 86 +++++++++++++++++++++++++++++++++++++++++++++ src/verbs.h | 12 +++++++ 5 files changed, 107 insertions(+), 4 deletions(-) create mode 100644 src/verbs-test.h diff --git a/ChangeLog b/ChangeLog index 5add0270a..30b8ddbf0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-04-28 Jon A. Cruz + + * src/Makefile_insert, src/MultiPrinter.h, src/verbs.h, + src/verbs-test.h: + Adding unit test for verbs. + 2006-04-27 verbalshadow * src/io/resource.h, src/io/resource.cpp, @@ -5,8 +11,7 @@ Added CREATE v0.1 support for gradients/swatches/patterns Support for Linux & Win32. Mac support waiting final support Directory info. - - + 2006-04-26 Jon A. Cruz * src/Makefile.am, src/MultiPrinter.h, src/PylogFormatter.h, 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 + +#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(SP_VERB_LAST) ); + TS_ASSERT_EQUALS( static_cast(SP_VERB_LAST) + 1, TestHook::getInternalTableSize() ); + } + + void testEnumFixed() + { + TS_ASSERT_EQUALS( 0, static_cast(SP_VERB_INVALID) ); + TS_ASSERT_EQUALS( 1, static_cast(SP_VERB_NONE) ); + + TS_ASSERT_DIFFERS( 0, static_cast(SP_VERB_LAST) ); + TS_ASSERT_DIFFERS( 1, static_cast(SP_VERB_LAST) ); + } + + void testFetch() + { + for ( int i = 0; i < static_cast(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(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 */ -- 2.30.2