[
    {
        "cases": [
            {
                "expression": "bar[0:10]",
                "result": null
            },
            {
                "expression": "foo[0:10:1]",
                "is_deeply": 1,
                "result": [
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9
                ]
            },
            {
                "expression": "foo[0:10]",
                "is_deeply": 1,
                "result": [
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9
                ]
            },
            {
                "expression": "foo[0:10:]",
                "is_deeply": 1,
                "result": [
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9
                ]
            },
            {
                "expression": "foo[0::1]",
                "is_deeply": 1,
                "result": [
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9
                ]
            },
            {
                "expression": "foo[0::]",
                "is_deeply": 1,
                "result": [
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9
                ]
            },
            {
                "expression": "foo[0:]",
                "is_deeply": 1,
                "result": [
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9
                ]
            },
            {
                "expression": "foo[:10:1]",
                "is_deeply": 1,
                "result": [
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9
                ]
            },
            {
                "expression": "foo[::1]",
                "is_deeply": 1,
                "result": [
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9
                ]
            },
            {
                "expression": "foo[:10:]",
                "is_deeply": 1,
                "result": [
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9
                ]
            },
            {
                "expression": "foo[::]",
                "is_deeply": 1,
                "result": [
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9
                ]
            },
            {
                "expression": "foo[:]",
                "is_deeply": 1,
                "result": [
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9
                ]
            },
            {
                "expression": "foo[1:9]",
                "is_deeply": 1,
                "result": [
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8
                ]
            },
            {
                "expression": "foo[0:10:2]",
                "is_deeply": 1,
                "result": [
                    0,
                    2,
                    4,
                    6,
                    8
                ]
            },
            {
                "expression": "foo[5:]",
                "is_deeply": 1,
                "result": [
                    5,
                    6,
                    7,
                    8,
                    9
                ]
            },
            {
                "expression": "foo[5::2]",
                "is_deeply": 1,
                "result": [
                    5,
                    7,
                    9
                ]
            },
            {
                "expression": "foo[::2]",
                "is_deeply": 1,
                "result": [
                    0,
                    2,
                    4,
                    6,
                    8
                ]
            },
            {
                "expression": "foo[::-1]",
                "is_deeply": 1,
                "result": [
                    9,
                    8,
                    7,
                    6,
                    5,
                    4,
                    3,
                    2,
                    1,
                    0
                ]
            },
            {
                "expression": "foo[1::2]",
                "is_deeply": 1,
                "result": [
                    1,
                    3,
                    5,
                    7,
                    9
                ]
            },
            {
                "expression": "foo[10:0:-1]",
                "is_deeply": 1,
                "result": [
                    9,
                    8,
                    7,
                    6,
                    5,
                    4,
                    3,
                    2,
                    1
                ]
            },
            {
                "expression": "foo[10:5:-1]",
                "is_deeply": 1,
                "result": [
                    9,
                    8,
                    7,
                    6
                ]
            },
            {
                "expression": "foo[8:2:-2]",
                "is_deeply": 1,
                "result": [
                    8,
                    6,
                    4
                ]
            },
            {
                "expression": "foo[0:20]",
                "is_deeply": 1,
                "result": [
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9
                ]
            },
            {
                "expression": "foo[10:-20:-1]",
                "is_deeply": 1,
                "result": [
                    9,
                    8,
                    7,
                    6,
                    5,
                    4,
                    3,
                    2,
                    1,
                    0
                ]
            },
            {
                "expression": "foo[10:-20]",
                "is_deeply": 1,
                "result": []
            },
            {
                "expression": "foo[-4:-1]",
                "is_deeply": 1,
                "result": [
                    6,
                    7,
                    8
                ]
            },
            {
                "expression": "foo[:-5:-1]",
                "is_deeply": 1,
                "result": [
                    9,
                    8,
                    7,
                    6
                ]
            },
            {
                "error": "invalid-value",
                "expression": "foo[8:2:0]"
            },
            {
                "error": "syntax",
                "expression": "foo[8:2:0:1]"
            },
            {
                "error": "syntax",
                "expression": "foo[8:2&]"
            },
            {
                "error": "syntax",
                "expression": "foo[2:a:3]"
            }
        ],
        "given": {
            "bar": {
                "baz": 1
            },
            "foo": [
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9
            ]
        }
    },
    {
        "cases": [
            {
                "expression": "foo[:2].a",
                "is_deeply": 1,
                "result": [
                    1,
                    2
                ]
            },
            {
                "expression": "foo[:2].b",
                "is_deeply": 1,
                "result": []
            },
            {
                "expression": "foo[:2].a.b",
                "is_deeply": 1,
                "result": []
            },
            {
                "expression": "bar[::-1].a.b",
                "is_deeply": 1,
                "result": [
                    3,
                    2,
                    1
                ]
            },
            {
                "expression": "bar[:2].a.b",
                "is_deeply": 1,
                "result": [
                    1,
                    2
                ]
            },
            {
                "expression": "baz[:2].a",
                "result": null
            }
        ],
        "given": {
            "bar": [
                {
                    "a": {
                        "b": 1
                    }
                },
                {
                    "a": {
                        "b": 2
                    }
                },
                {
                    "a": {
                        "b": 3
                    }
                }
            ],
            "baz": 50,
            "foo": [
                {
                    "a": 1
                },
                {
                    "a": 2
                },
                {
                    "a": 3
                }
            ]
        }
    },
    {
        "cases": [
            {
                "expression": "[:]",
                "is_deeply": 1,
                "result": [
                    {
                        "a": 1
                    },
                    {
                        "a": 2
                    },
                    {
                        "a": 3
                    }
                ]
            },
            {
                "expression": "[:2].a",
                "is_deeply": 1,
                "result": [
                    1,
                    2
                ]
            },
            {
                "expression": "[::-1].a",
                "is_deeply": 1,
                "result": [
                    3,
                    2,
                    1
                ]
            },
            {
                "expression": "[:2].b",
                "is_deeply": 1,
                "result": []
            }
        ],
        "given": [
            {
                "a": 1
            },
            {
                "a": 2
            },
            {
                "a": 3
            }
        ]
    }
]