/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:GPL-EXCEPT$
** 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 General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** 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-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/

//TESTED_COMPONENT=qtdeclarative

testcase = {

    basic_animated_sprite_usage: function()
    {
        // Test Meta-data
        testTitle = "Using AnimatedSprite elements";
        testBinary = "animatedsprite.qml";
        testSource: "$QTDIR/qtdeclarative/tests/system/animatedsprite";
        testGoal = "Verify an AnimatedSprite can be used to display an animating character.";
        testPreconditions = "None";
        testGroups = "BAT,QtQuick 2.0";

        // Test Steps
        prompt(twiki('---+++ ' + testTitle + '<br><br>
        *Goal:* ' + testGoal + '<br>
        *Pre-Requisites:* ' + testPreconditions + '<br>
        *Tested Binary:* ' + testBinary + '<br>
    | *Step* | *Verification* |
    | Run '+testBinary+' | Application has started, showing a teddy bear blinking and moving its head and arms |
    | | Watching closely, note that after the bear points its paw, it will look right, then look left, then blink |
    | Press the Reverse button | After the bear points its paw, it should blink, then look left, then look right |
    | Press the FPS "+" button 10 times | The FPS label shows 15 |
    | | The bear is animating quickly |
    | Press the FPS "-" button 10 times | The FPS label shows 5 |
    | | The bear is animating slowly |'));
    },

    changing_a_sprite_source: function()
    {
        // Test Meta-data
        testTitle = "Changing a sprite source";
        testBinary = "animatedsprite.qml";
        testSource: "$QTDIR/qtdeclarative/tests/system/animatedspriteadvance";
        testGoal = "Verify an AnimatedSprite source property can be changed, redrawing the new sprite.";
        testPreconditions = "None";
        testGroups = "BAT,QtQuick 2.0";

        // Test Steps
        prompt(twiki('---+++ ' + testTitle + '<br><br>
        *Goal:* ' + testGoal + '<br>
        *Pre-Requisites:* ' + testPreconditions + '<br>
        *Tested Binary:* ' + testBinary + '<br>
    | *Step* | *Verification* |
    | Run '+testBinary+' | Application has started, showing a teddy bear blinking and moving its head and arms |
    | | The bear\'s eyes are brown |
    | Press the blue button under the Eyes control | The bear\'s eyes are blue |
    | Press the white button under the Body control | The bear is now a polar bear with blue eyes |
    | Press the gray button under the Body control | The blue eyed polar bear\'s face and abdomen are now gray |
    |  | All of the items are still animating in sync |'));
    },

    changing_the_animation_timing_method: function()
    {
        // Test Meta-data
        testTitle = "Changing the method used to animate a sprite";
        testBinary = "animatedsprite.qml";
        testSource: "$QTDIR/qtdeclarative/tests/system/animatedsprite";
        testGoal = "Verify an AnimatedSprite can be timed using application frame sync or a specified frame rate.";
        testPreconditions = "None";
        testGroups = "BAT,QtQuick 2.0";

        // Test Steps
        prompt(twiki('---+++ ' + testTitle + '<br><br>
        *Goal:* ' + testGoal + '<br>
        *Pre-Requisites:* ' + testPreconditions + '<br>
        *Tested Binary:* ' + testBinary + '<br>
    | *Step* | *Verification* |
    | Run '+testBinary+' | Application has started, showing a teddy bear blinking and moving its head and arms |
    | Press FrameSync | Rate should show FrameSync |
    | | The bear should be animating very fast and the FPS counter should still be 5 |
    | Press FrameSync | The bear should be again animating slowly, Rate should show FrameRate |
    | Press the FPS "-" button 5 times | FPS should show 0 |
    | | The bear should be not moving |
    | Press the FPS "-" button | The FPS label should show -1 |
    | | The bear should be not moving |
    | Press the FPS "+" button twice | FPS should show 1 |
    | | The bear should be animating slowly |'));
    }
}
