about summary refs log tree commit diff stats
path: root/test_prof_history.c
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2012-05-01 00:24:31 +0100
committerJames Booth <boothj5@gmail.com>2012-05-01 00:24:31 +0100
commit1730372e00a7469a05c7535c68dbfab83f8af0b4 (patch)
tree9278455cd79141634465863bbcfd0d0595b232ad /test_prof_history.c
parent4531aebd291186e9dd49fb2ec1f1b9b96a4ed23f (diff)
downloadprofani-tty-1730372e00a7469a05c7535c68dbfab83f8af0b4.tar.gz
Bash style history
Diffstat (limited to 'test_prof_history.c')
-rw-r--r--test_prof_history.c107
1 files changed, 101 insertions, 6 deletions
diff --git a/test_prof_history.c b/test_prof_history.c
index 6b42a160..69028609 100644
--- a/test_prof_history.c
+++ b/test_prof_history.c
@@ -2,20 +2,20 @@
 #include <head-unit.h>
 #include "prof_history.h"
 
-void previous_on_empty_returns_current(void)
+void previous_on_empty_returns_null(void)
 {
     PHistory history = p_history_new(10);
     char *item = p_history_previous(history, "inp");
 
-    assert_string_equals("inp", item);
+    assert_is_null(item);
 }
 
-void next_on_empty_returns_current(void)
+void next_on_empty_returns_null(void)
 {
     PHistory history = p_history_new(10);
     char *item = p_history_next(history, "inp");
 
-    assert_string_equals("inp", item);
+    assert_is_null(item);
 }
 
 void previous_once_returns_last(void)
@@ -105,11 +105,103 @@ void prev_with_val_then_next_twice_returns_val(void)
     assert_string_equals("Oioi", item3);
 }
 
+void navigate_then_append_new(void)
+{
+    PHistory history = p_history_new(10);
+    p_history_append(history, "Hello");
+    p_history_append(history, "again");
+    p_history_append(history, "testing");
+    p_history_append(history, "history");
+    p_history_append(history, "append");
+
+    char *item1 = p_history_previous(history, "new text");
+    assert_string_equals("append", item1);
+
+    char *item2 = p_history_previous(history, item1);
+    assert_string_equals("history", item2);
+
+    char *item3 = p_history_previous(history, item2);
+    assert_string_equals("testing", item3);
+
+    char *item4 = p_history_next(history, item3);
+    assert_string_equals("history", item4);
+
+    char *item5 = p_history_next(history, item4);
+    assert_string_equals("append", item5);
+    
+    char *item6 = p_history_next(history, item5);
+    assert_string_equals("new text", item6);
+}
+
+void edit_item_mid_history(void)
+{
+    PHistory history = p_history_new(10);
+    p_history_append(history, "Hello");
+    p_history_append(history, "again");
+    p_history_append(history, "testing");
+    p_history_append(history, "history");
+    p_history_append(history, "append");
+
+    char *item1 = p_history_previous(history, "new item");
+    assert_string_equals("append", item1);
+    
+    char *item2 = p_history_previous(history, item1);
+    assert_string_equals("history", item2);
+
+    char *item3 = p_history_previous(history, item2);
+    assert_string_equals("testing", item3);
+    
+    char *item4 = p_history_previous(history, "EDITED");
+    assert_string_equals("again", item4);   
+    
+    char *item5 = p_history_previous(history, item4);
+    assert_string_equals("Hello", item5);
+
+    char *item6 = p_history_next(history, item5);
+    assert_string_equals("again", item6);
+    
+    char *item7 = p_history_next(history, item6);
+    assert_string_equals("EDITED", item7);
+
+    char *item8 = p_history_next(history, item7);
+    assert_string_equals("history", item8);
+
+    char *item9 = p_history_next(history, item8);
+    assert_string_equals("append", item9);
+
+    char *item10 = p_history_next(history, item9);
+    assert_string_equals("new item", item10);
+}
+
+void edit_previous_and_append(void)
+{
+    PHistory history = p_history_new(10);
+    p_history_append(history, "Hello");
+    p_history_append(history, "again");
+    p_history_append(history, "testing");
+    p_history_append(history, "history");
+    p_history_append(history, "append");
+
+    char *item1 = p_history_previous(history, "new item");
+    assert_string_equals("append", item1);
+    
+    char *item2 = p_history_previous(history, item1);
+    assert_string_equals("history", item2);
+
+    char *item3 = p_history_previous(history, item2);
+    assert_string_equals("testing", item3);
+    
+    p_history_append(history, "EDITED");
+
+    char *item4 = p_history_previous(history, NULL);
+    assert_string_equals("EDITED", item4);
+}
+
 void register_prof_history_tests(void)
 {
     TEST_MODULE("prof_history tests");
-    TEST(previous_on_empty_returns_current);
-    TEST(next_on_empty_returns_current);
+    TEST(previous_on_empty_returns_null);
+    TEST(next_on_empty_returns_null);
     TEST(previous_once_returns_last);
     TEST(previous_twice_when_one_returns_first);
     TEST(previous_always_stops_at_first);
@@ -117,4 +209,7 @@ void register_prof_history_tests(void)
     TEST(prev_then_next_returns_empty);
     TEST(prev_with_val_then_next_returns_val);
     TEST(prev_with_val_then_next_twice_returns_val);
+    TEST(navigate_then_append_new);
+    TEST(edit_item_mid_history);
+    TEST(edit_previous_and_append);
 }