X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2FConsole%2FExecutor.test.cc;h=5b3c11009a5adf1af5a12673891f326400f23ba9;hb=d506c3134c5c01272c01608c86b8285176b50226;hp=0a6a6db9342c4ccc27093ce05dc022dc8067cd45;hpb=90f51da2398de98c2c217045f791ca7813730f48;p=senf.git diff --git a/senf/Utils/Console/Executor.test.cc b/senf/Utils/Console/Executor.test.cc index 0a6a6db..5b3c110 100644 --- a/senf/Utils/Console/Executor.test.cc +++ b/senf/Utils/Console/Executor.test.cc @@ -1,24 +1,29 @@ // $Id$ // -// Copyright (C) 2008 +// Copyright (C) 2008 // Fraunhofer Institute for Open Communication Systems (FOKUS) -// Competence Center NETwork research (NET), St. Augustin, GERMANY -// Stefan Bund // -// 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. +// The contents of this file are subject to the Fraunhofer FOKUS Public License +// Version 1.0 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// http://senf.berlios.de/license.html // -// 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. +// The Fraunhofer FOKUS Public License Version 1.0 is based on, +// but modifies the Mozilla Public License Version 1.1. +// See the full license text for the amendments. // -// 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., -// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +// for the specific language governing rights and limitations under the License. +// +// The Original Code is Fraunhofer FOKUS code. +// +// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. +// (registered association), Hansastraße 27 c, 80686 Munich, Germany. +// All Rights Reserved. +// +// Contributor(s): +// Stefan Bund /** \file \brief Executor unit tests */ @@ -35,7 +40,7 @@ #include #define prefix_ -///////////////////////////////cc.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// namespace { std::vector commands; @@ -47,23 +52,25 @@ namespace { } } -BOOST_AUTO_UNIT_TEST(executor) +SENF_AUTO_UNIT_TEST(executor) { - senf::console::root().mkdir("dir1").mkdir("dir3"); - senf::console::root().mkdir("dir2").doc("Helptext").add("test",&testCommand); + namespace fty = senf::console::factory; + + senf::console::root().add("dir 1",fty::Directory()).add("dir3",fty::Directory()); + senf::console::root().add("dir2",fty::Directory()).doc("Helptext").add("test",fty::Command(&testCommand)); senf::console::Executor executor; senf::console::CommandParser parser; BOOST_CHECK( &executor.cwd() == &senf::console::root() ); - + { std::stringstream os; - parser.parse("cd dir1", &setCommand); + parser.parse("cd \"dir 1\"", &setCommand); executor(os, commands.back()); BOOST_CHECK_EQUAL( commands.back().builtin(), senf::console::ParseCommandInfo::BuiltinCD ); - BOOST_CHECK( executor.cwd() == senf::console::root()["dir1"] ); - BOOST_CHECK_EQUAL( executor.cwdPath(), "/dir1" ); + BOOST_CHECK( executor.cwd() == senf::console::root()["dir 1"] ); + BOOST_CHECK_EQUAL( executor.cwdPath(), "/dir 1" ); BOOST_CHECK_EQUAL( os.str(), "" ); } @@ -78,7 +85,7 @@ BOOST_AUTO_UNIT_TEST(executor) { std::stringstream os; - parser.parse("cd dir1", &setCommand); + parser.parse("cd \"dir 1\"", &setCommand); BOOST_CHECK_THROW( executor(os, commands.back()), senf::console::SyntaxErrorException ); BOOST_CHECK_EQUAL( commands.back().builtin(), senf::console::ParseCommandInfo::BuiltinCD ); BOOST_CHECK( &executor.cwd() == &senf::console::root()["dir2"] ); @@ -99,15 +106,15 @@ BOOST_AUTO_UNIT_TEST(executor) parser.parse("ll", &setCommand); executor(os, commands.back()); BOOST_CHECK_EQUAL( commands.back().builtin(), senf::console::ParseCommandInfo::BuiltinLL ); - BOOST_CHECK_EQUAL( os.str(), - "dir1/ \n" + BOOST_CHECK_EQUAL( os.str(), + "dir 1/ \n" "dir2/ Helptext\n" "sys/ \n" ); } { std::stringstream os; - parser.parse("ll dir1", &setCommand); + parser.parse("ll \"dir 1\"", &setCommand); executor(os, commands.back()); BOOST_CHECK_EQUAL( commands.back().builtin(), senf::console::ParseCommandInfo::BuiltinLL ); BOOST_CHECK_EQUAL( os.str(), "dir3/ \n" ); @@ -120,14 +127,14 @@ BOOST_AUTO_UNIT_TEST(executor) BOOST_CHECK_EQUAL( commands.back().builtin(), senf::console::ParseCommandInfo::BuiltinLS ); BOOST_CHECK_EQUAL( os.str(), "" ); } - + { std::stringstream os; parser.parse("lr", &setCommand); executor(os, commands.back()); BOOST_CHECK_EQUAL( commands.back().builtin(), senf::console::ParseCommandInfo::BuiltinLR ); BOOST_CHECK_EQUAL( os.str().substr(0,213), - "dir1/ \n" + "dir 1/ \n" " dir3/ \n" "dir2/ Helptext\n" " test \n" @@ -136,10 +143,10 @@ BOOST_AUTO_UNIT_TEST(executor) { std::stringstream os; - parser.parse("dir1/dir3 { }", &setCommand); + parser.parse("\"dir 1\"/dir3 { }", &setCommand); executor(os, commands.rbegin()[1]); BOOST_CHECK_EQUAL( commands.rbegin()[1].builtin(), senf::console::ParseCommandInfo::BuiltinPUSHD ); - BOOST_CHECK( &executor.cwd() == &senf::console::root()["dir1"]["dir3"] ); + BOOST_CHECK( &executor.cwd() == &senf::console::root()["dir 1"]["dir3"] ); BOOST_CHECK_EQUAL( os.str(), "" ); } @@ -176,14 +183,17 @@ BOOST_AUTO_UNIT_TEST(executor) } commands.clear(); - senf::console::root().remove("dir1"); + senf::console::root().remove("dir 1"); senf::console::root().remove("dir2"); } -BOOST_AUTO_UNIT_TEST(executorChroot) +SENF_AUTO_UNIT_TEST(executorChroot) { - senf::console::root().mkdir("dir1").mkdir("dir3"); - senf::console::root().mkdir("dir2").doc("Helptext").add("test",&testCommand); + namespace fty = senf::console::factory; + + senf::console::root().add("dir1",fty::Directory()).add("dir3",fty::Directory()); + senf::console::root().add("dir2",fty::Directory().doc("Helptext")) + .add("test", fty::Command(&testCommand)); senf::console::Executor executor; senf::console::CommandParser parser; @@ -206,7 +216,7 @@ BOOST_AUTO_UNIT_TEST(executorChroot) } namespace { - + void testPolicy(senf::console::DirectoryNode & dir, std::string const & entry) { if (dir == senf::console::root() && entry == "dir2") @@ -214,10 +224,13 @@ namespace { } } -BOOST_AUTO_UNIT_TEST(executorPolicy) +SENF_AUTO_UNIT_TEST(executorPolicy) { - senf::console::root().mkdir("dir1").mkdir("dir3"); - senf::console::root().mkdir("dir2").doc("Helptext").add("test",&testCommand); + namespace fty = senf::console::factory; + + senf::console::root().add("dir1",fty::Directory()).add("dir3",fty::Directory()); + senf::console::root().add("dir2",fty::Directory().doc("Helptext")) + .add("test",fty::Command(&testCommand)); senf::console::Executor executor; senf::console::CommandParser parser; @@ -245,10 +258,13 @@ BOOST_AUTO_UNIT_TEST(executorPolicy) senf::console::root().remove("dir2"); } -BOOST_AUTO_UNIT_TEST(executorAuto) +SENF_AUTO_UNIT_TEST(executorAuto) { - senf::console::root().mkdir("tdir1").mkdir("dir3"); - senf::console::root().mkdir("dir2").doc("Helptext").add("test",&testCommand); + namespace fty = senf::console::factory; + + senf::console::root().add("tdir1",fty::Directory()).add("dir3",fty::Directory()); + senf::console::root().add("dir2",fty::Directory().doc("Helptext")) + .add("test",fty::Command(&testCommand)); senf::console::Executor executor; executor @@ -279,20 +295,20 @@ BOOST_AUTO_UNIT_TEST(executorAuto) BOOST_CHECK_EQUAL( executor.cwdPath(), "/dir2" ); BOOST_CHECK_EQUAL( os.str(), "" ); } - + { std::stringstream os; parser.parse("t", &setCommand); executor(os, commands.back()); BOOST_CHECK_EQUAL( os.str(), "testCommand\n" ); } - + commands.clear(); senf::console::root().remove("tdir1"); senf::console::root().remove("dir2"); } -///////////////////////////////cc.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_