瀏覽代碼

fix EventBuffer and update test

mikymod 12 年之前
父節點
當前提交
9155c1e138
共有 5 個文件被更改,包括 30 次插入115 次删除
  1. 1 1
      engine/CMakeLists.txt
  2. 10 6
      engine/EventBuffer.h
  3. 0 3
      engine/tests/CMakeLists.txt
  4. 19 74
      engine/tests/events.cpp
  5. 0 31
      engine/tests/threads.cpp

+ 1 - 1
engine/CMakeLists.txt

@@ -522,7 +522,7 @@ add_executable(${CROWN_EXECUTABLE_NAME} ${CROWN_MAIN_SRC})
 target_link_libraries(${CROWN_EXECUTABLE_NAME} crown)
 target_link_libraries(${CROWN_EXECUTABLE_NAME} crown)
 
 
 if (CROWN_BUILD_TESTS)
 if (CROWN_BUILD_TESTS)
-	#add_subdirectory(tests)
+	add_subdirectory(tests)
 endif (CROWN_BUILD_TESTS)
 endif (CROWN_BUILD_TESTS)
 
 
 install (TARGETS crown DESTINATION bin)
 install (TARGETS crown DESTINATION bin)

+ 10 - 6
engine/EventBuffer.h

@@ -28,6 +28,8 @@ OTHER DEALINGS IN THE SOFTWARE.
 
 
 #include <cstring>
 #include <cstring>
 
 
+#include "OsTypes.h"
+
 #define EVENT_BUFFER_MAX_SIZE 1024 * 4
 #define EVENT_BUFFER_MAX_SIZE 1024 * 4
 
 
 namespace crown
 namespace crown
@@ -35,12 +37,12 @@ namespace crown
 
 
 struct EventBuffer
 struct EventBuffer
 {
 {
-	uint8_t m_buffer[EVENT_BUFFER_MAX_SIZE];
+	char m_buffer[EVENT_BUFFER_MAX_SIZE];
 	size_t m_size;
 	size_t m_size;
 	size_t m_read;
 	size_t m_read;
 
 
 	//-----------------------------------------------------------------------------
 	//-----------------------------------------------------------------------------
-	EventBuffer::EventBuffer() 
+	EventBuffer() 
 		: m_size(0), m_read(0)
 		: m_size(0), m_read(0)
 	{
 	{
 	}
 	}
@@ -48,7 +50,7 @@ struct EventBuffer
 	//-----------------------------------------------------------------------------
 	//-----------------------------------------------------------------------------
 	void push_event(uint32_t event_type, void* event_data, size_t event_size)
 	void push_event(uint32_t event_type, void* event_data, size_t event_size)
 	{
 	{
-		if (m_size + sizeof(event_type) + sizeof(event_size) + event_size > MAX_OS_EVENT_BUFFER_SIZE)
+		if (m_size + sizeof(event_type) + sizeof(event_size) + event_size > EVENT_BUFFER_MAX_SIZE)
 		{
 		{
 			flush();
 			flush();
 		}
 		}
@@ -70,7 +72,9 @@ struct EventBuffer
 			char* cur = m_buffer + m_read;
 			char* cur = m_buffer + m_read;
 
 
 			// Saves type
 			// Saves type
-			event_type = *(uint32_t*) cur;			
+			int32_t event_type = *(uint32_t*) cur;
+
+			return event_type;
 		}
 		}
 
 
 		return -1;		
 		return -1;		
@@ -100,14 +104,14 @@ struct EventBuffer
 	}
 	}
 
 
 	//-----------------------------------------------------------------------------
 	//-----------------------------------------------------------------------------
-	void EventBuffer::clear()
+	void clear()
 	{
 	{
 		m_size = 0;
 		m_size = 0;
 		m_read = 0;
 		m_read = 0;
 	}
 	}
 
 
 	//-----------------------------------------------------------------------------
 	//-----------------------------------------------------------------------------
-	void EventBuffer::flush()
+	void flush()
 	{
 	{
 		m_size = 0;
 		m_size = 0;
 		m_read = 0;
 		m_read = 0;

+ 0 - 3
engine/tests/CMakeLists.txt

@@ -12,7 +12,6 @@ add_executable(paths paths.cpp)
 add_executable(dynamic-strings dynamic-strings.cpp)
 add_executable(dynamic-strings dynamic-strings.cpp)
 add_executable(json json.cpp)
 add_executable(json json.cpp)
 add_executable(events events.cpp)
 add_executable(events events.cpp)
-add_executable(threads threads.cpp)
 
 
 target_link_libraries(allocators crown)
 target_link_libraries(allocators crown)
 target_link_libraries(containers crown)
 target_link_libraries(containers crown)
@@ -22,7 +21,6 @@ target_link_libraries(paths crown)
 target_link_libraries(dynamic-strings crown)
 target_link_libraries(dynamic-strings crown)
 target_link_libraries(json crown)
 target_link_libraries(json crown)
 target_link_libraries(events crown)
 target_link_libraries(events crown)
-target_link_libraries(threads crown)
 
 
 add_test(allocators-test ${EXECUTABLE_OUTPUT_PATH}/allocators)
 add_test(allocators-test ${EXECUTABLE_OUTPUT_PATH}/allocators)
 add_test(containers-test ${EXECUTABLE_OUTPUT_PATH}/containers)
 add_test(containers-test ${EXECUTABLE_OUTPUT_PATH}/containers)
@@ -32,4 +30,3 @@ add_test(paths-test ${EXECUTABLE_OUTPUT_PATH}/paths)
 add_test(dynamic-string-test ${EXECUTABLE_OUTPUT_PATH}/dynamic-strings)
 add_test(dynamic-string-test ${EXECUTABLE_OUTPUT_PATH}/dynamic-strings)
 add_test(json-test ${EXECUTABLE_OUTPUT_PATH}/json)
 add_test(json-test ${EXECUTABLE_OUTPUT_PATH}/json)
 add_test(events-test ${EXECUTABLE_OUTPUT_PATH}/events)
 add_test(events-test ${EXECUTABLE_OUTPUT_PATH}/events)
-add_test(threads-test ${EXECUTABLE_OUTPUT_PATH}/threads)

+ 19 - 74
engine/tests/events.cpp

@@ -1,90 +1,35 @@
 #include "Crown.h"
 #include "Crown.h"
 #include "EventBuffer.h"
 #include "EventBuffer.h"
+#include "OsTypes.h"
+#include "Mouse.h"
+#include "Log.h"
 
 
 using namespace crown;
 using namespace crown;
 
 
-//-----------------------------------------------------------------------------
-struct TestEvent
-{
-	uint32_t a;
-	uint32_t b;
-	uint32_t c;
-};
-
-//-----------------------------------------------------------------------------
-void fill_events(EventBuffer& event_buffer, uint32_t num)
-{
-	TestEvent event;
-	event.a = 1;
-	event.b = 2;
-	event.c = 3;
-
-	for (uint32_t i = 0; i < num; i++)
-	{
-		event_buffer.push_event(0, &event, sizeof(TestEvent));
-	}
-
-	uint32_t size = num * (sizeof(TestEvent) + sizeof(uint32_t) + sizeof(size_t));
-
-	CE_ASSERT(event_buffer.size() == size, "Something ha gone wrong, size is %d, should be %d", event_buffer.size(), size);
-}
-
-void get_events(EventBuffer& event_buffer, uint32_t num)
-{
-	TestEvent* result;
-	uint32_t type = 0;
-	size_t size = 0;
-
-	uint32_t count = 0;
-
-	for (uint32_t i = 0; i < num; i++)
-	{
-		result = (TestEvent*)event_buffer.get_next_event(type, size);
-
-		if (result)
-		{
-			count++;
-		}
-
-		Log::i("count: %d", count);
-	}
-
-	CE_ASSERT(count == num, "Something ha gone wrong, count: %d, num: %d", count, num);
-}
-
-void get_event_until_end(EventBuffer& event_buffer)
-{
-	TestEvent* result;
-	uint32_t type = 0;
-	size_t size = 0;
-
-	int32_t count = 0;
-
-	while ((result = (TestEvent*)event_buffer.get_next_event(type, size)) != NULL)
-	{
-		count++;
-	}
-
-	Log::i("count: %d", count);
-}
-
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 int main()
 int main()
 {
 {
-	EventBuffer event_buffer;
+	EventBuffer buffer;
 
 
-	fill_events(event_buffer, 10);
-	get_events(event_buffer, 10);
+	OsMouseEvent ome;
+	ome.button = MouseButton::LEFT;
+	ome.x = 0;
+	ome.y = 0;
+	ome.pressed = true;
 
 
-	event_buffer.clear();
+	buffer.push_event((uint32_t)OsEvent::MOUSE, &ome, sizeof(OsMouseEvent));
 
 
-	fill_events(event_buffer, 5);
-	get_events(event_buffer, 5);
+	OsEvent::Enum type = (OsEvent::Enum)buffer.get_next_event_type();
+	Log::d("type: %d", type);
 
 
-	event_buffer.clear();
+	OsMouseEvent* result;
+	uint32_t et; size_t es;
+	result = (OsMouseEvent*)buffer.get_next_event(et, es);
 
 
-	fill_events(event_buffer, 30);
-	get_event_until_end(event_buffer);
+	Log::d("button: %d", result->button);
+	Log::d("x: %d", result->x);
+	Log::d("y: %d", result->y);
+	Log::d("pressed: %d", result->pressed);
 
 
 	return 0;
 	return 0;
 }
 }

+ 0 - 31
engine/tests/threads.cpp

@@ -1,31 +0,0 @@
-#include "Thread.h"
-#include "Log.h"
-
-#include <unistd.h>
-
-using namespace crown;
-
-int32_t first_function(void* ft)
-{
-	Thread* thread = (Thread*)ft;
-
-	while(thread->is_running())
-	{
-		Log::i("I'm in the first thread");
-	}
-
-	return 0;
-}
-	
-int main()
-{
-	Thread ft("first-thread");
-
-	ft.start(first_function, &ft);
-
-	sleep(2);
-
-	ft.stop();
-
-	return 0;
-}