Elaztek Developer Hub
Blamite Game Engine - blam!  00368.02.12.23.1347.blamite
The core library for the Blamite Game Engine.
UnitTesting.h
Go to the documentation of this file.
1 /*
2 -----------------------------------------------------------------------------
3 This source file is part of OGRE
4 (Object-oriented Graphics Rendering Engine)
5 For the latest info, see http://www.ogre3d.org/
6 
7 Copyright (c) 2000-present Torus Knot Software Ltd
8 
9 Permission is hereby granted, free of charge, to any person obtaining a copy
10 of this software and associated documentation files (the "Software"), to deal
11 in the Software without restriction, including without limitation the rights
12 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13 copies of the Software, and to permit persons to whom the Software is
14 furnished to do so, subject to the following conditions:
15 
16 The above copyright notice and this permission notice shall be included in
17 all copies or substantial portions of the Software.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25 THE SOFTWARE.
26 -----------------------------------------------------------------------------
27 */
28 
29 #ifndef _Demo_UnitTesting_H_
30 #define _Demo_UnitTesting_H_
31 
32 #include "OGRE/OgrePrerequisites.h"
33 
35 
36 #include "OGRE/OgreQuaternion.h"
37 #include "OGRE/OgreStringVector.h"
38 #include "OGRE/OgreVector3.h"
39 
40 #include <stdint.h>
41 
42 namespace Demo
43 {
44  class GraphicsSystem;
45  class KeyboardListener;
46 
59  class UnitTest : public KeyboardListener, public MouseListener
60  {
61  struct KeyStroke
62  {
63  int32_t keycode; // SDL_Keycode
64  uint16_t scancode; // SDL_Scancode
65  bool bReleased;
66  KeyStroke();
67  };
68 
69  struct FrameActivity
70  {
71  uint32_t frameId;
72  Ogre::Vector3 cameraPos;
73  Ogre::Quaternion cameraRot;
74  std::vector<KeyStroke> keyStrokes;
75  bool screenshotRenderWindow;
76  Ogre::StringVector targetsToScreenshot;
77  FrameActivity( uint32_t _frameId );
78  };
79 
80  public:
81  struct Params
82  {
83  bool bRecord;
85  bool bSkipDump; // Useful for debugging a record showing something that is broken
86  std::string recordPath;
87  std::string outputPath;
88  Params();
89 
90  bool isRecording() const;
91  bool isPlayback() const;
92  };
93 
94  protected:
95  double mFrametime;
100 
101  std::vector<FrameActivity> mFrameActivity;
102 
105 
106  inline static void flushLwString( Ogre::LwString &jsonStr, std::string &outJson );
107 
108  void exportFrameActivity( const FrameActivity &frameActivity, Ogre::LwString &jsonStr,
109  std::string &outJson );
110  void saveToJsonStr( std::string &outJson );
111 
112  static bool shouldRecordKey( const SDL_KeyboardEvent &arg );
113  static Ogre::Vector3 getCameraRecordPosition( Ogre::Camera *camera );
114 
115  public:
116  UnitTest();
117 
118  void parseCmdLine( int nargs, const char *const *argv );
119 
120  const Params &getParams( void ) const { return mParams; }
121 
122  void startRecording( Demo::GraphicsSystem *graphicsSystem );
123  void notifyRecordingNewFrame( Demo::GraphicsSystem *graphicsSystem );
124 
133  void saveToJson( const char *fullpath, const bool bCompressDuration );
134 
135  virtual void keyPressed( const SDL_KeyboardEvent &arg );
136  virtual void keyReleased( const SDL_KeyboardEvent &arg );
137  virtual void mouseMoved( const SDL_Event &arg );
138  virtual void mousePressed( const SDL_MouseButtonEvent &arg, Ogre::uint8 id );
139  virtual void mouseReleased( const SDL_MouseButtonEvent &arg, Ogre::uint8 id );
140 
144  int loadFromJson( const char *fullpath, const Ogre::String &outputFolder );
145 
146  protected:
147  int runLoop( Ogre::String outputFolder );
148  };
149 } // namespace Demo
150 
151 #endif
SDL_KeyboardEvent
Keyboard button event structure (event.key.
Definition: SdlEmulationLayer.h:676
InputListeners.h
Demo::MouseListener
Definition: InputListeners.h:18
Demo::UnitTest
Usage: To record: Start app with –ut_record=/home/username/Ogre/pbs.json –ut_compress Move around and...
Definition: UnitTesting.h:59
Demo::UnitTest::Params::bCompressDuration
bool bCompressDuration
Definition: UnitTesting.h:84
Demo::UnitTest::mouseReleased
virtual void mouseReleased(const SDL_MouseButtonEvent &arg, Ogre::uint8 id)
Definition: UnitTesting.cpp:374
Demo::UnitTest::shouldRecordKey
static bool shouldRecordKey(const SDL_KeyboardEvent &arg)
Definition: UnitTesting.cpp:294
uint16_t
unsigned short uint16_t
Definition: stdint.h:125
Demo::UnitTest::Params::isRecording
bool isRecording() const
Definition: UnitTesting.cpp:64
Demo::UnitTest::notifyRecordingNewFrame
void notifyRecordingNewFrame(Demo::GraphicsSystem *graphicsSystem)
Definition: UnitTesting.cpp:237
Demo::UnitTest::mNumFrames
uint32_t mNumFrames
Definition: UnitTesting.h:97
Demo::UnitTest::Params::isPlayback
bool isPlayback() const
Definition: UnitTesting.cpp:66
Demo::UnitTest::exportFrameActivity
void exportFrameActivity(const FrameActivity &frameActivity, Ogre::LwString &jsonStr, std::string &outJson)
Definition: UnitTesting.cpp:86
Demo::UnitTest::saveToJson
void saveToJson(const char *fullpath, const bool bCompressDuration)
Saves the current recording to JSON, for later playback.
Definition: UnitTesting.cpp:260
Demo::UnitTest::saveToJsonStr
void saveToJsonStr(std::string &outJson)
Definition: UnitTesting.cpp:142
Demo
Definition: BaseSystem.cpp:5
Demo::UnitTest::mBlockInputForwarding
bool mBlockInputForwarding
Definition: UnitTesting.h:104
Demo::UnitTest::Params::outputPath
std::string outputPath
Definition: UnitTesting.h:87
Demo::UnitTest::Params::bSkipDump
bool bSkipDump
Definition: UnitTesting.h:85
Blam::Globals::String
@ String
Represents a std::string.
Definition: globals.h:48
Demo::UnitTest::mousePressed
virtual void mousePressed(const SDL_MouseButtonEvent &arg, Ogre::uint8 id)
Definition: UnitTesting.cpp:368
Demo::UnitTest::mFrameIdx
uint32_t mFrameIdx
Definition: UnitTesting.h:96
uint32_t
unsigned int uint32_t
Definition: stdint.h:126
Demo::KeyboardListener
Definition: InputListeners.h:27
Demo::UnitTest::parseCmdLine
void parseCmdLine(int nargs, const char *const *argv)
Definition: UnitTesting.cpp:200
Demo::UnitTest::loadFromJson
int loadFromJson(const char *fullpath, const Ogre::String &outputFolder)
Loads JSON from fullpath and plays it back, saving the results to outputFolder Return value is the re...
Definition: UnitTesting.cpp:380
stdint.h
Demo::UnitTest::runLoop
int runLoop(Ogre::String outputFolder)
Definition: UnitTesting.cpp:532
Demo::UnitTest::Params::Params
Params()
Definition: UnitTesting.cpp:62
Demo::UnitTest::keyReleased
virtual void keyReleased(const SDL_KeyboardEvent &arg)
Definition: UnitTesting.cpp:331
Demo::UnitTest::UnitTest
UnitTest()
Definition: UnitTesting.cpp:70
camera
BlamDirector * camera
Definition: director.cpp:3
Demo::GraphicsSystem
Definition: GraphicsSystem.h:26
int32_t
signed int int32_t
Definition: stdint.h:123
Demo::UnitTest::startRecording
void startRecording(Demo::GraphicsSystem *graphicsSystem)
Definition: UnitTesting.cpp:230
Demo::UnitTest::mouseMoved
virtual void mouseMoved(const SDL_Event &arg)
Definition: UnitTesting.cpp:362
Demo::UnitTest::mRealKeyboardListener
KeyboardListener * mRealKeyboardListener
Definition: UnitTesting.h:98
Demo::UnitTest::getCameraRecordPosition
static Ogre::Vector3 getCameraRecordPosition(Ogre::Camera *camera)
SDL_Event
Definition: SdlEmulationLayer.h:735
Demo::UnitTest::getParams
const Params & getParams(void) const
Definition: UnitTesting.h:120
Demo::UnitTest::Params::bRecord
bool bRecord
Definition: UnitTesting.h:83
Demo::UnitTest::flushLwString
static void flushLwString(Ogre::LwString &jsonStr, std::string &outJson)
Definition: UnitTesting.cpp:80
SDL_MouseButtonEvent
Mouse button event structure (event.button.
Definition: SdlEmulationLayer.h:707
Demo::UnitTest::Params::recordPath
std::string recordPath
Definition: UnitTesting.h:86
Demo::UnitTest::mFrametime
double mFrametime
Definition: UnitTesting.h:95
Demo::UnitTest::mRealMouseListener
MouseListener * mRealMouseListener
Definition: UnitTesting.h:99
Demo::UnitTest::mFrameActivity
std::vector< FrameActivity > mFrameActivity
Definition: UnitTesting.h:101
Demo::UnitTest::keyPressed
virtual void keyPressed(const SDL_KeyboardEvent &arg)
Definition: UnitTesting.cpp:303
Demo::UnitTest::mParams
Params mParams
Definition: UnitTesting.h:103
Demo::UnitTest::Params
Definition: UnitTesting.h:81