<?xml version="1.0" encoding="UTF-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt for Python.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or (at your option) the GNU General
** Public license version 3 or any later version approved by the KDE Free
** Qt Foundation. The licenses are as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
** https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
-->
<typesystem package="PySide6.QtTest">
  <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
  <load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/>
  <load-typesystem name="QtWidgets/typesystem_widgets.xml" generate="no"/>

  <rejection class="QTest" function-name="qCompare&lt;char&gt;"/>
  <rejection class="QTest" function-name="qCompare&lt;char*&gt;"/>
  <rejection class="QTest" function-name="qCompare&lt;double&gt;"/>
  <rejection class="QTest" function-name="qCompare&lt;float&gt;"/>
  <rejection class="QTest" function-name="qCompare&lt;double,qreal&gt;"/>
  <rejection class="QTest" function-name="qCompare&lt;qreal,double&gt;"/>
  <rejection class="QTest" function-name="qCompare"/>
  <rejection class="QTest" function-name="qInit"/>
  <rejection class="QTest" function-name="qVerify"/>
  <rejection class="QTest" function-name="qSleep"/>
  <rejection class="QTest" function-name="toHexRepresentation"/>
  <rejection class="QTest" function-name="qWait"/>
  <rejection class="QTest" function-name="qFail"/>
  <rejection class="QTest" function-name="qInit"/>
  <rejection class="QTest" function-name="qExec"/>
  <rejection class="QTest" function-name="qData"/>
  <rejection class="QTest" function-name="qWarn"/>
  <rejection class="QTest" function-name="toString"/>
  <rejection class="QTest" function-name="toString&lt;bool>"/>
  <rejection class="QTest" function-name="toString&lt;char>"/>
  <rejection class="QTest" function-name="toString&lt;unsigned char>"/>
  <rejection class="QTest" function-name="toString&lt;signed char>"/>
  <rejection class="QTest" function-name="toString&lt;double>"/>
  <rejection class="QTest" function-name="toString&lt;float>"/>
  <rejection class="QTest" function-name="toString&lt;int>"/>
  <rejection class="QTest" function-name="toString&lt;long>"/>
  <rejection class="QTest" function-name="toString&lt;qint64>"/>
  <rejection class="QTest" function-name="toString&lt;quint64>"/>
  <rejection class="QTest" function-name="toString&lt;short>"/>
  <rejection class="QTest" function-name="toString&lt;uint>"/>
  <rejection class="QTest" function-name="toString&lt;ulong>"/>
  <rejection class="QTest" function-name="toString&lt;ushort>"/>
  <rejection class="QTest" function-name="qt_snprintf"/>

  <rejection class="QTest" function-name="compare_helper"/>
  <rejection class="QTest" function-name="toPrettyUnicode"/>

  <rejection class="QTest" field-name="lastMouseButton"/>
  <rejection class="QTest" field-name="lastMouseTimestamp"/>

  <!-- Qt5: this new stuff below belongs to QtGui. I keep it here for now, after a long odyssey.

      The problem that costed my days of bug hunting is the fact that shiboken gives
      misleading error messages. The messages that I could not get rid of were

    signature 'generateTouchEvent(QWidget*,QInputDevice*,bool)' for function modification in 'QTest' not found. Possible candidates:
    signature 'generateTouchEvent(QWindow*,QInputDevice*,bool)' for function modification in 'QTest' not found. Possible candidates:

      I always thought that for some reason the functions were not recognized, or the arguments somehow
      do not match their declaration. Only late in the project, I learnt that also
      a simply missing type name in the argument list leads to this message.

  <object-type name="QInputDevice">
    <enum-type name="CapabilityFlag" flags="Capabilities"/>
    <enum-type name="DeviceType"/>
  </object-type>
  ^^^ this is now moved into QtGui -->

  <object-type name="QAbstractItemModelTester">
      <enum-type name="FailureReportingMode"/>
  </object-type>

  <object-type name="QSignalSpy"> <!-- Inherits QList<QVariantList> -->
      <extra-includes>
          <include file-name="pysidesignal.h" location="global"/>
      </extra-includes>
      <declare-function signature="count()const" return-type="qsizetype"/>
      <declare-function signature="size()const" return-type="qsizetype"/>
      <declare-function signature="at(qsizetype)const" return-type="QVariantList"/>
      <add-function signature="QSignalSpy(PySideSignalInstance@signal@)">
          <inject-code class="target" position="beginning" file="../glue/qttest.cpp" snippet="qsignalspy-signal"/>
          <inject-documentation format="target" mode="append">
          Constructs a new QSignalSpy that listens for emissions of the signal.
          </inject-documentation>
      </add-function>
  </object-type>

  <namespace-type name="QTest">
    <!-- Qt5: private <enum-type name="AttributeIndex" since="4.6"/> -->
    <enum-type name="KeyAction"/>
    <!-- Qt5: private <enum-type name="LogElementType" since="4.6"/> -->
    <enum-type name="MouseAction"/>
    <enum-type name="QBenchmarkMetric" since="4.7"/>
    <enum-type name="TestFailMode"/>
    <extra-includes>
        <include file-name="QtTest" location="global"/>
    </extra-includes>

    <rejection class="QTouchEventSequence"/>
    <object-type name="PySideQTouchEventSequence" target-lang-name="QTouchEventSequence" since="4.6" >
        <modify-function signature="press(int,const QPoint&amp;,QWidget*)">
            <modify-argument index="return">
                <define-ownership class="target" owner="default"/>
            </modify-argument>
        </modify-function>
        <modify-function signature="press(int,const QPoint&amp;,QWindow*)">
            <modify-argument index="return">
                <define-ownership class="target" owner="default"/>
            </modify-argument>
        </modify-function>
        <modify-function signature="move(int,const QPoint&amp;,QWidget*)">
            <modify-argument index="return">
                <define-ownership class="target" owner="default"/>
            </modify-argument>
        </modify-function>
        <modify-function signature="move(int,const QPoint&amp;,QWindow*)">
            <modify-argument index="return">
                <define-ownership class="target" owner="default"/>
            </modify-argument>
        </modify-function>
        <modify-function signature="release(int,const QPoint&amp;,QWidget*)">
            <modify-argument index="return">
                <define-ownership class="target" owner="default"/>
            </modify-argument>
        </modify-function>
        <modify-function signature="release(int,const QPoint&amp;,QWindow*)">
            <modify-argument index="return">
                <define-ownership class="target" owner="default"/>
            </modify-argument>
        </modify-function>
        <modify-function signature="stationary(int)">
            <modify-argument index="return">
                <define-ownership class="target" owner="default"/>
            </modify-argument>
        </modify-function>
    </object-type>
    <modify-function signature="generateTouchEvent(QWidget*,QPointingDevice*,bool)" rename="touchEvent" since="4.6">
        <modify-argument index="return">
            <define-ownership class="target" owner="target"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="generateTouchEvent(QWindow*,QPointingDevice*,bool)" rename="touchEvent" since="4.6">
        <modify-argument index="return">
            <define-ownership class="target" owner="target"/>
        </modify-argument>
    </modify-function>
  </namespace-type>

  <rejection class="QTestEventList"/>
</typesystem>
