⛏️ index : haiku.git

//------------------------------------------------------------------------------
//	CountTester.cpp
//
//------------------------------------------------------------------------------

// Standard Includes -----------------------------------------------------------

// System Includes -------------------------------------------------------------
#include <Application.h>
#include <Clipboard.h>

#define CHK	CPPUNIT_ASSERT

// Project Includes ------------------------------------------------------------

// Local Includes --------------------------------------------------------------
#include "CountTester.h"

// Local Defines ---------------------------------------------------------------

// Globals ---------------------------------------------------------------------

//------------------------------------------------------------------------------

/*
	LocalCount()
	@case 1
	@results		count == 0
 */
void CountTester::LocalCount1()
{
	BApplication app("application/x-vnd.clipboardtest");
	BClipboard clip("LocalCount1");

	CHK(clip.LocalCount() == 0);
}

/*
	LocalCount()
	@case 2
	@results		count == +1
 */
void CountTester::LocalCount2()
{
	BApplication app("application/x-vnd.clipboardtest");
	BClipboard clip("LocalCount2");
	BMessage *data;

	uint32 oldCount = clip.SystemCount();

	if (clip.Lock()) {
		clip.Clear();
		if ((data = clip.Data())) {
			data->AddData("text/plain", B_MIME_TYPE, "LocalCount2", 12);
			clip.Commit();
		}
		clip.Unlock();
	}

	CHK(clip.LocalCount() == oldCount + 1);
}

/*
	LocalCount()
	@case 3
	@results		both counts == +1
 */
void CountTester::LocalCount3()
{
	BApplication app("application/x-vnd.clipboardtest");
	BClipboard clipA("LocalCount3");
	BClipboard clipB("LocalCount3");
	BMessage *data;

	uint32 oldCount = clipA.SystemCount();

	CHK(clipB.Lock());
	clipB.Clear();
	if ((data = clipB.Data())) {
		data->AddData("text/plain", B_MIME_TYPE, "LocalCount3", 12);
		clipB.Commit();
	}
	clipB.Unlock();

	CHK(clipA.Lock());
	clipA.Unlock();

	CHK(clipA.LocalCount() == oldCount + 1);
	CHK(clipB.LocalCount() == oldCount + 1);
}

/*
	LocalCount()
	@case 4
	@results	clipA.LocalCount() == +1
				clipB.LocalCount() == +2
 */
void CountTester::LocalCount4()
{
	BApplication app("application/x-vnd.clipboardtest");
	BClipboard clipA("LocalCount4");
	BClipboard clipB("LocalCount4");
	BMessage *data;

	uint32 oldCount = clipA.SystemCount();

	if (clipB.Lock()) {
		clipB.Clear();
		if ((data = clipB.Data())) {
			data->AddData("text/plain", B_MIME_TYPE, "LocalCount4", 12);
			clipB.Commit();
		}
		clipB.Unlock();
	}

	if (clipA.Lock())
		clipA.Unlock();

	if (clipB.Lock()) {
		clipB.Clear();
		if ((data = clipB.Data())) {
			data->AddData("text/plain",B_MIME_TYPE,"LocalCount4",12);
			clipB.Commit();
		}
		clipB.Unlock();
	}

	CHK(clipA.LocalCount() == oldCount + 1);
	CHK(clipB.LocalCount() == oldCount + 2);
}

/*
	LocalCount()
	@case 5
	@results	clipA.LocalCount() == 1
				clipB.LocalCount() == 2
 */
void CountTester::LocalCount5()
{
	BApplication app("application/x-vnd.clipboardtest");
	BClipboard clipA("LocalCount5");
	BClipboard clipB("LocalCount5");
	BMessage *data;

	uint32 oldCount = clipA.SystemCount();

	if (clipA.Lock()) {
		clipA.Clear();
		if ((data = clipA.Data())) {
			data->AddData("text/plain", B_MIME_TYPE, "LocalCount5", 12);
			clipA.Commit();
		}
		clipA.Unlock();
	}

	if (clipB.Lock()) {
		clipB.Clear();
		if ((data = clipB.Data())) {
			data->AddData("text/plain", B_MIME_TYPE, "LocalCount5", 12);
			clipB.Commit();
		}
		clipB.Unlock();
	}

	CHK(clipA.LocalCount() == oldCount + 1);
	CHK(clipB.LocalCount() == oldCount + 2);
}

/*
	LocalCount()
	@case 6
	@results	clipA.LocalCount() == +1
				clipB.LocalCount() == 0
 */
void CountTester::LocalCount6()
{
	BApplication app("application/x-vnd.clipboardtest");
	BClipboard clipA("LocalCount6A");
	BClipboard clipB("LocalCount6B");
	BMessage *data;

	uint32 oldCount = clipA.SystemCount();

	if (clipA.Lock()) {
		clipA.Clear();
		if ((data = clipA.Data())) {
			data->AddData("text/plain", B_MIME_TYPE, "LocalCount6" ,12);
			clipA.Commit();
		}
		clipA.Unlock();
	}

	if (clipB.Lock())
		clipB.Unlock();

	CHK(clipA.LocalCount() == oldCount + 1);
	CHK(clipB.LocalCount() == 0);
}

/*
	SystemCount()
	@case 1
	@results		count == 0
 */
void CountTester::SystemCount1()
{
	BApplication app("application/x-vnd.clipboardtest");
	BClipboard clip("SystemCount1");

	CHK(clip.SystemCount() == 0);
}

/*
	SystemCount()
	@case 2
	@results	clipA.SystemCount() == +1
				clipB.SystemCount() == +1
 */
void CountTester::SystemCount2()
{
	BApplication app("application/x-vnd.clipboardtest");
	BClipboard clipA("SystemCount2");
	BClipboard clipB("SystemCount2");
	BMessage *data;

	uint32 oldCount = clipA.SystemCount();

	if (clipA.Lock()) {
		clipA.Clear();
		if ((data = clipA.Data())) {
			data->AddData("text/plain", B_MIME_TYPE, "SystemCount2", 12);
			clipA.Commit();
		}
		clipA.Unlock();
	}

	CHK(clipA.SystemCount() == oldCount + 1);
	CHK(clipB.SystemCount() == oldCount + 1);
}

/*
	SystemCount()
	@case 3
	@results	clipA.SystemCount() == +1
				clipB.SystemCount() == 0
 */
void CountTester::SystemCount3()
{
	BApplication app("application/x-vnd.clipboardtest");
	BClipboard clipA("SystemCount3A");
	BClipboard clipB("SystemCount3B");
	BMessage *data;

	uint32 oldCount = clipA.SystemCount();

	if (clipA.Lock()) {
		clipA.Clear();
		if ((data = clipA.Data())) {
			data->AddData("text/plain", B_MIME_TYPE, "SystemCount3", 12);
			clipA.Commit();
		}
		clipA.Unlock();
	}

	CHK(clipA.SystemCount() == oldCount + 1);
	CHK(clipB.SystemCount() == 0);
}

Test* CountTester::Suite()
{
	TestSuite* SuiteOfTests = new TestSuite;

	ADD_TEST4(BClipboard, SuiteOfTests, CountTester, LocalCount1);
	ADD_TEST4(BClipboard, SuiteOfTests, CountTester, LocalCount2);
	ADD_TEST4(BClipboard, SuiteOfTests, CountTester, LocalCount3);
	ADD_TEST4(BClipboard, SuiteOfTests, CountTester, LocalCount4);
	ADD_TEST4(BClipboard, SuiteOfTests, CountTester, LocalCount5);
	ADD_TEST4(BClipboard, SuiteOfTests, CountTester, LocalCount6);
	ADD_TEST4(BClipboard, SuiteOfTests, CountTester, SystemCount1);
	ADD_TEST4(BClipboard, SuiteOfTests, CountTester, SystemCount2);
	ADD_TEST4(BClipboard, SuiteOfTests, CountTester, SystemCount3);

	return SuiteOfTests;
}