@@ -275,6 +275,60 @@ def test_unmatched_endif
275275 assert_equal "INPUTRC:1: unmatched endif" , e . message
276276 end
277277
278+ def test_if_with_mode
279+ @config . read_lines ( <<~LINES . lines )
280+ $if mode=emacs
281+ "\C -e": history-search-backward # comment
282+ $else
283+ "\C -f": history-search-forward
284+ $endif
285+ LINES
286+
287+ assert_equal ( { } , @config . instance_variable_get ( :@additional_key_bindings ) [ :vi_insert ] )
288+ assert_equal ( { } , @config . instance_variable_get ( :@additional_key_bindings ) [ :vi_command ] )
289+ assert_equal ( { [ 5 ] => :history_search_backward } , @config . instance_variable_get ( :@additional_key_bindings ) [ :emacs ] )
290+ end
291+
292+ def test_else
293+ @config . read_lines ( <<~LINES . lines )
294+ $if mode=vi
295+ "\C -e": history-search-backward # comment
296+ $else
297+ "\C -f": history-search-forward
298+ $endif
299+ LINES
300+
301+ assert_equal ( { } , @config . instance_variable_get ( :@additional_key_bindings ) [ :vi_insert ] )
302+ assert_equal ( { } , @config . instance_variable_get ( :@additional_key_bindings ) [ :vi_command ] )
303+ assert_equal ( { [ 6 ] => :history_search_forward } , @config . instance_variable_get ( :@additional_key_bindings ) [ :emacs ] )
304+ end
305+
306+ def test_if_with_invalid_mode
307+ @config . read_lines ( <<~LINES . lines )
308+ $if mode=vim
309+ "\C -e": history-search-backward
310+ $else
311+ "\C -f": history-search-forward # comment
312+ $endif
313+ LINES
314+
315+ assert_equal ( { } , @config . instance_variable_get ( :@additional_key_bindings ) [ :vi_insert ] )
316+ assert_equal ( { } , @config . instance_variable_get ( :@additional_key_bindings ) [ :vi_command ] )
317+ assert_equal ( { [ 6 ] => :history_search_forward } , @config . instance_variable_get ( :@additional_key_bindings ) [ :emacs ] )
318+ end
319+
320+ def test_if_without_else_condition
321+ @config . read_lines ( <<~LINES . lines )
322+ $if mode=emacs
323+ "\C -e": history-search-backward
324+ $endif
325+ LINES
326+
327+ assert_equal ( { [ 5 ] => :history_search_backward } , @config . instance_variable_get ( :@additional_key_bindings ) [ :emacs ] )
328+ assert_equal ( { } , @config . instance_variable_get ( :@additional_key_bindings ) [ :vi_insert ] )
329+ assert_equal ( { } , @config . instance_variable_get ( :@additional_key_bindings ) [ :vi_command ] )
330+ end
331+
278332 def test_default_key_bindings
279333 @config . add_default_key_binding ( 'abcd' . bytes , 'EFGH' . bytes )
280334 @config . read_lines ( <<~'LINES' . lines )
0 commit comments