#include <Application.h>
#include <Clipboard.h>
#define CHK CPPUNIT_ASSERT
#include "LockTester.h"
bool Lock()
@case 1
@results Lock() returns true
*/
void LockTester::Lock1()
{
BApplication app("application/x-vnd.clipboardtest");
BClipboard clip("Lock1");
CHK(clip.Lock());
}
static int32 LockTest2(void *data)
{
BClipboard *clip = (BClipboard *)data;
clip->Lock();
snooze(300000);
delete clip;
return 0;
}
bool Lock()
@case 2
@results Lock() returns false
*/
void LockTester::Lock2()
{
BApplication app("application/x-vnd.clipboardtest");
BClipboard *clip = new BClipboard("Lock2");
Spawn a thread which locks the clipboard, waits .3 seconds
and then deletes the locked clipboard. After spawning
the thread, the main thread waits .1 second. It then tries to
lock the clipboard and gets blocked. Once the clipboard is deleted,
it should return false.
*/
thread_id thread = spawn_thread(LockTest2,"locktest",B_NORMAL_PRIORITY,clip);
CHK(thread >= B_OK);
resume_thread(thread);
snooze(100000);
CHK(clip->Lock() == false);
}
bool IsLocked()
@case 1
@results IsLocked() returns true
*/
void LockTester::IsLocked1()
{
BApplication app("application/x-vnd.clipboardtest");
BClipboard clip("IsLocked1");
clip.Lock();
CHK(clip.IsLocked());
}
bool IsLocked()
@case 2
@results IsLocked() returns false
*/
void LockTester::IsLocked2()
{
BApplication app("application/x-vnd.clipboardtest");
BClipboard clip("IsLocked2");
CHK(!clip.IsLocked());
}
void Unlock()
@case 1
@results IsLocked() returns false
*/
void LockTester::Unlock1()
{
BApplication app("application/x-vnd.clipboardtest");
BClipboard clip("Unlock1");
clip.Lock();
CHK(clip.IsLocked());
clip.Unlock();
CHK(!clip.IsLocked());
}
Test* LockTester::Suite()
{
TestSuite* SuiteOfTests = new TestSuite;
ADD_TEST4(BClipboard, SuiteOfTests, LockTester, Lock1);
ADD_TEST4(BClipboard, SuiteOfTests, LockTester, Lock2);
ADD_TEST4(BClipboard, SuiteOfTests, LockTester, IsLocked1);
ADD_TEST4(BClipboard, SuiteOfTests, LockTester, IsLocked2);
ADD_TEST4(BClipboard, SuiteOfTests, LockTester, Unlock1);
return SuiteOfTests;
}