[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33028] branches/bmesh/blender: =BMesh: ( personal) Testing Framework=
Joseph Eagar
joeedh at gmail.com
Fri Nov 12 00:36:56 CET 2010
Revision: 33028
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33028
Author: joeedh
Date: 2010-11-12 00:36:56 +0100 (Fri, 12 Nov 2010)
Log Message:
-----------
=BMesh: (personal) Testing Framework=
I've got my testing framework done now. It's based on
recording events at the GHOST level. This has issues;
a test created on one computer might not pass on
another, due to floating point inaccuracies (though
I tried to blunt this a bit).
This isn't appropriate for general use. I
wrote it for personal use, and other devs might
find it useful for their personal use as well.
However, it lacks the reliability you'd need for
a real unit testing framework.
This isn't meant to replace lief's work, by any means, which
is a real unit testing framework.
Modified Paths:
--------------
branches/bmesh/blender/intern/ghost/GHOST_C-api.h
branches/bmesh/blender/intern/ghost/GHOST_IEvent.h
branches/bmesh/blender/intern/ghost/GHOST_ISystem.h
branches/bmesh/blender/intern/ghost/GHOST_IWindow.h
branches/bmesh/blender/intern/ghost/intern/GHOST_C-api.cpp
branches/bmesh/blender/intern/ghost/intern/GHOST_Event.h
branches/bmesh/blender/intern/ghost/intern/GHOST_EventButton.h
branches/bmesh/blender/intern/ghost/intern/GHOST_EventCursor.h
branches/bmesh/blender/intern/ghost/intern/GHOST_EventKey.h
branches/bmesh/blender/intern/ghost/intern/GHOST_EventManager.cpp
branches/bmesh/blender/intern/ghost/intern/GHOST_EventManager.h
branches/bmesh/blender/intern/ghost/intern/GHOST_EventTrackpad.h
branches/bmesh/blender/intern/ghost/intern/GHOST_EventWheel.h
branches/bmesh/blender/intern/ghost/intern/GHOST_System.cpp
branches/bmesh/blender/intern/ghost/intern/GHOST_System.h
branches/bmesh/blender/intern/ghost/intern/GHOST_SystemX11.cpp
branches/bmesh/blender/source/blender/blenkernel/BKE_context.h
branches/bmesh/blender/source/blender/blenkernel/intern/context.c
branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
branches/bmesh/blender/source/blender/windowmanager/intern/wm_event_system.c
branches/bmesh/blender/test/eventlog.txt
branches/bmesh/blender/test/test_default.blend
branches/bmesh/blender/test/test_default.blend1
branches/bmesh/blender/test/test_vcol.blend
branches/bmesh/blender/test/test_vcol.blend1
branches/bmesh/blender/test/test_vcol.events
branches/bmesh/blender/test/tester.py
Added Paths:
-----------
branches/bmesh/blender/test/check_test_subdivide.blend
branches/bmesh/blender/test/check_test_subdivide.blend1
branches/bmesh/blender/test/check_test_vcol.blend
branches/bmesh/blender/test/check_test_vcol.blend1
branches/bmesh/blender/test/check_test_vcol.blend2
branches/bmesh/blender/test/test_subdivide.blend
branches/bmesh/blender/test/test_subdivide.blend1
branches/bmesh/blender/test/test_subdivide.events
branches/bmesh/blender/test/test_vcol.blend.crash.blend
branches/bmesh/blender/test/test_vcol.blend2
Removed Paths:
-------------
branches/bmesh/blender/test/test_vcol_final.blend
Modified: branches/bmesh/blender/intern/ghost/GHOST_C-api.h
===================================================================
--- branches/bmesh/blender/intern/ghost/GHOST_C-api.h 2010-11-11 22:12:49 UTC (rev 33027)
+++ branches/bmesh/blender/intern/ghost/GHOST_C-api.h 2010-11-11 23:36:56 UTC (rev 33028)
@@ -35,6 +35,7 @@
#define GHOST_C_API_H
#include "GHOST_Types.h"
+#include <stdio.h>
#ifdef __cplusplus
extern "C" {
@@ -837,6 +838,12 @@
extern void GHOST_putClipboard(GHOST_TInt8 *buffer, int selection);
+extern GHOST_TSuccess GHOST_RecordEvents(GHOST_SystemHandle systemhandle, FILE *file);
+extern GHOST_TSuccess GHOST_StopRecording(GHOST_SystemHandle systemhandle);
+extern GHOST_TSuccess GHOST_PlaybackEvents(GHOST_SystemHandle systemhandle, FILE *file);
+extern int GHOST_PlayingEvents(GHOST_SystemHandle systemhandle);
+extern int GHOST_RecordingEvents(GHOST_SystemHandle systemhandle);
+
#ifdef __cplusplus
}
#endif
Modified: branches/bmesh/blender/intern/ghost/GHOST_IEvent.h
===================================================================
--- branches/bmesh/blender/intern/ghost/GHOST_IEvent.h 2010-11-11 22:12:49 UTC (rev 33027)
+++ branches/bmesh/blender/intern/ghost/GHOST_IEvent.h 2010-11-11 23:36:56 UTC (rev 33028)
@@ -34,9 +34,9 @@
#define _GHOST_IEVENT_H_
#include "GHOST_Types.h"
+#include "GHOST_IWindow.h"
+#include "intern/GHOST_ModifierKeys.h"
-class GHOST_IWindow;
-
/**
* Interface class for events received from GHOST.
* You should not need to inherit this class. The system will pass these events
@@ -71,6 +71,13 @@
*/
virtual GHOST_TUns64 getTime() = 0;
+ virtual void setTime(GHOST_TUns64 t) = 0;
+
+ virtual void setPlaybackModifierKeys(GHOST_ModifierKeys keys) = 0;
+ virtual void getPlaybackModifierKeys(GHOST_ModifierKeys &keys) = 0;
+ virtual void setPlaybackCursor(GHOST_TInt32 x, GHOST_TInt32 y) = 0;
+ virtual void getPlaybackCursor(GHOST_TInt32 &x, GHOST_TInt32 &y) = 0;
+
/**
* Returns the window this event was generated on,
* or NULL if it is a 'system' event.
@@ -83,6 +90,17 @@
* @return The event data.
*/
virtual GHOST_TEventDataPtr getData() = 0;
+
+ virtual int serialize(char buf[256])
+ {
+ return 0;
+ }
+
+ int writeheader(char buf[256])
+ {
+ sprintf(buf, "%lf %d %d", ((double)this->getTime())*0.001, this->getType(), this->getWindow()->getID());
+ return 0;
+ }
};
#endif // _GHOST_IEVENT_H_
Modified: branches/bmesh/blender/intern/ghost/GHOST_ISystem.h
===================================================================
--- branches/bmesh/blender/intern/ghost/GHOST_ISystem.h 2010-11-11 22:12:49 UTC (rev 33027)
+++ branches/bmesh/blender/intern/ghost/GHOST_ISystem.h 2010-11-11 23:36:56 UTC (rev 33028)
@@ -275,6 +275,13 @@
/***************************************************************************************
** Event management functionality
***************************************************************************************/
+
+ virtual GHOST_TSuccess beginRecord(FILE *file) = 0;
+ virtual GHOST_TSuccess endRecord() = 0;
+ virtual GHOST_TSuccess playbackEvents(FILE *file) = 0;
+
+ virtual bool playingEvents(bool *hasevent) const = 0;
+ virtual bool recordingEvents() = 0;
/**
* Retrieves events from the system and stores them in the queue.
Modified: branches/bmesh/blender/intern/ghost/GHOST_IWindow.h
===================================================================
--- branches/bmesh/blender/intern/ghost/GHOST_IWindow.h 2010-11-11 22:12:49 UTC (rev 33027)
+++ branches/bmesh/blender/intern/ghost/GHOST_IWindow.h 2010-11-11 23:36:56 UTC (rev 33028)
@@ -65,7 +65,18 @@
virtual ~GHOST_IWindow()
{
}
+
+ GHOST_IWindow()
+ {
+ static int id = 0;
+ m_id = id++;
+ }
+ virtual int getID()
+ {
+ return m_id;
+ }
+
/**
* Returns indication as to whether the window is valid.
* @return The validity of the window.
@@ -305,6 +316,8 @@
*/
virtual GHOST_TSuccess setCursorGrab(GHOST_TGrabCursorMode mode, GHOST_Rect *bounds) { return GHOST_kSuccess; };
+private:
+ int m_id;
};
#endif // _GHOST_IWINDOW_H_
Modified: branches/bmesh/blender/intern/ghost/intern/GHOST_C-api.cpp
===================================================================
--- branches/bmesh/blender/intern/ghost/intern/GHOST_C-api.cpp 2010-11-11 22:12:49 UTC (rev 33027)
+++ branches/bmesh/blender/intern/ghost/intern/GHOST_C-api.cpp 2010-11-11 23:36:56 UTC (rev 33028)
@@ -95,8 +95,41 @@
return (GHOST_TimerTaskHandle) system->installTimer(delay, interval, timerproc, userdata);
}
+GHOST_TSuccess GHOST_RecordEvents(GHOST_SystemHandle systemhandle, FILE *file)
+{
+ GHOST_ISystem* system = (GHOST_ISystem*) systemhandle;
+
+ return system->beginRecord(file);
+}
+GHOST_TSuccess GHOST_StopRecording(GHOST_SystemHandle systemhandle)
+{
+ GHOST_ISystem* system = (GHOST_ISystem*) systemhandle;
+
+ return system->endRecord();
+}
+GHOST_TSuccess GHOST_PlaybackEvents(GHOST_SystemHandle systemhandle, FILE *file)
+{
+ GHOST_ISystem* system = (GHOST_ISystem*) systemhandle;
+
+ return system->playbackEvents(file);
+}
+
+int GHOST_PlayingEvents(GHOST_SystemHandle systemhandle)
+{
+ GHOST_ISystem* system = (GHOST_ISystem*) systemhandle;
+ return system->playingEvents(NULL);
+}
+
+int GHOST_RecordingEvents(GHOST_SystemHandle systemhandle)
+{
+ GHOST_ISystem* system = (GHOST_ISystem*) systemhandle;
+
+ return system->recordingEvents();
+}
+
+
GHOST_TSuccess GHOST_RemoveTimer(GHOST_SystemHandle systemhandle,
GHOST_TimerTaskHandle timertaskhandle)
{
Modified: branches/bmesh/blender/intern/ghost/intern/GHOST_Event.h
===================================================================
--- branches/bmesh/blender/intern/ghost/intern/GHOST_Event.h 2010-11-11 22:12:49 UTC (rev 33027)
+++ branches/bmesh/blender/intern/ghost/intern/GHOST_Event.h 2010-11-11 23:36:56 UTC (rev 33028)
@@ -35,6 +35,14 @@
#include "GHOST_IEvent.h"
+/* INTEGER CODES */
+#if defined(__sgi) || defined (__sparc) || defined (__sparc__) || defined (__PPC__) || defined (__ppc__) || defined (__hppa__) || defined (__BIG_ENDIAN__)
+ /* Big Endian */
+#define MAKE_ID(a,b,c,d) ( (int)(a)<<24 | (int)(b)<<16 | (c)<<8 | (d) )
+#else
+ /* Little Endian */
+#define MAKE_ID(a,b,c,d) ( (int)(d)<<24 | (int)(c)<<16 | (b)<<8 | (a) )
+#endif
/**
* Base class for events received the operating system.
@@ -73,6 +81,12 @@
return m_time;
}
+ virtual void setTime(GHOST_TUns64 t)
+ {
+ m_time = t;
+ }
+
+
/**
* Returns the window this event was generated on,
* or NULL if it is a 'system' event.
@@ -91,7 +105,29 @@
{
return m_data;
}
+
+ virtual void setPlaybackModifierKeys(GHOST_ModifierKeys keys)
+ {
+ m_playmods = keys;
+ }
+ virtual void getPlaybackModifierKeys(GHOST_ModifierKeys &keys)
+ {
+ keys = m_playmods;
+ }
+
+ virtual void setPlaybackCursor(GHOST_TInt32 mx, GHOST_TInt32 my)
+ {
+ x = mx;
+ y = my;
+ }
+
+ virtual void getPlaybackCursor(GHOST_TInt32 &mx, GHOST_TInt32 &my)
+ {
+ mx = x;
+ my = y;
+ }
+
protected:
/** Type of this event. */
GHOST_TEventType m_type;
@@ -101,6 +137,11 @@
GHOST_IWindow* m_window;
/** Pointer to the event data. */
GHOST_TEventDataPtr m_data;
+
+ /** Modifier key state during event playback **/
+ GHOST_ModifierKeys m_playmods;
+ /** Mouse cursor state during event playback **/
+ GHOST_TInt32 x, y;
};
#endif // _GHOST_EVENT_H_
Modified: branches/bmesh/blender/intern/ghost/intern/GHOST_EventButton.h
===================================================================
--- branches/bmesh/blender/intern/ghost/intern/GHOST_EventButton.h 2010-11-11 22:12:49 UTC (rev 33027)
+++ branches/bmesh/blender/intern/ghost/intern/GHOST_EventButton.h 2010-11-11 23:36:56 UTC (rev 33028)
@@ -58,6 +58,23 @@
m_data = &m_buttonEventData;
}
+ virtual int serialize(char buf[256])
+ {
+ sprintf(buf, "button mask: %d", m_buttonEventData.button);
+
+ return 0;
+ }
+
+ GHOST_EventButton(GHOST_TUns64 time, GHOST_TEventType type, GHOST_IWindow* window, char buf[256])
+ : GHOST_Event(time, type, window)
+ {
+ int i;
+ sscanf(buf, "button mask: %d", &i);
+
+ m_buttonEventData.button = (GHOST_TButtonMask)i;
+ m_data = &m_buttonEventData;
+ }
+
protected:
/** The button event data. */
GHOST_TEventButtonData m_buttonEventData;
Modified: branches/bmesh/blender/intern/ghost/intern/GHOST_EventCursor.h
===================================================================
--- branches/bmesh/blender/intern/ghost/intern/GHOST_EventCursor.h 2010-11-11 22:12:49 UTC (rev 33027)
+++ branches/bmesh/blender/intern/ghost/intern/GHOST_EventCursor.h 2010-11-11 23:36:56 UTC (rev 33028)
@@ -58,6 +58,24 @@
m_data = &m_cursorEventData;
}
+ GHOST_EventCursor(GHOST_TUns64 msec, GHOST_TEventType type, GHOST_IWindow* window, char buf[256])
+ : GHOST_Event(msec, type, window)
+ {
+ int x, y;
+ sscanf(buf, "mousecursor: %d %d", &x, &y);
+
+ m_cursorEventData.x = x;
+ m_cursorEventData.y = y;
+ m_data = &m_cursorEventData;
+ }
+
+ virtual int serialize(char buf[256])
+ {
+ sprintf(buf, "mousecursor: %d %d", m_cursorEventData.x, m_cursorEventData.y);
+
+ return 0;
+ }
+
protected:
/** The x,y-coordinates of the cursor position. */
GHOST_TEventCursorData m_cursorEventData;
Modified: branches/bmesh/blender/intern/ghost/intern/GHOST_EventKey.h
===================================================================
--- branches/bmesh/blender/intern/ghost/intern/GHOST_EventKey.h 2010-11-11 22:12:49 UTC (rev 33027)
+++ branches/bmesh/blender/intern/ghost/intern/GHOST_EventKey.h 2010-11-11 23:36:56 UTC (rev 33028)
@@ -71,7 +71,24 @@
m_keyEventData.ascii = ascii;
m_data = &m_keyEventData;
}
+
+ GHOST_EventKey(GHOST_TUns64 msec, GHOST_TEventType type, GHOST_IWindow* window, char buf[256])
+ : GHOST_Event(msec, type, window)
+ {
+ int key, ascii;
+ sscanf(buf, "key: %d %d", &key, &ascii);
+ m_keyEventData.key = (GHOST_TKey) key;
+ m_keyEventData.ascii = ascii;
+ m_data = &m_keyEventData;
+ }
+
+ virtual int serialize(char buf[256])
+ {
+ sprintf(buf, "key: %d %d", m_keyEventData.key, m_keyEventData.ascii);
+
+ return 0;
+ }
protected:
/** The key event data. */
GHOST_TEventKeyData m_keyEventData;
Modified: branches/bmesh/blender/intern/ghost/intern/GHOST_EventManager.cpp
===================================================================
--- branches/bmesh/blender/intern/ghost/intern/GHOST_EventManager.cpp 2010-11-11 22:12:49 UTC (rev 33027)
+++ branches/bmesh/blender/intern/ghost/intern/GHOST_EventManager.cpp 2010-11-11 23:36:56 UTC (rev 33028)
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list