Skip to content

Commit

Permalink
pangram: sync (exercism#1900)
Browse files Browse the repository at this point in the history
[no important files changed]
  • Loading branch information
senekor authored Apr 11, 2024
1 parent efc7502 commit d389f51
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 20 deletions.
14 changes: 14 additions & 0 deletions exercises/practice/pangram/.meta/test_template.tera
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
use pangram::*;

{% for test in cases %}
#[test]
#[ignore]
fn {{ test.description | snake_case }}() {
let sentence = {{ test.input.sentence | json_encode() }};
{% if test.expected -%}
assert!(is_pangram(sentence));
{% else -%}
assert!(!is_pangram(sentence));
{% endif -%}
}
{% endfor -%}
48 changes: 45 additions & 3 deletions exercises/practice/pangram/.meta/tests.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,45 @@
# This is an auto-generated file. Regular comments will be removed when this
# file is regenerated. Regenerating will not touch any manually added keys,
# so comments can be added in a "comment" key.
# This is an auto-generated file.
#
# Regenerating this file via `configlet sync` will:
# - Recreate every `description` key/value pair
# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications
# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion)
# - Preserve any other key/value pair
#
# As user-added comments (using the # character) will be removed when this file
# is regenerated, comments can be added via a `comment` key.

[64f61791-508e-4f5c-83ab-05de042b0149]
description = "empty sentence"

[74858f80-4a4d-478b-8a5e-c6477e4e4e84]
description = "perfect lower case"

[61288860-35ca-4abe-ba08-f5df76ecbdcd]
description = "only lower case"

[6564267d-8ac5-4d29-baf2-e7d2e304a743]
description = "missing the letter 'x'"

[c79af1be-d715-4cdb-a5f2-b2fa3e7e0de0]
description = "missing the letter 'h'"

[d835ec38-bc8f-48e4-9e36-eb232427b1df]
description = "with underscores"

[8cc1e080-a178-4494-b4b3-06982c9be2a8]
description = "with numbers"

[bed96b1c-ff95-45b8-9731-fdbdcb6ede9a]
description = "missing letters replaced by numbers"

[938bd5d8-ade5-40e2-a2d9-55a338a01030]
description = "mixed case and punctuation"

[2577bf54-83c8-402d-a64b-a2c0f7bb213a]
description = "case insensitive"
include = false

[7138e389-83e4-4c6e-8413-1e40a0076951]
description = "a-m and A-M are 26 different characters but not a pangram"
reimplements = "2577bf54-83c8-402d-a64b-a2c0f7bb213a"
34 changes: 17 additions & 17 deletions exercises/practice/pangram/tests/pangram.rs
Original file line number Diff line number Diff line change
@@ -1,70 +1,70 @@
use pangram::*;

#[test]
fn empty_strings_are_not_pangrams() {
fn empty_sentence() {
let sentence = "";
assert!(!is_pangram(sentence));
}

#[test]
#[ignore]
fn classic_pangram_is_a_pangram() {
let sentence = "the quick brown fox jumps over the lazy dog";
fn perfect_lower_case() {
let sentence = "abcdefghijklmnopqrstuvwxyz";
assert!(is_pangram(sentence));
}

#[test]
#[ignore]
fn pangrams_must_have_all_letters() {
let sentence = "a quick movement of the enemy will jeopardize five gunboats";
assert!(!is_pangram(sentence));
fn only_lower_case() {
let sentence = "the quick brown fox jumps over the lazy dog";
assert!(is_pangram(sentence));
}

#[test]
#[ignore]
fn pangrams_must_have_all_letters_two() {
let sentence = "the quick brown fish jumps over the lazy dog";
fn missing_the_letter_x() {
let sentence = "a quick movement of the enemy will jeopardize five gunboats";
assert!(!is_pangram(sentence));
}

#[test]
#[ignore]
fn pangrams_must_include_z() {
let sentence = "the quick brown fox jumps over the lay dog";
fn missing_the_letter_h() {
let sentence = "five boxing wizards jump quickly at it";
assert!(!is_pangram(sentence));
}

#[test]
#[ignore]
fn underscores_do_not_affect_pangrams() {
fn with_underscores() {
let sentence = "the_quick_brown_fox_jumps_over_the_lazy_dog";
assert!(is_pangram(sentence));
}

#[test]
#[ignore]
fn numbers_do_not_affect_pangrams() {
fn with_numbers() {
let sentence = "the 1 quick brown fox jumps over the 2 lazy dogs";
assert!(is_pangram(sentence));
}

#[test]
#[ignore]
fn numbers_can_not_replace_letters() {
fn missing_letters_replaced_by_numbers() {
let sentence = "7h3 qu1ck brown fox jumps ov3r 7h3 lazy dog";
assert!(!is_pangram(sentence));
}

#[test]
#[ignore]
fn capitals_and_punctuation_can_be_in_pangrams() {
fn mixed_case_and_punctuation() {
let sentence = "\"Five quacking Zephyrs jolt my wax bed.\"";
assert!(is_pangram(sentence));
}

#[test]
#[ignore]
fn non_ascii_characters_can_be_in_pangrams() {
let sentence = "Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich.";
assert!(is_pangram(sentence));
fn a_m_and_a_m_are_26_different_characters_but_not_a_pangram() {
let sentence = "abcdefghijklm ABCDEFGHIJKLM";
assert!(!is_pangram(sentence));
}

0 comments on commit d389f51

Please sign in to comment.