summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog.adoc1
-rw-r--r--tests/scripts/python/testapi.py109
2 files changed, 110 insertions, 0 deletions
diff --git a/ChangeLog.adoc b/ChangeLog.adoc
index 7f673e0da..b07401b1f 100644
--- a/ChangeLog.adoc
+++ b/ChangeLog.adoc
@@ -41,6 +41,7 @@ Bug fixes::
Tests::
+ * scripts: add tests on hdata functions
* scripts: fix run of Guile test script
[[v3.6]]
diff --git a/tests/scripts/python/testapi.py b/tests/scripts/python/testapi.py
index 62dd922f6..e948d8c6f 100644
--- a/tests/scripts/python/testapi.py
+++ b/tests/scripts/python/testapi.py
@@ -296,6 +296,114 @@ def test_infolist():
weechat.unhook(hook_infolist)
+def test_hdata():
+ """Test hdata functions."""
+ buffer = weechat.buffer_search_main()
+ # get hdata
+ hdata_buffer = weechat.hdata_get('buffer')
+ check(hdata_buffer != '')
+ hdata_lines = weechat.hdata_get('lines')
+ check(hdata_lines != '')
+ hdata_line = weechat.hdata_get('line')
+ check(hdata_line != '')
+ hdata_line_data = weechat.hdata_get('line_data')
+ check(hdata_line_data != '')
+ hdata_key = weechat.hdata_get('key')
+ check(hdata_key != '')
+ hdata_hotlist = weechat.hdata_get('hotlist')
+ check(hdata_hotlist != '')
+ hdata_irc_server = weechat.hdata_get('irc_server')
+ check(hdata_irc_server != '')
+ # create a test buffer with 3 messages
+ buffer2 = weechat.buffer_new('test', 'buffer_input_cb', '', 'buffer_close_cb', '')
+ weechat.prnt_date_tags(buffer2, 5680744830, 'tag1,tag2', 'prefix1\t## msg1')
+ weechat.prnt_date_tags(buffer2, 5680744831, 'tag3,tag4', 'prefix2\t## msg2')
+ weechat.prnt_date_tags(buffer2, 5680744832, 'tag5,tag6', 'prefix3\t## msg3')
+ own_lines = weechat.hdata_pointer(hdata_buffer, buffer2, 'own_lines')
+ line1 = weechat.hdata_pointer(hdata_lines, own_lines, 'first_line')
+ line1_data = weechat.hdata_pointer(hdata_line, line1, 'data')
+ line2 = weechat.hdata_pointer(hdata_line, line1, 'next_line')
+ line3 = weechat.hdata_pointer(hdata_line, line2, 'next_line')
+ # hdata_get_var_offset
+ check(weechat.hdata_get_var_offset(hdata_buffer, 'plugin') == 0)
+ check(weechat.hdata_get_var_offset(hdata_buffer, 'number') > 0)
+ # hdata_get_var_type_string
+ check(weechat.hdata_get_var_type_string(hdata_buffer, 'plugin') == 'pointer')
+ check(weechat.hdata_get_var_type_string(hdata_buffer, 'number') == 'integer')
+ check(weechat.hdata_get_var_type_string(hdata_buffer, 'name') == 'string')
+ check(weechat.hdata_get_var_type_string(hdata_buffer, 'local_variables') == 'hashtable')
+ check(weechat.hdata_get_var_type_string(hdata_line_data, 'displayed') == 'char')
+ check(weechat.hdata_get_var_type_string(hdata_line_data, 'prefix') == 'shared_string')
+ check(weechat.hdata_get_var_type_string(hdata_line_data, 'date') == 'time')
+ check(weechat.hdata_get_var_type_string(hdata_hotlist, 'creation_time.tv_usec') == 'long')
+ check(weechat.hdata_get_var_type_string(hdata_irc_server, 'gnutls_sess') == 'other')
+ # hdata_get_var_array_size
+ check(weechat.hdata_get_var_array_size(hdata_buffer, buffer2, 'name') == -1)
+ check(weechat.hdata_get_var_array_size(hdata_buffer, buffer2, 'highlight_tags_array') >= 0)
+ # hdata_get_var_array_size_string
+ check(weechat.hdata_get_var_array_size_string(hdata_buffer, buffer2, 'name') == '')
+ check(weechat.hdata_get_var_array_size_string(hdata_buffer, buffer2, 'highlight_tags_array') == 'highlight_tags_count')
+ # hdata_get_var_hdata
+ check(weechat.hdata_get_var_hdata(hdata_buffer, 'plugin') == 'plugin')
+ check(weechat.hdata_get_var_hdata(hdata_buffer, 'own_lines') == 'lines')
+ check(weechat.hdata_get_var_hdata(hdata_buffer, 'name') == '')
+ # hdata_get_list
+ check(weechat.hdata_get_list(hdata_buffer, 'gui_buffers') == buffer)
+ # hdata_check_pointer
+ check(weechat.hdata_check_pointer(hdata_buffer, buffer, buffer) == 1)
+ check(weechat.hdata_check_pointer(hdata_buffer, buffer, buffer2) == 1)
+ check(weechat.hdata_check_pointer(hdata_buffer, buffer, own_lines) == 0)
+ # hdata_move
+ check(weechat.hdata_move(hdata_line, line1, 1) == line2)
+ check(weechat.hdata_move(hdata_line, line1, 2) == line3)
+ check(weechat.hdata_move(hdata_line, line3, -1) == line2)
+ check(weechat.hdata_move(hdata_line, line3, -2) == line1)
+ check(weechat.hdata_move(hdata_line, line1, -1) == '')
+ # hdata_search
+ check(weechat.hdata_search(hdata_buffer, buffer, '${name} == test', {}, {}, {}, 1) == buffer2)
+ check(weechat.hdata_search(hdata_buffer, buffer, '${name} == xxx', {}, {}, {}, 1) == '')
+ # hdata_char
+ check(weechat.hdata_char(hdata_line_data, line1_data, 'displayed') == 1)
+ # hdata_integer
+ check(weechat.hdata_char(hdata_buffer, buffer2, 'number') == 2)
+ # hdata_long
+ weechat.buffer_set(buffer, 'hotlist', weechat.WEECHAT_HOTLIST_MESSAGE)
+ gui_hotlist = weechat.hdata_get_list(hdata_hotlist, 'gui_hotlist')
+ check(weechat.hdata_long(hdata_hotlist, gui_hotlist, 'creation_time.tv_usec') >= 0)
+ # hdata_string
+ check(weechat.hdata_string(hdata_buffer, buffer2, 'name') == 'test')
+ # hdata_pointer
+ check(weechat.hdata_pointer(hdata_buffer, buffer2, 'own_lines') == own_lines)
+ # hdata_time
+ check(weechat.hdata_time(hdata_line_data, line1_data, 'date') > 1659430030)
+ # hdata_hashtable
+ local_vars = weechat.hdata_hashtable(hdata_buffer, buffer2, 'local_variables')
+ value = local_vars['name']
+ check(value == 'test')
+ # hdata_compare
+ check(weechat.hdata_compare(hdata_buffer, buffer, buffer2, 'name', 0) > 0)
+ check(weechat.hdata_compare(hdata_buffer, buffer2, buffer, 'name', 0) < 0)
+ check(weechat.hdata_compare(hdata_buffer, buffer, buffer, 'name', 0) == 0)
+ # hdata_update
+ check(weechat.hdata_time(hdata_line_data, line1_data, 'date') == 5680744830)
+ check(weechat.hdata_string(hdata_line_data, line1_data, 'prefix') == 'prefix1')
+ check(weechat.hdata_string(hdata_line_data, line1_data, 'message') == '## msg1')
+ update = {
+ 'date': '5680744835',
+ 'prefix': 'new_prefix1',
+ 'message': 'new_message1'
+ }
+ check(weechat.hdata_update(hdata_line_data, line1_data, update) == 3)
+ check(weechat.hdata_time(hdata_line_data, line1_data, 'date') == 5680744835)
+ check(weechat.hdata_string(hdata_line_data, line1_data, 'prefix') == 'new_prefix1')
+ check(weechat.hdata_string(hdata_line_data, line1_data, 'message') == 'new_message1')
+ # hdata_get_string
+ check(weechat.hdata_get_string(hdata_line, 'var_prev') == 'prev_line')
+ check(weechat.hdata_get_string(hdata_line, 'var_next') == 'next_line')
+ # destroy test buffer
+ weechat.buffer_close(buffer2)
+
+
def cmd_test_cb(data, buf, args):
"""Run all the tests."""
weechat.prnt('', '>>>')
@@ -310,6 +418,7 @@ def cmd_test_cb(data, buf, args):
test_hooks()
test_command()
test_infolist()
+ test_hdata()
weechat.prnt('', ' > TESTS END')
return weechat.WEECHAT_RC_OK