xref: /haiku/src/tests/servers/app/benchmark/Benchmark.cpp (revision 3cb3e0e2101bfc267009b5d87fc6e8666026bd7a)
17c265858SStephan Aßmus /*
27c265858SStephan Aßmus  * Copyright (C) 2008 Stephan Aßmus <superstippi@gmx.de>
37c265858SStephan Aßmus  * All rights reserved. Distributed under the terms of the MIT license.
47c265858SStephan Aßmus  */
5*3cb3e0e2SStephan Aßmus 
67c265858SStephan Aßmus #include <stdio.h>
77c265858SStephan Aßmus 
87c265858SStephan Aßmus #include <Application.h>
97c265858SStephan Aßmus #include <Screen.h>
107c265858SStephan Aßmus 
117c265858SStephan Aßmus #include "TestWindow.h"
127c265858SStephan Aßmus 
137c265858SStephan Aßmus // tests
147c265858SStephan Aßmus #include "StringTest.h"
157c265858SStephan Aßmus 
167c265858SStephan Aßmus class Benchmark : public BApplication {
177c265858SStephan Aßmus public:
187c265858SStephan Aßmus 	Benchmark()
19*3cb3e0e2SStephan Aßmus 		: BApplication("application/x-vnd.haiku-benchmark"),
20*3cb3e0e2SStephan Aßmus 		  fTest(new StringTest),
21*3cb3e0e2SStephan Aßmus 		  fTestWindow(NULL)
227c265858SStephan Aßmus 	{
237c265858SStephan Aßmus 	}
247c265858SStephan Aßmus 
257c265858SStephan Aßmus 	~Benchmark()
267c265858SStephan Aßmus 	{
277c265858SStephan Aßmus 		delete fTest;
287c265858SStephan Aßmus 	}
297c265858SStephan Aßmus 
307c265858SStephan Aßmus 	virtual	void ReadyToRun()
317c265858SStephan Aßmus 	{
327c265858SStephan Aßmus 		uint32 width = 500;
337c265858SStephan Aßmus 		uint32 height = 500;
347c265858SStephan Aßmus 		BScreen screen;
357c265858SStephan Aßmus 		BRect frame = screen.Frame();
367c265858SStephan Aßmus 		frame.left = (frame.left + frame.right - width) / 2;
377c265858SStephan Aßmus 		frame.top = (frame.top + frame.bottom - width) / 2;
387c265858SStephan Aßmus 		frame.right = frame.left + width - 1;
397c265858SStephan Aßmus 		frame.bottom = frame.top + height - 1;
407c265858SStephan Aßmus 
41*3cb3e0e2SStephan Aßmus 		fTestWindow = new TestWindow(frame, fTest, B_OP_COPY,
427c265858SStephan Aßmus 			BMessenger(this));
437c265858SStephan Aßmus 	}
447c265858SStephan Aßmus 
457c265858SStephan Aßmus 	virtual bool QuitRequested()
467c265858SStephan Aßmus 	{
477c265858SStephan Aßmus 		if (fTestWindow != NULL)
487c265858SStephan Aßmus 			fTestWindow->SetAllowedToQuit(true);
497c265858SStephan Aßmus 		return BApplication::QuitRequested();
507c265858SStephan Aßmus 	}
517c265858SStephan Aßmus 
527c265858SStephan Aßmus 	virtual void MessageReceived(BMessage* message)
537c265858SStephan Aßmus 	{
547c265858SStephan Aßmus 		switch (message->what) {
557c265858SStephan Aßmus 			case MSG_TEST_CANCELED:
567c265858SStephan Aßmus 				printf("Test canceled early.\n");
577c265858SStephan Aßmus 				// fall through
587c265858SStephan Aßmus 			case MSG_TEST_FINISHED:
597c265858SStephan Aßmus 				fTest->PrintResults();
607c265858SStephan Aßmus 				PostMessage(B_QUIT_REQUESTED);
617c265858SStephan Aßmus 				break;
627c265858SStephan Aßmus 			default:
637c265858SStephan Aßmus 				BApplication::MessageReceived(message);
647c265858SStephan Aßmus 				break;
657c265858SStephan Aßmus 		}
667c265858SStephan Aßmus 	}
677c265858SStephan Aßmus 
687c265858SStephan Aßmus private:
697c265858SStephan Aßmus 	Test*			fTest;
707c265858SStephan Aßmus 	TestWindow*		fTestWindow;
717c265858SStephan Aßmus };
727c265858SStephan Aßmus 
737c265858SStephan Aßmus 
747c265858SStephan Aßmus // main
757c265858SStephan Aßmus int
767c265858SStephan Aßmus main(int argc, char** argv)
777c265858SStephan Aßmus {
787c265858SStephan Aßmus 	Benchmark app;
797c265858SStephan Aßmus 	app.Run();
807c265858SStephan Aßmus 	return 0;
817c265858SStephan Aßmus }
82