From ed9874a3b914aec434336b116571a15379ac762c Mon Sep 17 00:00:00 2001 From: meatball <69751659+meatball133@users.noreply.github.com> Date: Sat, 10 Aug 2024 13:07:19 +0200 Subject: [PATCH] Add support for optional tests for reverse string (#646) * Add support for optinal tests * Add doc and improvments * Update based on comments --- .../reverse-string/.docs/instructions.append.md | 6 ++++++ .../practice/reverse-string/.meta/test_template.ecr | 8 ++++++-- exercises/practice/reverse-string/.meta/tests.toml | 3 --- .../reverse-string/spec/reverse_string_spec.cr | 12 ++++++++++++ 4 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 exercises/practice/reverse-string/.docs/instructions.append.md diff --git a/exercises/practice/reverse-string/.docs/instructions.append.md b/exercises/practice/reverse-string/.docs/instructions.append.md new file mode 100644 index 00000000..f73d469f --- /dev/null +++ b/exercises/practice/reverse-string/.docs/instructions.append.md @@ -0,0 +1,6 @@ +# Instructions append + +An optional test has been added that tests for possible letters to be any unicode character, not just ASCII alphabetic ones. +These are not accessible from the web editor, but are run by default when executed locally. + +To disable these tests, when calling the test command (`crystal spec`), add the following flag: `--tag "~optional"` diff --git a/exercises/practice/reverse-string/.meta/test_template.ecr b/exercises/practice/reverse-string/.meta/test_template.ecr index b5712b4a..6e9443e0 100644 --- a/exercises/practice/reverse-string/.meta/test_template.ecr +++ b/exercises/practice/reverse-string/.meta/test_template.ecr @@ -3,8 +3,12 @@ require "../src/*" describe "<%-= to_capitalized(@json["exercise"].to_s) %>" do <%- @json["cases"].as_a.each do |cases| %> - <%= status()%> "<%-= cases["description"] %>" do - <%= to_capitalized(@json["exercise"].to_s) %>.<%= cases["property"].to_s.underscore %>("<%= cases["input"]["value"] %>").should eq("<%= cases["expected"] %>") + <%- if cases["scenarios"]? %> + <%= status()%> "<%-= cases["description"] %>", tags: "optional" do + <%- else %> + <%= status()%> "<%-= cases["description"] %>" do + <%- end %> + <%= to_capitalized(@json["exercise"].to_s) %>.<%= cases["property"].to_s.underscore %>("<%= cases["input"]["value"] %>").should eq("<%= cases["expected"] %>") end <% end %> end diff --git a/exercises/practice/reverse-string/.meta/tests.toml b/exercises/practice/reverse-string/.meta/tests.toml index 52fda995..0c313cc5 100644 --- a/exercises/practice/reverse-string/.meta/tests.toml +++ b/exercises/practice/reverse-string/.meta/tests.toml @@ -29,12 +29,9 @@ description = "an even-sized word" [1bed0f8a-13b0-4bd3-9d59-3d0593326fa2] description = "wide characters" -include = false [93d7e1b8-f60f-4f3c-9559-4056e10d2ead] description = "grapheme cluster with pre-combined form" -include = false [1028b2c1-6763-4459-8540-2da47ca512d9] description = "grapheme clusters" -include = false diff --git a/exercises/practice/reverse-string/spec/reverse_string_spec.cr b/exercises/practice/reverse-string/spec/reverse_string_spec.cr index 8433df16..f200b585 100644 --- a/exercises/practice/reverse-string/spec/reverse_string_spec.cr +++ b/exercises/practice/reverse-string/spec/reverse_string_spec.cr @@ -25,4 +25,16 @@ describe "ReverseString" do pending "an even-sized word" do ReverseString.reverse("drawer").should eq("reward") end + + pending "wide characters", tags: "optional" do + ReverseString.reverse("子猫").should eq("猫子") + end + + pending "grapheme cluster with pre-combined form", tags: "optional" do + ReverseString.reverse("Würstchenstand").should eq("dnatsnehctsrüW") + end + + pending "grapheme clusters", tags: "optional" do + ReverseString.reverse("ผู้เขียนโปรแกรม").should eq("มรกแรปโนยขีเผู้") + end end