cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz#ifndef SEEN_EXTRACT_URI_TEST_H
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz#define SEEN_EXTRACT_URI_TEST_H
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz#include <cxxtest/TestSuite.h>
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz#include "extract-uri.h"
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruzclass ExtractURITest : public CxxTest::TestSuite
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz{
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruzpublic:
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz void checkOne( char const* str, char const* expected )
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz {
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz gchar* result = extract_uri( str );
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz TS_ASSERT_EQUALS( ( result == NULL ), ( expected == NULL ) );
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz if ( result && expected ) {
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz TS_ASSERT_EQUALS( std::string(result), std::string(expected) );
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz } else if ( result ) {
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz TS_FAIL( std::string("Expected null, found (") + result + ")" );
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz } else if ( expected ) {
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz TS_FAIL( std::string("Expected (") + expected + "), found null" );
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz }
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz g_free( result );
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz }
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz void testBase()
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz {
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz char const* cases[][2] = {
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz { "url(#foo)", "#foo" },
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz { "url foo ", NULL },
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz { "url", NULL },
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz { "url ", NULL },
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz { "url()", NULL },
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz { "url ( ) ", NULL },
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz { "url foo bar ", NULL },
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz };
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz for ( size_t i = 0; i < G_N_ELEMENTS(cases); i++ )
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz {
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz checkOne( cases[i][0], cases[i][1] );
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz }
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz }
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz void testWithTrailing()
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz {
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz char const* cases[][2] = {
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz { "url(#foo) bar", "#foo" },
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz { "url() bar", NULL },
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz { "url ( ) bar ", NULL }
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz };
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz for ( size_t i = 0; i < G_N_ELEMENTS(cases); i++ )
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz {
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz checkOne( cases[i][0], cases[i][1] );
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz }
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz }
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz void testQuoted()
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz {
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz char const* cases[][2] = {
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz { "url('#foo')", "#foo" },
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz { "url(\"#foo\")", "#foo" },
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz { "url('#f o o')", "#f o o" },
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz { "url(\"#f o o\")", "#f o o" },
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz { "url('#fo\"o')", "#fo\"o" },
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz { "url(\"#fo'o\")", "#fo'o" },
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz };
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz for ( size_t i = 0; i < G_N_ELEMENTS(cases); i++ )
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz {
1b2bf2287fe4e856e4dbe7a9d197a7239ac7777bjoncruz checkOne( cases[i][0], cases[i][1] );
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz }
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz }
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz};
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz#endif // SEEN_EXTRACT_URI_TEST_H
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz/*
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz Local Variables:
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz mode:c++
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz c-file-style:"stroustrup"
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz indent-tabs-mode:nil
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz fill-column:99
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz End:
cfe4f188e42817b168e7ebcf0f576f7082fe2734joncruz*/
a4030d5ca449e7e384bc699cd249ee704faaeab0Chris Morgan// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :