#include "DeskbarAddItemTest.h"
#include <Deskbar.h>
#include <View.h>
#include <Application.h>
#include <Entry.h>
#include <image.h>
#include <assert.h>
const char *appName = "application/x-vnd.jsr-additemtest";
const char *pulsePath = "/boot/system/apps/ProcessController";
DeskbarAddItemTest::DeskbarAddItemTest(std::string name) :
TestCase(name)
{
}
DeskbarAddItemTest::~DeskbarAddItemTest()
{
}
void DeskbarAddItemTest::PerformTest(void)
{
BApplication theApp(appName);
BView *(*funcPtr)(void);
image_id theImage;
assert((theImage = load_add_on(pulsePath)) != B_ERROR);
assert(get_image_symbol(theImage, "instantiate_deskbar_item",
B_SYMBOL_TYPE_TEXT, (void **)&funcPtr) == B_OK);
BView *theView = funcPtr();
assert(theView != NULL);
BEntry entry(pulsePath);
entry_ref ref;
assert(entry.GetRef(&ref) == B_OK);
int32 theId1, theId2;
BDeskbar myDeskbar;
bool restorePulse = myDeskbar.HasItem(theView->Name());
assert(myDeskbar.RemoveItem(theView->Name()) == B_OK);
assert(!myDeskbar.HasItem(theView->Name()));
assert(myDeskbar.AddItem(theView, &theId1) == B_OK);
assert(myDeskbar.HasItem(theView->Name()));
assert(myDeskbar.GetItemInfo(theView->Name(), &theId2) == B_OK);
assert(theId1 == theId2);
assert(myDeskbar.RemoveItem(theView->Name()) == B_OK);
assert(!myDeskbar.HasItem(theView->Name()));
assert(myDeskbar.AddItem(theView) == B_OK);
assert(myDeskbar.HasItem(theView->Name()));
assert(myDeskbar.RemoveItem(theView->Name()) == B_OK);
assert(!myDeskbar.HasItem(theView->Name()));
assert(myDeskbar.AddItem(&ref, &theId1) == B_OK);
assert(myDeskbar.HasItem(theView->Name()));
assert(myDeskbar.GetItemInfo(theView->Name(), &theId2) == B_OK);
assert(theId1 == theId2);
assert(myDeskbar.RemoveItem(theView->Name()) == B_OK);
assert(!myDeskbar.HasItem(theView->Name()));
assert(myDeskbar.AddItem(&ref) == B_OK);
assert(myDeskbar.HasItem(theView->Name()));
if (!restorePulse) {
assert(myDeskbar.RemoveItem(theView->Name()) == B_OK);
assert(!myDeskbar.HasItem(theView->Name()));
}
}
Test *DeskbarAddItemTest::suite(void)
{
typedef CppUnit::TestCaller<DeskbarAddItemTest>
DeskbarAddItemTestCaller;
return(new DeskbarAddItemTestCaller("BDeskbar::Add Item Test", &DeskbarAddItemTest::PerformTest));
}