{ "exercise": "reverse-string", "comments": [ "If property based testing tools are available, a good property to test is reversing a string twice: reverse(reverse(string)) == string" ], "cases": [ { "uuid": "c3b7d806-dced-49ee-8543-933fd1719b1c", "description": "an empty string", "property": "reverse", "input": { "value": "" }, "expected": "" }, { "uuid": "01ebf55b-bebb-414e-9dec-06f7bb0bee3c", "description": "a word", "property": "reverse", "input": { "value": "robot" }, "expected": "tobor" }, { "uuid": "0f7c07e4-efd1-4aaa-a07a-90b49ce0b746", "description": "a capitalized word", "property": "reverse", "input": { "value": "Ramen" }, "expected": "nemaR" }, { "uuid": "71854b9c-f200-4469-9f5c-1e8e5eff5614", "description": "a sentence with punctuation", "property": "reverse", "input": { "value": "I'm hungry!" }, "expected": "!yrgnuh m'I" }, { "uuid": "1f8ed2f3-56f3-459b-8f3e-6d8d654a1f6c", "description": "a palindrome", "property": "reverse", "input": { "value": "racecar" }, "expected": "racecar" }, { "uuid": "b9e7dec1-c6df-40bd-9fa3-cd7ded010c4c", "description": "an even-sized word", "property": "reverse", "input": { "value": "drawer" }, "expected": "reward" }, { "uuid": "1bed0f8a-13b0-4bd3-9d59-3d0593326fa2", "description": "wide characters", "scenarios": ["unicode"], "property": "reverse", "input": { "value": "子猫" }, "expected": "猫子" }, { "uuid": "93d7e1b8-f60f-4f3c-9559-4056e10d2ead", "description": "grapheme cluster with pre-combined form", "scenarios": ["unicode"], "property": "reverse", "input": { "value": "Würstchenstand" }, "expected": "dnatsnehctsrüW" }, { "uuid": "1028b2c1-6763-4459-8540-2da47ca512d9", "description": "grapheme clusters", "scenarios": ["unicode"], "property": "reverse", "input": { "value": "ผู้เขียนโปรแกรม" }, "expected": "มรกแรปโนยขีเผู้" } ] }