about summary refs log tree commit diff stats
Commit message (Expand)AuthorAgeFilesLines
* Create sha-1 of own capabilities onceJames Booth2014-09-233-2/+18
* Updated todoJames Booth2014-09-221-1/+0
* Cache capabilities to fileJames Booth2014-09-224-26/+165
* Show message when no capabilities availableJames Booth2014-09-212-8/+9
* Fixed /caps command for chat room participantsJames Booth2014-09-212-6/+7
* Sort form fields for sha-1 caps hashJames Booth2014-09-214-54/+111
* Merge branch 'master' into capsJames Booth2014-09-211-2/+0
|\
| * Removed TODOJames Booth2014-09-211-2/+0
* | Log errors on caps responsesJames Booth2014-09-212-6/+20
* | Destroy Jid after useJames Booth2014-09-211-0/+1
* | Handle capabilities for room participantsJames Booth2014-09-211-31/+46
* | Fixed muc presence check, remove logging from presence handlerJames Booth2014-09-212-22/+11
* | Removed _get_caps_key functionJames Booth2014-09-214-71/+12
* | Fixed testsJames Booth2014-09-212-51/+51
* | Added jid->hash lookup for capabilitiesJames Booth2014-09-2011-150/+169
* | Do not send caps request on self presenceJames Booth2014-09-191-1/+1
* | wip - refactoring capabilitiesJames Booth2014-09-197-219/+309
* | Tidied available presence handlerJames Booth2014-09-181-34/+55
|/
* Fixed messages for new roomsJames Booth2014-09-181-1/+9
* Added autocompletion for jid-multi form fieldsJames Booth2014-09-173-9/+29
* Added autocompletion for form text-multi valuesJames Booth2014-09-173-10/+39
* Added autocompletion for form list-multi valuesJames Booth2014-09-173-3/+13
* Added autocompletion for form list-single valuesJames Booth2014-09-173-0/+56
* Added autocompletion for form boolean valuesJames Booth2014-09-171-16/+51
* Handle result of room configuration submitJames Booth2014-09-175-11/+96
* Show errors in room when can't retrieve room configJames Booth2014-09-173-13/+27
* Added prefix to travis libstrophe configureJames Booth2014-09-171-1/+1
* Revert "Added -lstrophe to test dependencies"James Booth2014-09-171-1/+1
* Added -lstrophe to test dependenciesJames Booth2014-09-171-1/+1
* Added field updated message, show form mofified indicator for /winsJames Booth2014-09-172-0/+13
* Merge branch 'master' into roomconfigJames Booth2014-09-171-1/+2
|\
| * Fixed window switching when pagedJames Booth2014-09-171-1/+2
* | Show indicator when form has unsaved changesJames Booth2014-09-163-10/+15
* | Added form field helpJames Booth2014-09-163-10/+80
* | Implemented /form helpJames Booth2014-09-164-13/+63
* | Updated room config todoJames Booth2014-09-151-1/+0
* | Show form fields after updatingJames Booth2014-09-155-10/+39
* | Added /form showJames Booth2014-09-155-16/+32
* | Dont allow unsaved form windows to be closedJames Booth2014-09-156-5/+39
* | Split /room and /form commandsJames Booth2014-09-153-286/+287
* | Updated room config todoJames Booth2014-09-151-0/+1
* | Updated room config todoJames Booth2014-09-151-1/+0
* | Added tests for form_remove_text_multi_valueJames Booth2014-09-153-6/+171
* | Added tests for form_remove_valueJames Booth2014-09-153-0/+146
* | Added tests for form_add_valueJames Booth2014-09-153-0/+124
* | Added form testsJames Booth2014-09-146-5/+389
* | Allow removing data from text-multi form fieldsJames Booth2014-09-144-9/+114
* | Added setting of unique form list valuesJames Booth2014-09-143-11/+41
* | Tidied form UI codeJames Booth2014-09-141-10/+10
* | Added /room remove command, reformetted form outputJames Booth2014-09-145-10/+43
href='#n28'>28 29 30 31 32 33 34 35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233



                         
                                         

                                         
                                                    
 
                         

 
                                     

                                         
                                                
 
                         






                                         
                                                    








                                                

                                                     
 


































                                                     
                                       






                                                    























                                                      

 



























































































                                                          








                                                    
                                    






                                                          


                                      

                                         

                                                

                                           


                                                    


                                   
                                                
 
#include <stdio.h>
#include <head-unit.h>
#include "prof_history.h"

void previous_on_empty_returns_null(void)
{
    PHistory history = p_history_new(10);
    char *item = p_history_previous(history, "inp");

    assert_is_null(item);
}

void next_on_empty_returns_null(void)
{
    PHistory history = p_history_new(10);
    char *item = p_history_next(history, "inp");

    assert_is_null(item);
}

void previous_once_returns_last(void)
{
    PHistory history = p_history_new(10);
    p_history_append(history, "Hello");

    char *item = p_history_previous(history, "inp");

    assert_string_equals("Hello", item);
}

void previous_twice_when_one_returns_first(void)
{
    PHistory history = p_history_new(10);
    p_history_append(history, "Hello");

    char *item1 = p_history_previous(history, NULL);
    char *item2 = p_history_previous(history, item1);

    assert_string_equals("Hello", item2);
}

void previous_always_stops_at_first(void)
{
    PHistory history = p_history_new(10);
    p_history_append(history, "Hello");

    char *item1 = p_history_previous(history, NULL);
    char *item2 = p_history_previous(history, item1);
    char *item3 = p_history_previous(history, item2);
    char *item4 = p_history_previous(history, item3);
    char *item5 = p_history_previous(history, item4);
    char *item6 = p_history_previous(history, item5);

    assert_string_equals("Hello", item6);
}

void previous_goes_to_correct_element(void)
{
    PHistory history = p_history_new(10);
    p_history_append(history, "Hello");
    p_history_append(history, "world");
    p_history_append(history, "whats");
    p_history_append(history, "going");
    p_history_append(history, "on");
    p_history_append(history, "here");

    char *item1 = p_history_previous(history, NULL);
    char *item2 = p_history_previous(history, item1);
    char *item3 = p_history_previous(history, item2);
    
    assert_string_equals("going", item3); 
}

void prev_then_next_returns_empty(void)
{
    PHistory history = p_history_new(10);
    p_history_append(history, "Hello");

    char *item1 = p_history_previous(history, NULL);
    char *item2 = p_history_next(history, item1);

    assert_string_equals("", item2);
}

void prev_with_val_then_next_returns_val(void)
{
    PHistory history = p_history_new(10);
    p_history_append(history, "Hello");

    char *item1 = p_history_previous(history, "Oioi");
    char *item2 = p_history_next(history, item1);

    assert_string_equals("Oioi", item2);
}

void prev_with_val_then_next_twice_returns_val(void)
{
    PHistory history = p_history_new(10);
    p_history_append(history, "Hello");

    char *item1 = p_history_previous(history, "Oioi");
    char *item2 = p_history_next(history, item1);
    char *item3 = p_history_next(history, item2);

    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 start_session_add_new_submit_previous(void)
{
    PHistory history = p_history_new(10);
    p_history_append(history, "hello");

    char *item1 = p_history_previous(history, NULL);
    assert_string_equals("hello", item1);
    
    char *item2 = p_history_next(history, item1);
    assert_string_equals("", item2);

    char *item3 = p_history_previous(history, "new text");
    assert_string_equals("hello", item3);

    p_history_append(history, item3);
}

void register_prof_history_tests(void)
{
    TEST_MODULE("prof_history tests");
    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);
    TEST(previous_goes_to_correct_element);
    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);
    TEST(start_session_add_new_submit_previous);
}