1#############################################################################
2##
3## Copyright (C) 2016 The Qt Company Ltd.
4## Contact: https://www.qt.io/licensing/
5##
6## This file is part of the test suite of Qt for Python.
7##
8## $QT_BEGIN_LICENSE:GPL-EXCEPT$
9## Commercial License Usage
10## Licensees holding valid commercial Qt licenses may use this file in
11## accordance with the commercial license agreement provided with the
12## Software or, alternatively, in accordance with the terms contained in
13## a written agreement between you and The Qt Company. For licensing terms
14## and conditions see https://www.qt.io/terms-conditions. For further
15## information use the contact form at https://www.qt.io/contact-us.
16##
17## GNU General Public License Usage
18## Alternatively, this file may be used under the terms of the GNU
19## General Public License version 3 as published by the Free Software
20## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
21## included in the packaging of this file. Please review the following
22## information to ensure the GNU General Public License requirements will
23## be met: https://www.gnu.org/licenses/gpl-3.0.html.
24##
25## $QT_END_LICENSE$
26##
27#############################################################################
28
29'''Test cases for QUdpSocket'''
30
31import os
32import sys
33import unittest
34
35sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
36from init_paths import init_test_paths
37init_test_paths(False)
38
39from PySide2.QtCore import QUrl, QObject, SIGNAL, QCoreApplication, QTimer
40from PySide2.QtNetwork import QUdpSocket, QHostAddress
41import py3kcompat as py3k
42
43class HttpSignalsCase(unittest.TestCase):
44    '''Test case for bug #124 - readDatagram signature
45
46    QUdpSocket.readDatagram must return a tuple with the datagram, host and
47    port, while receiving only the max payload size.'''
48
49    def setUp(self):
50        #Acquire resources
51        self.called = False
52        self.app = QCoreApplication([])
53
54        self.socket = QUdpSocket()
55
56        self.server = QUdpSocket()
57        self.server.bind(QHostAddress(QHostAddress.LocalHost), 45454)
58
59    def tearDown(self):
60        #Release resources
61        del self.socket
62        del self.server
63        del self.app
64
65    def sendPackage(self):
66        addr = QHostAddress(QHostAddress.LocalHost)
67        self.socket.writeDatagram(py3k.b('datagram'), addr, 45454)
68
69    def callback(self):
70        while self.server.hasPendingDatagrams():
71            datagram, host, port = self.server.readDatagram(self.server.pendingDatagramSize())
72            self.called = True
73            self.app.quit()
74
75    def testDefaultArgs(self):
76        #QUdpSocket.readDatagram pythonic return
77        # @bug 124
78        QObject.connect(self.server, SIGNAL('readyRead()'), self.callback)
79        self.sendPackage()
80        self.app.exec_()
81
82        self.assertTrue(self.called)
83
84if __name__ == '__main__':
85    unittest.main()
86