diff --git a/src/Transport.h b/src/Transport.h index 5bce558e5..30a458cdc 100644 --- a/src/Transport.h +++ b/src/Transport.h @@ -33,23 +33,23 @@ class Transport { public: Transport (const std::string&, const std::string&, const std::string&, const std::string&); - Transport (const std::string&); + Transport (const std::string&); ~Transport (); - static Transport* getTransport(const std::string&); + static Transport* getTransport(const std::string&); - void parseUri (std::string); + void parseUri (std::string); virtual void send (const std::string&) = 0; virtual void recv (std::string) = 0; protected: - std::string executable; - std::vector arguments; + std::string executable; + std::vector arguments; - std::string host; - std::string path; - std::string port; - std::string user; + std::string host; + std::string path; + std::string port; + std::string user; int execute(); }; diff --git a/src/TransportSSH.h b/src/TransportSSH.h index 046b8cb96..11b6f17dc 100644 --- a/src/TransportSSH.h +++ b/src/TransportSSH.h @@ -33,7 +33,7 @@ class TransportSSH : public Transport { public: TransportSSH (const std::string&); - TransportSSH (const std::string&, const std::string&, const std::string&, const std::string&); + TransportSSH (const std::string&, const std::string&, const std::string&, const std::string&); virtual void send (const std::string&); virtual void recv (std::string); diff --git a/src/tests/Makefile b/src/tests/Makefile index 582f47002..571bbb7fa 100644 --- a/src/tests/Makefile +++ b/src/tests/Makefile @@ -1,7 +1,7 @@ PROJECT = t.t tdb.t date.t duration.t t.benchmark.t text.t autocomplete.t \ config.t seq.t att.t stringtable.t record.t nibbler.t subst.t filt.t \ cmd.t util.t color.t list.t path.t file.t directory.t grid.t rx.t \ - taskmod.t sensor.t rectangle.t tree.t tree2.t lisp.t + taskmod.t sensor.t rectangle.t tree.t tree2.t lisp.t transport.t CFLAGS = -I. -I.. -I../.. -Wall -pedantic -ggdb3 -fno-rtti LFLAGS = -L/usr/local/lib -lpthread -lncurses -llua OBJECTS = ../t-TDB.o ../t-Task.o ../t-text.o ../t-Date.o ../t-Table.o \ @@ -105,6 +105,9 @@ rx.t: rx.t.o $(OBJECTS) test.o taskmod.t: taskmod.t.o $(OBJECTS) test.o g++ taskmod.t.o $(OBJECTS) test.o $(LFLAGS) -o taskmod.t +transport.t: transport.t.o $(OBJECTS) test.o + g++ transport.t.o $(OBJECTS) test.o $(LFLAGS) -o transport.t + lisp.t: lisp.t.o $(OBJECTS) test.o g++ lisp.t.o $(OBJECTS) test.o $(LFLAGS) -o lisp.t diff --git a/src/tests/transport.t b/src/tests/transport.t new file mode 100755 index 000000000..a91db22c7 Binary files /dev/null and b/src/tests/transport.t differ diff --git a/src/tests/transport.t.cpp b/src/tests/transport.t.cpp new file mode 100644 index 000000000..8f24e95b3 --- /dev/null +++ b/src/tests/transport.t.cpp @@ -0,0 +1,82 @@ +//////////////////////////////////////////////////////////////////////////////// +// taskwarrior - a command line task list manager. +// +// Copyright 2006 - 2010, Paul Beckingham. +// All rights reserved. +// +// This program is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free Software +// Foundation; either version 2 of the License, or (at your option) any later +// version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +// details. +// +// You should have received a copy of the GNU General Public License along with +// this program; if not, write to the +// +// Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, +// Boston, MA +// 02110-1301 +// USA +// +//////////////////////////////////////////////////////////////////////////////// +#include +#include +#include +//#include +#include +#include + +Context context; + +class TransportTest : public Transport +{ + public: + TransportTest (const std::string& uri) : Transport (uri) {}; + + std::string getHost() { return host; }; + std::string getPath() { return path; }; + std::string getUser() { return user; }; + std::string getPort() { return port; }; + + virtual void recv(std::string) {}; + virtual void send(const std::string&) {}; +}; + +//////////////////////////////////////////////////////////////////////////////// +int main (int argc, char** argv) +{ + UnitTest t (16); + + TransportTest tport1 ("asfd://user@host/folder/"); + t.is (tport1.getUser (), "user", "Transport::parseUri() : asfd://user@host/folder/"); + t.is (tport1.getHost (), "host", "Transport::parseUri() : asfd://user@host/folder/"); + t.is (tport1.getPort (), "", "Transport::parseUri() : asfd://user@host/folder/"); + t.is (tport1.getPath (), "folder/", "Transport::parseUri() : asfd://user@host/folder/"); + + TransportTest tport2 ("user@host:22/folder/file.test"); + t.is (tport2.getUser (), "user", "Transport::parseUri() : user@host:22/folder/file.test"); + t.is (tport2.getHost (), "host", "Transport::parseUri() : user@host:22/folder/file.test"); + t.is (tport2.getPort (), "22", "Transport::parseUri() : user@host:22/folder/file.test"); + t.is (tport2.getPath (), "folder/file.test", "Transport::parseUri() : user@host:22/folder/file.test"); + + TransportTest tport3 ("hostname.abc.de/file.test"); + t.is (tport3.getUser (), "", "Transport::parseUri() : hostname.abc.de/file.test"); + t.is (tport3.getHost (), "hostname.abc.de", "Transport::parseUri() : hostname.abc.de/file.test"); + t.is (tport3.getPort (), "", "Transport::parseUri() : hostname.abc.de/file.test"); + t.is (tport3.getPath (), "file.test", "Transport::parseUri() : hostname.abc.de/file.test"); + + TransportTest tport4 ("hostname/"); + t.is (tport4.getUser (), "", "Transport::parseUri() : hostname/"); + t.is (tport4.getHost (), "hostname", "Transport::parseUri() : hostname/"); + t.is (tport4.getPort (), "", "Transport::parseUri() : hostname/"); + t.is (tport4.getPath (), "", "Transport::parseUri() : hostname/"); + + return 0; +} + +////////////////////////////////////////////////////////////////////////////////