- let:
    name: py_func test constants,
    values:
      py_func test parameter: test parameter

- py_func:
    name: pass py_func
    key: $(test)_PASS
    file: $(test_path)$(psep)py_func.py
    func_name: assertparam
    param:
        - true

- py_func:
    name: fail py_func
    key: $(test)_FAIL
    file: $(test_path)$(psep)py_func.py
    func_name: assertparam
    param:
        - false

- py_func:
    name: fail py_func with expected result "FAIL"
    key: $(test)_PASS
    file: $(test_path)$(psep)py_func.py
    func_name: assertparam
    param:
        - false
    expected_result: FAIL

- py_func:
    name: pass py_func with expected result FAIL
    key: $(test)_FAIL
    file: $(test_path)$(psep)py_func.py
    func_name: assertparam
    param:
        - true
    expected_result: FAIL

- py_func:
    name: expected -1
    key: $(test)_PASS
    file: $(test_path)$(psep)py_func.py
    func_name: echo
    param:
        - -1
    expected_result: -1

- py_func:
    name: expected eval
    key: $(test)_PASS
    file: $(test_path)$(psep)py_func.py
    func_name: echo
    param:
        - -1
    expected_result: "354848436 - 354848437"

- py_func:
    name: expected table
    key: $(test)_PASS
    file: $(test_path)$(psep)py_func.py
    func_name: echo
    param:
        - [-1, a, {toto: tata}]
    expected_result: "[-1, 'a', {'toto': 'tata'}]"

- py_func:
    name: global param py_func
    key: $(test)_PASS
    file: $(test_path)$(psep)py_func.py
    func_name: checkglobal
    param:
        - $(py_func test parameter)

- let:
    name:  python2func
    key: $(test)_PASS
    values:
        - py: $(test_path)$(psep)py_func.py

- py_func:
    name: global param py_func 2
    key: $(test)_PASS
    file: $(py)
    func_name: checkglobal2
    expected_result: $(py_func test parameter)


- py_func:
    name: global param py_func
    key: $(test)_PASS
    file: $(py)
    func_name: checkglobal
    param:
        - $(py_func test parameter)

- py_func:
    name: skipped_checkglobal
    file: $(test_path)$(psep)py_func.py
    func_name: should_not_be_called
    param:
        - $(py_func test parameter)

- py_func:
    name: skipped true
    file: $(test_path)$(psep)py_func.py
    func_name: checkglobal
    skipped: true
    param:
        - $(py_func test parameter)

- py_func:
    name: skipped 1
    file: $(test_path)$(psep)py_func.py
    func_name: checkglobal
    skipped: 1
    param:
        - $(py_func test parameter)

- py_func:
    name: FunctionItem test
    file: $(test_path)$(psep)py_func.py
    func_name: ValidationTest
    param:
        - $(py_func test parameter)

- group:
    name: Function results check
    steps:
        - group:
            name: Function result 1
            steps:
                - py_func:
                    name: int failure
                    key: $(test)_PASS
                    file: $(test_path)$(psep)py_func.py
                    func_name: echo
                    param: [-1]
                    expected_result: -1
                - py_func:
                    name: float failure
                    key: $(test)_PASS
                    file: $(test_path)$(psep)py_func.py
                    func_name: echo
                    param: [-1.3]
                    expected_result: -1.3
                - py_func:
                    name: String failure
                    key: $(test)_PASS
                    file: $(test_path)$(psep)py_func.py
                    func_name: echo
                    param: [ "FAIL" ]
                    expected_result: FAIL
                - py_func:
                    name: Tuple int,str failure
                    key: $(test)_PASS
                    file: $(test_path)$(psep)py_func.py
                    func_name: tuple_return
                    param: [ -1, "Got a failure" ]
                    expected_result: [-1, "Got a failure"]
        - group:
            name: Functions result 2
            steps:
                - py_func:
                    name: int success
                    key: $(test)_PASS
                    file: $(test_path)$(psep)py_func.py
                    func_name: echo
                    param: [0]
                    expected_result: 0
                - py_func:
                    name: float success
                    key: $(test)_PASS
                    file: $(test_path)$(psep)py_func.py
                    func_name: echo
                    param: [0.3]
                    expected_result: 0.3
                - py_func:
                    name: String success
                    key: $(test)_PASS
                    file: $(test_path)$(psep)py_func.py
                    func_name: echo
                    param: [ "Something that is not only strictly FAIL" ]
                    expected_result: Something that is not only strictly FAIL
                - py_func:
                    name: Tuple int,str success
                    key: $(test)_PASS
                    file: $(test_path)$(psep)py_func.py
                    func_name: tuple_return
                    param: [ 0, "OK" ]
                    expected_result: [0, "OK"]

- py_func:
    name: delgd test
    key: $(test)_PASS
    file: $(test_path)$(psep)py_func.py
    func_name: test_delgd

- py_func:
    name: function returning nothing should succeed
    key: $(test)_PASS
    file: $(test_path)$(psep)py_func.py
    func_name: return_nothing

- py_func:
    name: function returning explicit None should succeed
    key: $(test)_PASS
    file: $(test_path)$(psep)py_func.py
    func_name: return_explicit_none

- group:
    name: context_id tests
    steps:
        - py_func:
            name: set serializable value
            key: $(test)_PASS
            file: $(test_path)$(psep)py_func.py
            func_name: set_context_value
            param:
                - hello context
            expected_result: hello context
        - py_func:
            name: get serializable value (same context_id)
            key: $(test)_PASS
            file: $(test_path)$(psep)py_func.py
            func_name: get_context_value
            context_id: ctx_test
            expected_result: hello context
        - py_func:
            name: get serializable value (no context_id, from main gd)
            key: $(test)_PASS
            file: $(test_path)$(psep)py_func.py
            func_name: get_context_value
            expected_result: hello context
        - py_func:
            name: get serializable value (different context_id)
            key: $(test)_PASS
            file: $(test_path)$(psep)py_func.py
            func_name: get_context_value
            context_id: ctx_other
            expected_result: hello context
        - py_func:
            name: set non-serializable value
            key: $(test)_PASS
            file: $(test_path)$(psep)py_func.py
            func_name: set_ns_value
            context_id: ctx_ns_test
            param:
                - hello ns
            expected_result: hello ns
        - py_func:
            name: get non-serializable value (same context_id)
            key: $(test)_PASS
            file: $(test_path)$(psep)py_func.py
            func_name: get_ns_value
            context_id: ctx_ns_test
            expected_result: hello ns
