summaryrefslogtreecommitdiffstats
path: root/tests/auto/qstatemachine
Commit message (Collapse)AuthorAgeFilesLines
* Cache a state's parent stateKent Hansen2009-10-291-0/+9
| | | | | | | | | | | | | QAbstractState::parentState() is called heavily by the state machine algorithm. The parent state is obtained by qobject_cast'ing QObject::parent(). qobject_cast() is expensive. This commit introduces caching of the result in order to improve performance. We expect that the cache won't be invalidated much since the parent-child relationship of states usually doesn't change after the state machine is started. Reviewed-by: Eskil Abrahamsen Blomfeldt
* Make QStateMachine event posting functions thread-safeKent Hansen2009-10-291-0/+48
| | | | | | | | By popular demand on the Qt Labs blog. This makes it possible to readily use QStateMachine with e.g. worker threads that post events to the machine. Reviewed-by: Eskil Abrahamsen Blomfeldt
* Test that we gracefully handle event posting after the state machine is stoppedKent Hansen2009-10-291-0/+17
| | | | | The internal slot _q_process() should never be called if the machine is not in the Running state.
* statemachine: implement cloning of a whole bunch more GUI eventsKent Hansen2009-10-061-0/+27
| | | | | Now using QEventTransition with almost any type of event will actually work, instead of causing an assert.
* Make sure delayed events are cancelled when a state machine haltsKent Hansen2009-09-291-0/+39
| | | | | | | Otherwise the events might creep into the event loop if the state machine is restarted. Reviewed-by: Eskil Abrahamsen Blomfeldt
* Introduce state machine event priority, make it possible to cancel eventsKent Hansen2009-09-291-5/+44
| | | | | | | | | | | | The priority specifies whether the event should be posted to what the SCXML spec refers to as the "external" (NormalPriority) queue, or the "internal" (HighPriority) queue. Delayed events are now posted through a separate function, postDelayedEvent(). That function returns an id that can be passed to cancelDelayedEvent() to cancel it. Reviewed-by: Eskil Abrahamsen Blomfeldt
* Do synchronous processing of events in state machine if possibleKent Hansen2009-09-291-0/+33
| | | | | | | | Avoid delayed scheduling in the cases where there's no need to delay it (e.g. when the state machine intercepts a signal or event). Task-number: QTBUG-4491 Reviewed-by: Eskil Abrahamsen Blomfeldt
* add a test for custom QEventTransitionKent Hansen2009-09-281-3/+74
| | | | | Test that the event has the right attributes. Also improve the custom QSignalTransition test to cover all attributes.
* Make QSignalEvent and QWrappedEvent inner classes of QStateMachineKent Hansen2009-09-281-2/+2
| | | | | | | | | Those two classes are specific to the state machine framework, but their names were so generic that we felt they were polluting the Q-namespace. They are now QStateMachine::SignalEvent and QStateMachine::WrappedEvent. Reviewed-by: Eskil Abrahamsen Blomfeldt
* Update license headers again.Jason McDonald2009-09-091-4/+4
| | | | Reviewed-by: Trust Me
* Update tech preview license header for files that are new in 4.6.Jason McDonald2009-08-311-13/+13
| | | | Reviewed-by: Trust Me
* Q_ASSERT failure in QStateMachinePrivate::handleTransitionSignal.Gabriel de Dietrich2009-08-281-0/+42
| | | | | | | | | | | | | | The signal index actually emitted was different from the signal index registered. This was due to recent changes in the meta-object protocol, where new indexes are being created (cloned) for signals with default parameters. When registering the transition signal, we now look for the original (non cloned) signal index. The transition keeps track of the user-specified signal index, and sets it when calling onTransition. Reviewed-by: Kent Hansen Reviewed-by: Olivier Goffart Task-number: 260403
* Merge commit 'qt/master'Jason Barron2009-08-211-8/+8
|\
| * rename QEventTransition::eventObject to eventSourceKent Hansen2009-08-211-8/+8
| | | | | | | | | | | | eventObject was a horrible name. The documentation already used the term "event source", so let's call it that. Agreed with Eskil.
* | Merge commit 'qt/master'Jason Barron2009-08-131-1/+1
|\ \ | |/ | | | | | | | | | | | | | | | | | | Conflicts: examples/opengl/samplebuffers/glwidget.cpp src/corelib/io/qfsfileengine_unix.cpp src/corelib/kernel/qobject.cpp src/corelib/tools/qsharedpointer.cpp src/gui/gui.pro tests/auto/qhttp/tst_qhttp.cpp tests/auto/qkeyevent/tst_qkeyevent.cpp
| * Update contact URL in license headers.Jason McDonald2009-08-121-1/+1
| | | | | | | | Reviewed-by: Trust Me
* | Fixed qstatemachine autotest compilaton for Symbian OS.Janne Anttila2009-08-111-8/+8
| | | | | | | | | | | | | | | | Apparently Nokia X86 compiler is not able to use templated qCompare when given arguments have different different type but same base class. This error should be isolated and reported to Nokia X86 team. See task: 259508
* | Merge commit 'origin/master'Jason Barron2009-08-061-91/+91
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: tests/auto/qfilesystemmodel/qfilesystemmodel.pro tests/auto/qfontdialog/tst_qfontdialog.cpp tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp tests/auto/qgraphicslayout/tst_qgraphicslayout.cpp tests/auto/qsqldriver/qsqldriver.pro tests/auto/qsqlquery/qsqlquery.pro tests/auto/qsqlrelationaltablemodel/qsqlrelationaltablemodel.pro tests/auto/qsqltablemodel/qsqltablemodel.pro tests/auto/qsqlthread/qsqlthread.pro tests/auto/qstatemachine/tst_qstatemachine.cpp tests/auto/qtcpsocket/tst_qtcpsocket.cpp
| * Trailing whitespace and tab/space fixes for auto testsJanne Anttila2009-08-041-91/+91
| |
* | remove constructors that are not usefulKent Hansen2009-08-031-17/+13
| | | | | | | | | | | | | | The constructors that take a list of target states produce hard-to-read code, and they're rarely useful in practice since 99% of transitions take a single target state; so it's better to enforce that setTarget{State,States}() be used instead.
* | add private goToState() function to state machineKent Hansen2009-07-311-0/+41
| | | | | | | | Needed for Declarative UI integration.
* | Make QStateMachine inherit QStateKent Hansen2009-07-221-234/+277
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This removes the need for a "root state" in the machine; or rather, the machine _is_ the root state. User code can now pass in a QStateMachine directly to the QState constructor, instead of machine->rootState(). This also means we could get rid of the "proxying" from the machine to the root state for things like properties (initialState et al), finished() signal and auto-reparenting of states (the ChildAdded event hack). A fun little side-effect of this change is that it's now possible to embed state machines within state machines. We can't think of a good use case yet where you would rather embed a stand-alone state machine (with its own event processing etc.) rather than having just a regular nested state, but it's neat and it works. Reviewed-by: Eskil Abrahamsen Blomfeldt
* | Fix memleaks in the autotestsKent Hansen2009-07-211-1/+14
| |
* | add autotest for adding transition from state machine's rootKent Hansen2009-07-211-0/+10
| | | | | | | | | | | | It's not supported because the root state has no ancestor, which is a requirement for the state machine's transition selection algorithm.
* | Disable private unit tests when Qt is configured withoutRohan McGovern2009-07-091-0/+2
|/ | | | | | | | | | | | -developer-build, part 2. Some autotests use private (unexported) code, either because they're testing private classes or because that's the easiest way to test the public classes. Configuring Qt with `-developer-build' is needed for these tests. This commit fixes the tests so configuring without `-developer-build' only builds the tests which strictly use public API.
* Remove default error stateEskil Abrahamsen Blomfeldt2009-06-231-38/+48
| | | | | | | | | Having an implicit default error state in the graph which the user has not added is unintuitive and ugly. Rather than have a default error state, we stop execution of the machine and print an error message when the machine has run-time errors. If a user wishes to prevent errors from stopping the machine, you can set one or more error states explicitly.
* Fix tests on WindowsEskil Abrahamsen Blomfeldt2009-06-231-16/+16
| | | | | | Formatting of pointers in sprintf() is platform dependent. Use QString::sprintf() instead to make sure warnings match the actual warnings emitted.
* perform normalization of signatures for signal transitionsKent Hansen2009-06-221-0/+25
| | | | Make state->addTransition(foo, SIGNAL( bar( ) ), ...) work.
* add test for parallel root state (which currently isn't supported)Kent Hansen2009-06-221-0/+24
|
* Autotests: fix compile issue on hpuxThierry Bastian2009-06-181-5/+5
|
* Autotests: fix compile issues on HPUXThierry Bastian2009-06-171-16/+16
|
* perform all property assignments of initial state that's nestedKent Hansen2009-06-171-11/+19
| | | | | | If the machine's initial state is nested, a set of states will be entered, and we need to do the property assignments of all of them.
* bring back QAbstractTransition::triggered() signalKent Hansen2009-06-171-0/+2
| | | | | | It's been requested by several users. Since we have QAbstractState::{entered,exited}() signals, we should have this one as well.
* add tests for QAbstractState::{entered,exited}() signalsKent Hansen2009-06-171-0/+9
|
* Update license headers in files that are new in 4.6.Jason McDonald2009-06-171-2/+2
| | | | Reviewed-by: Trust Me
* don't require use of SIGNAL macro in calls to addTransition()Kent Hansen2009-06-031-0/+28
| | | | | Just as with the QSignalTransition::signal property, this makes it possible to use the function from language bindings (e.g. QtScript).
* add various testsKent Hansen2009-05-221-18/+86
| | | | Trying to get coverage up to 100%
* test what happens when changing to an invalid signal while state is activeKent Hansen2009-05-221-0/+6
|
* add tests for multiple signal/event transitions from same sourceKent Hansen2009-05-221-0/+68
|
* make sure signal transition is correctly unregistered/re-registeredKent Hansen2009-05-221-8/+27
| | | | | | When the signal or senderObject is changed while the state is active, the transition needs to be unregistered _before_ either property is changed, only _then_ can it be re-registered.
* make sure event transition is correctly unregistered/re-registeredKent Hansen2009-05-221-0/+13
| | | | | | When the eventType or eventObject is changed while the state is active, the transition needs to be unregistered _before_ either property is changed, only _then_ can it be re-registered.
* add some edge case tests for QStateMachine::start() & stop()Kent Hansen2009-05-221-0/+8
|
* add more testsKent Hansen2009-05-221-64/+124
|
* add more testsKent Hansen2009-05-221-14/+75
|
* Use QTest::ignoreMessage() instead of custom implementationEskil Abrahamsen Blomfeldt2009-05-221-52/+14
| | | | | Since QTest::ignoreMessage() already exists, we should use this instead of implementing an ad hoc solution that does the same.
* Avoid memory leaks in QStateMachine testsEskil Abrahamsen Blomfeldt2009-05-201-29/+28
| | | | | Give some objects parents and allocate some objects on the stack to avoid leaking them.
* Make QAbstractTransition::eventTest() non-constEskil Abrahamsen Blomfeldt2009-05-141-4/+4
| | | | | We decided to remove the const of the eventTest() since some transitions have dynamic conditions and need to update when eventTest() is called.
* correctly handle multiple event transitions for same (object,event)Kent Hansen2009-05-131-0/+48
| | | | | | The event filter was not removed at the right time. We now store the number of active event transitions for a particular (object,event) and only remove the filtering when the count drops to zero.
* correctly handle multiple signal transitions for same (object,signal)Kent Hansen2009-05-121-0/+45
| | | | | | The signal was not disconnected at the right time. We now store the number of active signal transitions for a particular (object,signal) and only disconnect when the count drops to zero.
* Don't interrupt test before animation finishesEskil Abrahamsen Blomfeldt2009-05-121-2/+4
| | | | | | | We're testing if both animations actually run and finish, so we need to make sure one of the polished signals is emitted last, and then react to this. I've done this by setting the duration of the animation which animated the property set by s2Child, so that it's sufficient to listen to this polished signal.