Merge remote branch 'mainline/1.0'

Conflicts:
	CMakeLists.txt
This commit is contained in:
Hugo Parente Lima 2010-10-19 17:20:10 -02:00
commit 4a638ed634
26 changed files with 2639 additions and 755 deletions

View file

@ -6,8 +6,8 @@ else()
endif()
if(WIN32)
set(TEST_PYTHONPATH "${CMAKE_BINARY_DIR};${CMAKE_SOURCE_DIR}/tests/util")
set(TEST_LIBRARY_PATH "${libpyside_BINARY_DIR};$ENV{PATH}")
set(TEST_PYTHONPATH "${CMAKE_BINARY_DIR};${CMAKE_SOURCE_DIR}/tests/util;${testbinding_BINARY_DIR}")
set(TEST_LIBRARY_PATH "${libpyside_BINARY_DIR};${pysidetest_BINARY_DIR};$ENV{PATH}")
set(LIBRARY_PATH_VAR "PATH")
string(REPLACE "\\" "/" TEST_PYTHONPATH "${TEST_PYTHONPATH}")
string(REPLACE "\\" "/" TEST_LIBRARY_PATH "${TEST_LIBRARY_PATH}")
@ -15,8 +15,8 @@ else()
string(REPLACE ";" "\\;" TEST_PYTHONPATH "${TEST_PYTHONPATH}")
string(REPLACE ";" "\\;" TEST_LIBRARY_PATH "${TEST_LIBRARY_PATH}")
else()
set(TEST_PYTHONPATH "${CMAKE_BINARY_DIR}:${CMAKE_SOURCE_DIR}/tests/util")
set(TEST_LIBRARY_PATH "${libpyside_BINARY_DIR}:$ENV{LD_LIBRARY_PATH}")
set(TEST_PYTHONPATH "${CMAKE_BINARY_DIR}:${CMAKE_SOURCE_DIR}/tests/util:${testbinding_BINARY_DIR}")
set(TEST_LIBRARY_PATH "${libpyside_BINARY_DIR}:${pysidetest_BINARY_DIR}:$ENV{LD_LIBRARY_PATH}")
set(LIBRARY_PATH_VAR "LD_LIBRARY_PATH")
endif()
@ -35,7 +35,7 @@ else()
elseif(${ARGC} EQUAL 2)
set(EXPECT_TO_FAIL ${ARGV1})
else()
message(WARNING "Ivalid call of macro PYSIDE_TEST")
message(WARNING "Invalid call of macro PYSIDE_TEST")
endif()
set(TEST_CMD ${XVFB_EXEC} ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/${ARGV0}")
add_test(${TEST_NAME} ${TEST_CMD})
@ -59,6 +59,7 @@ else()
endif ()
add_subdirectory(signals)
add_subdirectory(pysidetest)
TEST_QT_MODULE(QT_QTCORE_FOUND QtCore)
TEST_QT_MODULE(QT_QTGUI_FOUND QtGui)
TEST_QT_MODULE(QT_QTNETWORK_FOUND QtNetwork)

View file

@ -0,0 +1,71 @@
project(pysidetest)
project(testbinding)
cmake_minimum_required(VERSION 2.6)
find_package(Qt4 4.5.0 REQUIRED)
find_package(PythonLibs REQUIRED)
find_package(PythonInterpWithDebug REQUIRED)
find_package(GeneratorRunner 0.6 REQUIRED)
find_package(Shiboken 0.5 REQUIRED)
set(QT_USE_QTCORE 1)
include(${QT_USE_FILE})
add_definitions(${QT_DEFINITIONS})
add_definitions(-DQT_SHARED)
add_definitions(-DRXX_ALLOCATOR_INIT_0)
set(pysidetest_SRC
testobject.cpp
)
set(pysidetest_MOC_HEADERS
testobject.h
)
qt4_wrap_cpp(pysidetest_MOC_SRC ${pysidetest_MOC_HEADERS})
set(testbinding_SRC
${CMAKE_CURRENT_BINARY_DIR}/testbinding/testobject_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/testbinding/testbinding_module_wrapper.cpp
)
set(GENERATOR_EXTRA_FLAGS --generatorSet=shiboken --enable-parent-ctor-heuristic --enable-pyside-extensions --enable-return-value-heuristic)
add_custom_command(OUTPUT ${testbinding_SRC}
COMMAND ${GENERATORRUNNER_BINARY} ${GENERATOR_EXTRA_FLAGS}
${CMAKE_CURRENT_SOURCE_DIR}/global.h
--include-paths=${CMAKE_CURRENT_SOURCE_DIR}:${QT_INCLUDE_DIR}:${QT_QTCORE_INCLUDE_DIR}
--typesystem-paths=${CMAKE_CURRENT_SOURCE_DIR}:${pyside_SOURCE_DIR}:${QtCore_SOURCE_DIR}
--output-directory=${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/typesystem_pysidetest.xml
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Running generator for test binding..."
)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${QT_INCLUDE_DIR}
${QT_QTCORE_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR}
${QtCore_BINARY_DIR}/PySide/QtCore
${libpyside_SOURCE_DIR}
${PYTHON_INCLUDE_PATH})
add_library(pysidetest SHARED ${pysidetest_SRC} ${pysidetest_MOC_SRC})
target_link_libraries(pysidetest ${QT_QTCORE_LIBRARY})
add_library(testbinding MODULE ${testbinding_SRC})
set_property(TARGET testbinding PROPERTY PREFIX "")
target_link_libraries(testbinding
pysidetest
pyside
${PYTHON_LIBRARIES}
${SHIBOKEN_LIBRARY}
${QT_QTCORE_LIBRARY}
${SBK_PYTHON_LIBRARIES})
add_dependencies(testbinding pyside QtCore libpyside pysidetest)
PYSIDE_TEST(homonymoussignalandmethod_test.py)

View file

@ -0,0 +1,2 @@
#include "pyside_global.h"
#include "testobject.h"

View file

@ -0,0 +1,53 @@
#!/usr/bin/python
import unittest
from testbinding import TestObject
'''Tests the behaviour of homonymous signals and slots.'''
class HomonymousSignalAndMethodTest(unittest.TestCase):
def setUp(self):
self.value = 123
self.called = False
self.obj = TestObject(self.value)
def tearDown(self):
del self.value
del self.called
del self.obj
def testIdValueSignalEmission(self):
def callback(idValue):
self.assertEqual(idValue, self.value)
self.obj.idValue.connect(callback)
self.obj.emitIdValueSignal()
def testStaticMethodDoubleSignalEmission(self):
def callback():
self.called = True
self.obj.staticMethodDouble.connect(callback)
self.obj.emitStaticMethodDoubleSignal()
self.assert_(self.called)
def testSignalNotCallable(self):
self.assertRaises(TypeError, self.obj.justASignal)
def testCallingInstanceMethodWithArguments(self):
self.assertRaises(TypeError, TestObject.idValue, 1)
def testCallingInstanceMethodWithoutArguments(self):
self.assertRaises(TypeError, TestObject.idValue)
def testHomonymousSignalAndMethod(self):
self.assertEqual(self.obj.idValue(), self.value)
def testHomonymousSignalAndStaticMethod(self):
self.assertEqual(TestObject.staticMethodDouble(3), 6)
def testHomonymousSignalAndStaticMethodFromInstance(self):
self.assertEqual(self.obj.staticMethodDouble(4), 8)
if __name__ == '__main__':
unittest.main()

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
{
local:
_ZSt*;
_ZNSt*;
_ZNSs*;
_ZNKSt*;
};

View file

@ -0,0 +1,14 @@
#include "testobject.h"
void
TestObject::emitIdValueSignal()
{
emit idValue(m_idValue);
}
void
TestObject::emitStaticMethodDoubleSignal()
{
emit staticMethodDouble();
}

View file

@ -0,0 +1,28 @@
#ifndef TESTOBJECT_H
#define TESTOBJECT_H
#include <QObject>
#include "pysidemacros.h"
class PYSIDE_API TestObject : public QObject
{
Q_OBJECT
public:
TestObject(int idValue, QObject* parent = 0) : QObject(parent), m_idValue(idValue) {}
int idValue() const { return m_idValue; }
static int staticMethodDouble(int value) { return value * 2; }
void emitIdValueSignal();
void emitStaticMethodDoubleSignal();
signals:
void idValue(int newValue);
void justASignal();
void staticMethodDouble();
private:
int m_idValue;
};
#endif // TESTOBJECT_H

View file

@ -0,0 +1,6 @@
<?xml version="1.0"?>
<typesystem package="testbinding">
<load-typesystem name="typesystem_core.xml" generate="no" />
<object-type name="TestObject" />
</typesystem>