about summary refs log tree commit diff stats
path: root/src/plugins/python_api.c
Commit message (Expand)AuthorAgeFilesLines
* Update copyright to include 2019Michael Vetter2019-01-221-1/+1
* Update copyrightJames Booth2018-01-211-1/+1
* Update CopyrightJames Booth2017-01-281-1/+1
* Add chat and room show calls to plugins apiJames Booth2017-01-211-0/+128
* Allow room display properies to be set by pluginsJames Booth2017-01-201-0/+98
* Allow chat prefix char to be set by pluginsJames Booth2017-01-201-0/+98
* Add titlebar encryption text to plugins apiJames Booth2017-01-191-0/+49
* Add prof.encryption_reset to Plugins APIJames Booth2017-01-181-0/+19
* Add get_room_nick to plugins apiJames Booth2016-11-061-0/+22
* Allow filepath autocompletion in pluginsJames Booth2016-10-101-0/+25
* Remove disco features added by plugins on unloadJames Booth2016-08-111-1/+4
* Rename plugins settings functionsJames Booth2016-08-071-24/+24
* Return boolean on prof_settings_string_list_remove_all()James Booth2016-08-011-3/+10
* Remove log debugsJames Booth2016-08-011-7/+0
* Add string lists settings to pluginsJames Booth2016-08-011-0/+125
* Fix memory leaksJames Booth2016-07-251-1/+3
* Use Py_RETURN_NONEJames Booth2016-07-251-56/+56
* Free python_str_or_unicode_to_string resultsJames Booth2016-07-251-4/+23
* Remove debug on plugin win createJames Booth2016-07-241-1/+0
* Tidy headersJames Booth2016-07-241-1/+1
* Reorder headersJames Booth2016-07-241-2/+2
* Python plugins: Free string valuesJames Booth2016-07-241-2/+57
* Merge branch 'master' into python3James Booth2016-07-241-1/+1
|\
| * Update GPL link in headersJames Booth2016-07-241-1/+1
* | Allow str and unicode in python apiJames Booth2016-07-241-117/+212
* | Tidy python3 conditional codeJames Booth2016-07-191-38/+19
* | Add python_init_prof()James Booth2016-07-181-0/+14
* | Fix prof module init for python3James Booth2016-07-181-15/+21
* | Added PYTHON3 defineJames Booth2016-07-141-2/+47
|/
* Pass plugin name to all autocompleter functionsJames Booth2016-07-041-2/+12
* Free plugins commands on quitJames Booth2016-07-041-9/+17
* Add plugin name to win_create api callJames Booth2016-07-031-1/+4
* Pass plugin name to api layerJames Booth2016-06-301-5/+5
* Revert "WIP - Unload plugin commands"James Booth2016-06-301-2/+2
* WIP - Unload plugin commandsJames Booth2016-06-291-2/+2
* Add macro for plugins completer addJames Booth2016-06-231-0/+3
* Add macro for C plugins register_timedJames Booth2016-06-231-3/+6
* Add function to get plugin nameJames Booth2016-06-221-0/+20
* Plugins: Added prof_disco_add_feature()James Booth2016-04-301-0/+16
* Plugins: Added more muc hooksJames Booth2016-04-151-0/+34
* Plugins: Added completer_clearJames Booth2016-04-071-0/+17
* Plugins: Added completer_removeJames Booth2016-04-071-0/+29
* Plugins: Renamed register_ac->completer_addJames Booth2016-04-071-2/+2
* Plugins: Added basic incoming message functionJames Booth2016-03-291-6/+25
* Added integer settings for pluginsJames Booth2016-03-261-0/+38
* Added plugin string settingsJames Booth2016-03-261-0/+42
* Added boolean settings for pluginsJames Booth2016-03-251-5/+51
* Added prof_send_stanza to plugins APIJames Booth2016-03-231-0/+19
* Plugins: Fix python threadingJames Booth2016-03-091-1/+59
* Merge branch 'master' into plugins-pythonJames Booth2016-03-071-1/+1
James Booth <boothj5@gmail.com> 2013-01-28 01:43:43 +0000 committer James Booth <boothj5@gmail.com> 2013-01-28 01:43:43 +0000 Renamed parser.c -> command_parser.c' href='/danisanti/profani-tty/commit/tests/test_history.c?id=1d5046bc9747c981f7e9631987a4cb484a9534d9'>1d5046bc ^
4531aebd ^
1d5046bc ^

4531aebd ^





1d5046bc ^

4531aebd ^
1d5046bc ^


4531aebd ^

b6c5fef4 ^

1730372e ^

1d5046bc ^







1730372e ^

1d5046bc ^
1730372e ^

1d5046bc ^
1730372e ^

1d5046bc ^
1730372e ^

1d5046bc ^
1730372e ^
6bad38c2 ^
1d5046bc ^
1730372e ^




1d5046bc ^







1730372e ^
6bad38c2 ^
1d5046bc ^
1730372e ^

1d5046bc ^
1730372e ^
6bad38c2 ^
1d5046bc ^
6bad38c2 ^

1d5046bc ^
1730372e ^

1d5046bc ^
1730372e ^
6bad38c2 ^
1d5046bc ^
1730372e ^

1d5046bc ^
1730372e ^

1d5046bc ^
1730372e ^

1d5046bc ^
1730372e ^




1d5046bc ^







1730372e ^
6bad38c2 ^
1d5046bc ^
1730372e ^

1d5046bc ^
1730372e ^
6bad38c2 ^
1d5046bc ^
1730372e ^
1d5046bc ^
1730372e ^


8202255d ^

1d5046bc ^

8202255d ^
1d5046bc ^
8202255d ^
6bad38c2 ^
1d5046bc ^
773255b4 ^
8202255d ^
1d5046bc ^
8202255d ^

1d5046bc ^
8202255d ^

c72d7ad6 ^
b6c5fef4 ^
c72d7ad6 ^
1730372e ^

b6c5fef4 ^

f21cb52a ^

4531aebd ^


1730372e ^


8202255d ^
b6c5fef4 ^
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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 "tools/history.h"

void previous_on_empty_returns_null(void)
{
    History history = history_new(10);
    char *item = history_previous(history, "inp");

    assert_is_null(item);
}

void next_on_empty_returns_null(void)
{
    History history = history_new(10);
    char *item = history_next(history, "inp");

    assert_is_null(item);
}

void previous_once_returns_last(void)
{
    History history = history_new(10);
    history_append(history, "Hello");

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

    assert_string_equals("Hello", item);
}

void previous_twice_when_one_returns_first(void)
{
    History history = history_new(10);
    history_append(history, "Hello");

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

    assert_string_equals("Hello", item2);
}

void previous_always_stops_at_first(void)
{
    History history = history_new(10);
    history_append(history, "Hello");

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

    assert_string_equals("Hello", item6);
}

void previous_goes_to_correct_element(void)
{
    History history = history_new(10);
    history_append(history, "Hello");
    history_append(history, "world");
    history_append(history, "whats");
    history_append(history, "going");
    history_append(history, "on");
    history_append(history, "here");

    char *item1 = history_previous(history, NULL);
    char *item2 = history_previous(history, item1);
    char *item3 = history_previous(history, item2);

    assert_string_equals("going", item3);
}

void prev_then_next_returns_empty(void)
{
    History history = history_new(10);
    history_append(history, "Hello");

    char *item1 = history_previous(history, NULL);
    char *item2 = history_next(history, item1);

    assert_string_equals("", item2);
}

void prev_with_val_then_next_returns_val(void)
{
    History history = history_new(10);
    history_append(history, "Hello");

    char *item1 = history_previous(history, "Oioi");
    char *item2 = history_next(history, item1);

    assert_string_equals("Oioi", item2);
}

void prev_with_val_then_next_twice_returns_val(void)
{
    History history = history_new(10);
    history_append(history, "Hello");

    char *item1 = history_previous(history, "Oioi");
    char *item2 = history_next(history, item1);
    char *item3 = history_next(history, item2);

    assert_string_equals("Oioi", item3);
}

void navigate_then_append_new(void)
{
    History history = history_new(10);
    history_append(history, "Hello");
    history_append(history, "again");
    history_append(history, "testing");
    history_append(history, "history");
    history_append(history, "append");

    char *item1 = history_previous(history, "new text");
    assert_string_equals("append", item1);

    char *item2 = history_previous(history, item1);
    assert_string_equals("history", item2);

    char *item3 = history_previous(history, item2);
    assert_string_equals("testing", item3);

    char *item4 = history_next(history, item3);
    assert_string_equals("history", item4);

    char *item5 = history_next(history, item4);
    assert_string_equals("append", item5);

    char *item6 = history_next(history, item5);
    assert_string_equals("new text", item6);
}

void edit_item_mid_history(void)
{
    History history = history_new(10);
    history_append(history, "Hello");
    history_append(history, "again");
    history_append(history, "testing");
    history_append(history, "history");
    history_append(history, "append");

    char *item1 = history_previous(history, "new item");
    assert_string_equals("append", item1);

    char *item2 = history_previous(history, item1);
    assert_string_equals("history", item2);

    char *item3 = history_previous(history, item2);
    assert_string_equals("testing", item3);

    char *item4 = history_previous(history, "EDITED");
    assert_string_equals("again", item4);

    char *item5 = history_previous(history, item4);
    assert_string_equals("Hello", item5);

    char *item6 = history_next(history, item5);
    assert_string_equals("again", item6);

    char *item7 = history_next(history, item6);
    assert_string_equals("EDITED", item7);

    char *item8 = history_next(history, item7);
    assert_string_equals("history", item8);

    char *item9 = history_next(history, item8);
    assert_string_equals("append", item9);

    char *item10 = history_next(history, item9);
    assert_string_equals("new item", item10);
}

void edit_previous_and_append(void)
{
    History history = history_new(10);
    history_append(history, "Hello");
    history_append(history, "again");
    history_append(history, "testing");
    history_append(history, "history");
    history_append(history, "append");

    char *item1 = history_previous(history, "new item");
    assert_string_equals("append", item1);

    char *item2 = history_previous(history, item1);
    assert_string_equals("history", item2);

    char *item3 = history_previous(history, item2);
    assert_string_equals("testing", item3);

    history_append(history, "EDITED");

    char *item4 = history_previous(history, NULL);
    assert_string_equals("EDITED", item4);
}

void start_session_add_new_submit_previous(void)
{
    History history = history_new(10);
    history_append(history, "hello");

    char *item1 = history_previous(history, NULL);
    assert_string_equals("hello", item1);

    char *item2 = history_next(history, item1);
    assert_string_equals("", item2);

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

    history_append(history, item3);
}

void register_history_tests(void)
{
    TEST_MODULE("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);
}