diff options
Diffstat (limited to 'src/ItemViewPresenter_test.cc')
-rw-r--r-- | src/ItemViewPresenter_test.cc | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/src/ItemViewPresenter_test.cc b/src/ItemViewPresenter_test.cc new file mode 100644 index 0000000..5d18723 --- /dev/null +++ b/src/ItemViewPresenter_test.cc @@ -0,0 +1,202 @@ +/* + * vdr-vodcatcher - A plugin for the Linux Video Disk Recorder + * Copyright (c) 2007 - 2008 Tobias Grimm <vdr@e-tobi.net> + * + * 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 + * + * $Id: ItemViewPresenter_test.cc 7652 2008-08-05 21:37:57Z svntobi $ + * + */ + +#include <cxxtest/TestSuite.h> +#include <string> +#include "Item.h" +#include "ItemView.h" +#include "ItemViewPresenter.h" +#include "ConfigurationStub.h" +#include "RefPtr.h" + +using namespace std; + +namespace +{ + +class ItemViewStub : public IItemView +{ +public: + string description; + string title; + string redHelp; + string greenHelp; + string yellowHelp; + +public: + // <IItemView> + void SetDescription(string description) + { + this->description = description; + } + + void SetTitle(string title) + { + this->title = title; + } + + void SetRedHelp(string text) + { + redHelp = text; + } + + void SetGreenHelp(string text) + { + greenHelp = text; + } + + void SetYellowHelp(string text) + { + yellowHelp = text; + } + void SetBlueHelp(string text) + { + } + // </IItemView> +}; + +class An_ItemViewPresenter_for_any_item : public CxxTest::TestSuite +{ +private: + ItemViewStub view; + RefPtr<ItemViewPresenter> _presenter; + RefPtr<ConfigurationStub> _configuration; + +public: + void setUp() + { + view.title = ""; + view.description = ""; + Item item("title", Rfc822DateTime("long_date"), "description"); + _configuration = new ConfigurationStub(); + _presenter = new ItemViewPresenter("FeedTitle", item, *_configuration); + } + + void Should_show_the_item_description() + { + _presenter->Initialize(&view); + + TS_ASSERT_EQUALS("long_date\n\ntitle\n\ndescription", view.description); + } + + void Should_display_the_feed_title_as_menu_title() + { + _presenter->Initialize(&view); + + TS_ASSERT_EQUALS("FeedTitle", view.title); + } + + void Should_ignore_already_processed_keys() + { + _presenter->Initialize(&view); + + TS_ASSERT_EQUALS(osBack, _presenter->ProcessKey(osBack, kOk)); + } +}; + +class An_ItemViewPresenter_for_a_non_videocast_item : public CxxTest::TestSuite +{ +private: + ItemViewStub view; + RefPtr<ItemViewPresenter> _presenter; + RefPtr<ConfigurationStub> _configuration; + +public: + void setUp() + { + view.title = ""; + view.description = ""; + Item item("title", Rfc822DateTime("long_date"), "description"); + _configuration = new ConfigurationStub(); + _configuration->SetPlayBackQuality(High); + _presenter = new ItemViewPresenter("", item, *_configuration); + } + + void Should_not_display_the_Play_and_Record_help_for_a_non_videocast_item() + { + view.redHelp = view.greenHelp = view.yellowHelp = "dummy"; + + _presenter->Initialize(&view); + + TS_ASSERT_EQUALS("", view.greenHelp); + TS_ASSERT_EQUALS("", view.redHelp); + TS_ASSERT_EQUALS("", view.yellowHelp); + } +}; + +class An_ItemViewPresenter_for_a_videocast_item : public CxxTest::TestSuite +{ +private: + ItemViewStub view; + RefPtr<ItemViewPresenter> _presenter; + RefPtr<ConfigurationStub> _configuration; + +public: + void setUp() + { + view.title = ""; + view.description = ""; + Item item("title", Rfc822DateTime("long_date"), "description"); + item.SetVideoCastStream(High, "streamUrl"); + _configuration = new ConfigurationStub(); + _configuration->SetPlayBackQuality(High); + _presenter = new ItemViewPresenter("", item, *_configuration); + } + + void Should_display_the_Play_Record_and_quality_help_for_a_videocast_item() + { + view.redHelp = view.greenHelp = view.yellowHelp = "dummy"; + _configuration->SetPlayBackQuality(High); + + _presenter->Initialize(&view); + + TS_ASSERT_EQUALS("i18n:Play", view.greenHelp); + TS_ASSERT_EQUALS("i18n:Record", view.redHelp); + TS_ASSERT_EQUALS("i18n:High", view.yellowHelp); + } + + void Should_let_the_parent_menu_handle_play_and_record() + { + _presenter->Initialize(&view); + + TS_ASSERT_EQUALS(osUnknown, _presenter->ProcessKey(osContinue, kRed)); + TS_ASSERT_EQUALS(osUnknown, _presenter->ProcessKey(osContinue, kGreen)); + } + + void Should_toggle_the_quality_when_pressing_the_yellow_key() + { + _presenter->Initialize(&view); + + TS_ASSERT_EQUALS("i18n:High", view.yellowHelp); + + _presenter->ProcessKey(osContinue, kYellow); + TS_ASSERT_EQUALS("i18n:Medium", view.yellowHelp); + + _presenter->ProcessKey(osContinue, kYellow); + TS_ASSERT_EQUALS("i18n:Low", view.yellowHelp); + + _presenter->ProcessKey(osContinue, kYellow); + TS_ASSERT_EQUALS("i18n:High", view.yellowHelp); + } +}; + +}; |