main:
    name: Test conditionals
    version: 0.1
    stop_on_failure: False
    steps:

        - group:
            name: Set test variables depending on the OS
            steps:

            - let:
                name: Set test variables for Linux
                condition: <| "$(os)" == "Linux" |>
                values:
                    - terminal_prompt: $(linux_prompt)
            - let:
                name: Set test variables for Windows
                condition: <| "$(os)" == "Windows" |>
                values:
                    - terminal_prompt: $(windows_prompt)

# This loop illustrate the way to exit the loop upon operator answer
        - loop:
            doc: This loop illustrate the way to exit the loop upon operator answer.
            name: Infine loop with conditional exit
            stop_on_failure: False
            steps:
                - sleep:
                    name: sleep item
                    timeout: 5

                - dialog_question:
                    name: Question to continue
                    question: Answer yes to exit the loop
                    no_fail: True

            exit_condition:
                value: <| "$(last_step_result)" == "PASS" |>


        - let:
            name: let
            values:
                - conditional_exec: <| random.randint(1, 4) |>

        - console:
            name: Console creation
            condition: <| $(conditional_exec) == 1 |>
            console_name: consname
            doc: Opening the console
            steps:
                - open:
                    protocol: terminal
                    terminal_path: $(test_directory)

        - console:
            name: Console read_until with timeout
            condition: <| $(conditional_exec) == 1 |>
            console_name: consname
            steps:
                - read_until: {expected: "$(terminal_prompt)", timeout: 10}

        - console:
            name: Console write
            condition: <| $(conditional_exec) == 1 |>
            console_name: consname
            steps:
                - writeln: echo 0

        - sleep:
            name: sleep item
            condition: <| $(conditional_exec) == 1 |>
            timeout: 5

        - console:
            name: Console read_until immediate
            condition: <| $(conditional_exec) == 1 |>
            console_name: consname
            steps:
{% if os == "Windows" %}
                - read_until: {expected: "echo 0", timeout: 0}
{% endif %}
                - read_until: {expected: "0", timeout: 0}

        - console:
            name: Console read_until immediate (2)
            condition: <| $(conditional_exec) == 1 |>
            console_name: consname
            steps:
                - read_until: {expected: "$(terminal_prompt)", timeout: 0}

        - console:
            name: Console closure
            condition: <| $(conditional_exec) == 1 |>
            console_name: consname
            steps:
                - close: consname

        - sleep:
            name: sleep item
            condition: <| $(conditional_exec) == 2 |>
            timeout: 5

        - dialog_image:
            name: dialog image item
            condition: <| $(conditional_exec) == 3 |>
            question: click ok if you see the image
            filename: image.jpg

        - dialog_value:
            name: dialog_value item
            condition: <| $(conditional_exec) == 4 |>
            question: enter something and click ok