summary refs log tree commit diff stats
path: root/c/isogram/test/test_isogram.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/isogram/test/test_isogram.c')
-rw-r--r--c/isogram/test/test_isogram.c104
1 files changed, 104 insertions, 0 deletions
diff --git a/c/isogram/test/test_isogram.c b/c/isogram/test/test_isogram.c
new file mode 100644
index 0000000..5671338
--- /dev/null
+++ b/c/isogram/test/test_isogram.c
@@ -0,0 +1,104 @@
+#include "vendor/unity.h"
+#include "../src/isogram.h"
+#include <stdlib.h>
+
+void setUp(void)
+{
+}
+
+void tearDown(void)
+{
+}
+
+static void test_empty_string(void)
+{
+   TEST_ASSERT_TRUE(is_isogram(""));
+}
+
+static void test_null(void)
+{
+   TEST_ASSERT_FALSE(is_isogram(NULL));
+}
+
+static void test_isogram_with_only_lower_case_characters(void)
+{
+   TEST_ASSERT_TRUE(is_isogram("isogram"));
+}
+
+static void test_word_with_one_duplicated_character(void)
+{
+   TEST_ASSERT_FALSE(is_isogram("eleven"));
+}
+
+static void test_word_with_one_duplicated_character_from_end_of_alphabet(void)
+{
+   TEST_ASSERT_FALSE(is_isogram("zzyzx"));
+}
+
+static void test_longest_reported_english_isogram(void)
+{
+   TEST_ASSERT_TRUE(is_isogram("subdermatoglyphic"));
+}
+
+static void test_word_with_duplicated_letter_in_mixed_case(void)
+{
+   TEST_ASSERT_FALSE(is_isogram("Alphabet"));
+}
+
+static void test_word_with_duplicated_letter_in_mixed_case_lowercase_first(void)
+{
+   TEST_ASSERT_FALSE(is_isogram("alphAbet"));
+}
+
+static void test_hypothetical_isogrammic_word_with_hyphen(void)
+{
+   TEST_ASSERT_TRUE(is_isogram("thumbscrew-japingly"));
+}
+
+static void
+test_hypothetical_word_with_duplicated_character_following_hyphen(void)
+{
+   TEST_ASSERT_FALSE(is_isogram("thumbscrew-jappingly"));
+}
+
+static void test_isogram_with_duplicated_hyphen(void)
+{
+   TEST_ASSERT_TRUE(is_isogram("six-year-old"));
+}
+
+static void test_made_up_name_that_is_an_isogram(void)
+{
+   TEST_ASSERT_TRUE(is_isogram("Emily Jung Schwartzkopf"));
+}
+
+static void test_duplicated_character_in_the_middle(void)
+{
+   TEST_ASSERT_FALSE(is_isogram("accentor"));
+}
+
+static void test_same_first_and_last_characters(void)
+{
+   TEST_ASSERT_FALSE(is_isogram("angola"));
+}
+
+int main(void)
+{
+   UnityBegin("test/test_isogram.c");
+
+   RUN_TEST(test_empty_string);
+   RUN_TEST(test_null);
+   RUN_TEST(test_isogram_with_only_lower_case_characters);
+   RUN_TEST(test_word_with_one_duplicated_character);
+   RUN_TEST(test_word_with_one_duplicated_character_from_end_of_alphabet);
+   RUN_TEST(test_longest_reported_english_isogram);
+   RUN_TEST(test_word_with_duplicated_letter_in_mixed_case);
+   RUN_TEST(test_word_with_duplicated_letter_in_mixed_case_lowercase_first);
+   RUN_TEST(test_hypothetical_isogrammic_word_with_hyphen);
+   RUN_TEST(test_hypothetical_word_with_duplicated_character_following_hyphen);
+   RUN_TEST(test_isogram_with_duplicated_hyphen);
+   RUN_TEST(test_made_up_name_that_is_an_isogram);
+   RUN_TEST(test_duplicated_character_in_the_middle);
+   RUN_TEST(test_same_first_and_last_characters);
+
+   return UnityEnd();
+}