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