#!/usr/bin/env python3
#
# Copyright (c) 2024 Stormux
# Copyright (c) 2010-2012 The Orca Team
# Copyright (c) 2012 Igalia, S.L.
# Copyright (c) 2005-2010 Sun Microsystems Inc.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., Franklin Street, Fifth Floor,
# Boston MA  02110-1301 USA.
#
# Fork of Orca Screen Reader (GNOME)
# Original source: https://gitlab.gnome.org/GNOME/orca

"""Test of toggle button output."""

from macaroon.playback import *
import utils

sequence = MacroSequence()

sequence.append(KeyComboAction("<Control>f"))
sequence.append(TypeAction("Expander"))
sequence.append(KeyComboAction("Return"))
sequence.append(PauseAction(3000))

sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(utils.AssertPresentationAction(
    "1. Toggle button Where Am I",
    ["BRAILLE LINE:  'gtk3-demo application Error alert & y Details: collapsed toggle button'",
     "     VISIBLE:  '& y Details: collapsed toggle bu', cursor=1",
     "SPEECH OUTPUT: 'Details: toggle button collapsed'"]))

sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Return"))
sequence.append(utils.AssertPresentationAction(
    "2. Toggle button state changed to expanded",
    ["BRAILLE LINE:  'gtk3-demo application Error alert &=y Details: expanded toggle button'",
     "     VISIBLE:  '&=y Details: expanded toggle but', cursor=1",
     "SPEECH OUTPUT: 'expanded'",
     "SPEECH OUTPUT: 'Finally, the full story with all details. And all the inside information, including error codes, etc etc. Pages of information, you might have to scroll down to read it all, or even resize the window - it works !",
     "A second paragraph will contain even more innuendo, just to make you scroll down or resize the window. Do it already !' voice=system"]))

sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(utils.AssertPresentationAction(
    "3. Toggle button pressed Where Am I",
    ["BRAILLE LINE:  'gtk3-demo application Error alert &=y Details: expanded toggle button'",
     "     VISIBLE:  '&=y Details: expanded toggle but', cursor=1",
     "SPEECH OUTPUT: 'Details: toggle button expanded'"]))

sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Return"))
sequence.append(utils.AssertPresentationAction(
    "4. Toggle button state changed to collapsed",
    ["BRAILLE LINE:  'gtk3-demo application Error alert & y Details: collapsed toggle button'",
     "     VISIBLE:  '& y Details: collapsed toggle bu', cursor=1",
     "SPEECH OUTPUT: 'collapsed'"]))

sequence.append(KeyComboAction("<Alt>F4"))

sequence.append(utils.AssertionSummaryAction())
sequence.start()
