File: sqlquerymodel.t

package info (click to toggle)
qt4-perl 4.8.4-1.2
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 8,636 kB
  • ctags: 8,100
  • sloc: perl: 42,963; cpp: 28,039; makefile: 160; xml: 98; sh: 4
file content (95 lines) | stat: -rw-r--r-- 2,516 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/perl

package SqlQueryModelHelp;

use strict;
use warnings;

use QtCore4;
use QtGui4;
use QtTest4 qw( QVERIFY );
use EditableSqlModel;
use QtCore4::isa qw(Qt::Object);
use QtCore4::slots
    private => 1,
    testEditability => [],
    initTestCase => [];
use Test::More;
use lib '../';
use Connection;

sub NEW {
    my ($class, $parent) = @_;
    $class->SUPER::NEW();
}

sub testEditability {
    my $model = this->{model};
    my $view = this->{view};

    foreach my $index ( $model->index( 1, 1 ), $model->index( 1, 2 ) ) {
        my $text;
        my $curText;
        my $col = $index->column();
        if ( $col == 1 ) {
            $curText = 'Christine';
            $text = 'Larry';
        }
        else {
            $curText = 'Holand';
            $text = 'Wall';
        }

        is( $model->data( $index, Qt::DisplayRole() )->value(), $curText );
        my $itemRect = $view->visualRect( $index );
        Qt::Test::mouseClick( $view->viewport(), Qt::LeftButton(), Qt::NoModifier(), $itemRect->center() );
        Qt::Test::mouseDClick( $view->viewport(), Qt::LeftButton(), Qt::NoModifier(), $itemRect->center() );
        my $delegate = ($view->findChildren( 'Qt::LineEdit' ))[0]->[0];
        Qt::Test::keyClicks( $delegate, $text );
        Qt::Test::qWait(100);
        Qt::Test::keyClick( $delegate, Qt::Key_Enter() );
        Qt::Test::qWait(100);

        is( $model->data( $index, Qt::DisplayRole() )->value(), $text );
    }
}

sub initializeModel
{
    my ($model) = @_;
    $model->setQuery('select * from person');
    $model->setHeaderData(0, Qt::Horizontal(), Qt::Variant(Qt::String(Qt::Object::tr('ID'))));
    $model->setHeaderData(1, Qt::Horizontal(), Qt::Variant(Qt::String(Qt::Object::tr('First name'))));
    $model->setHeaderData(2, Qt::Horizontal(), Qt::Variant(Qt::String(Qt::Object::tr('Last name'))));
}

sub initTestCase {
    Connection::createConnection();
    
    my $editableModel = EditableSqlModel();
    initializeModel($editableModel);

    my $view = Qt::TableView();
    $view->setModel($editableModel);
    $view->setWindowTitle( Qt::Object::tr('Editable Query Model') );
    $view->show();
    
    Qt::Test::qWaitForWindowShown( $view );
    Qt::Test::qWait(100);
    this->{model} = $editableModel;
    this->{view} = $view;
    pass( 'Window shown' );
}

package main;

use strict;
use warnings;

use QtCore4;
use QtGui4;
use QtTest4 qw(QTEST_MAIN);
use Test::More tests => 5;
use SqlQueryModelHelp;

exit QTEST_MAIN('SqlQueryModelHelp');