@@ -555,6 +555,46 @@ def test_history_navigation_with_up_arrow(self):
555
555
self .assertEqual (output , "1+1" )
556
556
self .assertEqual (clean_screen (reader .screen ), "1+1" )
557
557
558
+ def test_history_navigation_with_up_arrow_and_partial_text (self ):
559
+ events = itertools .chain (
560
+ code_to_events ("spam = 1\n ham = 2\n eggs = 3\n sp" ),
561
+ [
562
+ Event (evt = "key" , data = "up" , raw = bytearray (b"\x1b OA" )),
563
+ Event (evt = "key" , data = "\n " , raw = bytearray (b"\n " )),
564
+ ],
565
+ )
566
+
567
+ reader = self .prepare_reader (events )
568
+
569
+ output = multiline_input (reader )
570
+ self .assertEqual (output , "spam = 1" )
571
+
572
+ def test_history_navigation_with_up_arrow_and_partial_text_with_similar_entries (self ):
573
+ events = itertools .chain (
574
+ code_to_events ("a=111\n a=11\n a=1\n a=" ),
575
+ [
576
+ Event (evt = "key" , data = "up" , raw = bytearray (b"\x1b OA" )),
577
+ Event (evt = "key" , data = "up" , raw = bytearray (b"\x1b OA" )),
578
+ Event (evt = "key" , data = "up" , raw = bytearray (b"\x1b OA" )),
579
+ Event (evt = "key" , data = "\n " , raw = bytearray (b"\n " )),
580
+ ],
581
+ )
582
+
583
+ reader = self .prepare_reader (events )
584
+ print ()
585
+ output = multiline_input (reader )
586
+ self .assertEqual (output , "a=111" )
587
+ self .assertEqual (clean_screen (reader .screen ), "a=111" )
588
+ output = multiline_input (reader )
589
+ self .assertEqual (output , "a=11" )
590
+ self .assertEqual (clean_screen (reader .screen ), "a=11" )
591
+ output = multiline_input (reader )
592
+ self .assertEqual (output , "a=1" )
593
+ self .assertEqual (clean_screen (reader .screen ), "a=1" )
594
+ output = multiline_input (reader )
595
+ self .assertEqual (output , "a=111" )
596
+ self .assertEqual (clean_screen (reader .screen ), "a=111" )
597
+
558
598
def test_history_with_multiline_entries (self ):
559
599
code = "def foo():\n x = 1\n y = 2\n z = 3\n \n def bar():\n return 42\n \n "
560
600
events = list (itertools .chain (
0 commit comments