/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd and/or its subsidiary(-ies).
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Mobility Components.
**
** $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=src/multimedia

testcase = {

    initTestCase: function()
    {
    },


    record_an_audio_file: function(extension, filename, format)
    {
        // Test meta data
        testTitle = "Multimedia - Record Audio File";
        testBinary = "player";
        testSource = "$QTDIR/qtmultimediia/examples/audiorecorder";
        testGoal = "Verify that various Audio files can be recorded.";
        testPreconditions = "";
        testGroups = "BAT, 1.2";

        // Test steps
        prompt(twiki("---+++ " + testTitle + "<br><br>
            *Goal:* " + testGoal + "<br>
            *Pre-Requisites:* " + testPreconditions + "<br>
            *Tested Binary:* " + testBinary + "<br>

            | *Step* | *Verification* |
            | Launch " + testBinary + " | App launches normally |
            | Select Default for Input Device, Audio Codec, File Container and Sample rate | |
            | Select Constant Quality for Encoding mode | |
            | Select output file and hit Record | Verify that Audio Level is responding to audio input |
            | Navigate to created audio file and play | Verify that audio is of intended quality |
            | Close application | Verify application closes cleanly |

         "));
    }
}
