@@ -55,44 +55,93 @@ def test_exclude_from_history(base_app, monkeypatch):
5555def hist ():
5656 from cmd2 .parsing import Statement
5757 from cmd2 .cmd2 import History , HistoryItem
58- h = History ([HistoryItem (Statement ('' , raw = 'first' )),
59- HistoryItem (Statement ('' , raw = 'second' )),
60- HistoryItem (Statement ('' , raw = 'third' )),
61- HistoryItem (Statement ('' , raw = 'fourth' ))])
58+ h = History ([HistoryItem (Statement ('' , raw = 'first' ), 1 ),
59+ HistoryItem (Statement ('' , raw = 'second' ), 2 ),
60+ HistoryItem (Statement ('' , raw = 'third' ), 3 ),
61+ HistoryItem (Statement ('' , raw = 'fourth' ), 4 )])
6262 return h
6363
6464def test_history_class_span (hist ):
6565 for tryit in ['*' , ':' , '-' , 'all' , 'ALL' ]:
6666 assert hist .span (tryit ) == hist
6767
68- assert hist .span ('3' ) == ['third' ]
69- assert hist .span ('-1' ) == ['fourth' ]
70-
71- assert hist .span ('2..' ) == ['second' , 'third' , 'fourth' ]
72- assert hist .span ('2:' ) == ['second' , 'third' , 'fourth' ]
73-
74- assert hist .span ('-2..' ) == ['third' , 'fourth' ]
75- assert hist .span ('-2:' ) == ['third' , 'fourth' ]
76-
77- assert hist .span ('1..3' ) == ['first' , 'second' , 'third' ]
78- assert hist .span ('1:3' ) == ['first' , 'second' , 'third' ]
79- assert hist .span ('2:-1' ) == ['second' , 'third' , 'fourth' ]
80- assert hist .span ('-3:4' ) == ['second' , 'third' ,'fourth' ]
81- assert hist .span ('-4:-2' ) == ['first' , 'second' , 'third' ]
82-
83- assert hist .span (':-2' ) == ['first' , 'second' , 'third' ]
84- assert hist .span ('..-2' ) == ['first' , 'second' , 'third' ]
68+ assert hist .span ('3' )[0 ].statement .raw == 'third'
69+ assert hist .span ('-1' )[0 ].statement .raw == 'fourth'
70+
71+ span = hist .span ('2..' )
72+ assert len (span ) == 3
73+ assert span [0 ].statement .raw == 'second'
74+ assert span [1 ].statement .raw == 'third'
75+ assert span [2 ].statement .raw == 'fourth'
76+
77+ span = hist .span ('2:' )
78+ assert len (span ) == 3
79+ assert span [0 ].statement .raw == 'second'
80+ assert span [1 ].statement .raw == 'third'
81+ assert span [2 ].statement .raw == 'fourth'
82+
83+ span = hist .span ('-2..' )
84+ assert len (span ) == 2
85+ assert span [0 ].statement .raw == 'third'
86+ assert span [1 ].statement .raw == 'fourth'
87+
88+ span = hist .span ('-2:' )
89+ assert len (span ) == 2
90+ assert span [0 ].statement .raw == 'third'
91+ assert span [1 ].statement .raw == 'fourth'
92+
93+ span = hist .span ('1..3' )
94+ assert len (span ) == 3
95+ assert span [0 ].statement .raw == 'first'
96+ assert span [1 ].statement .raw == 'second'
97+ assert span [2 ].statement .raw == 'third'
98+
99+ span = hist .span ('1:3' )
100+ assert len (span ) == 3
101+ assert span [0 ].statement .raw == 'first'
102+ assert span [1 ].statement .raw == 'second'
103+ assert span [2 ].statement .raw == 'third'
104+
105+ span = hist .span ('2:-1' )
106+ assert len (span ) == 3
107+ assert span [0 ].statement .raw == 'second'
108+ assert span [1 ].statement .raw == 'third'
109+ assert span [2 ].statement .raw == 'fourth'
110+
111+ span = hist .span ('-3:4' )
112+ assert len (span ) == 3
113+ assert span [0 ].statement .raw == 'second'
114+ assert span [1 ].statement .raw == 'third'
115+ assert span [2 ].statement .raw == 'fourth'
116+
117+ span = hist .span ('-4:-2' )
118+ assert len (span ) == 3
119+ assert span [0 ].statement .raw == 'first'
120+ assert span [1 ].statement .raw == 'second'
121+ assert span [2 ].statement .raw == 'third'
122+
123+ span = hist .span (':-2' )
124+ assert len (span ) == 3
125+ assert span [0 ].statement .raw == 'first'
126+ assert span [1 ].statement .raw == 'second'
127+ assert span [2 ].statement .raw == 'third'
128+
129+ span = hist .span ('..-2' )
130+ assert len (span ) == 3
131+ assert span [0 ].statement .raw == 'first'
132+ assert span [1 ].statement .raw == 'second'
133+ assert span [2 ].statement .raw == 'third'
85134
86135 value_errors = ['fred' , 'fred:joe' , 'a..b' , '2 ..' , '1 : 3' , '1:0' , '0:3' ]
87136 for tryit in value_errors :
88137 with pytest .raises (ValueError ):
89138 hist .span (tryit )
90139
91140def test_history_class_get (hist ):
92- assert hist .get ('1' ) == 'first'
93- assert hist .get (3 ) == 'third'
141+ assert hist .get ('1' ). statement . raw == 'first'
142+ assert hist .get (3 ). statement . raw == 'third'
94143 assert hist .get ('-2' ) == hist [- 2 ]
95- assert hist .get (- 1 ) == 'fourth'
144+ assert hist .get (- 1 ). statement . raw == 'fourth'
96145
97146 with pytest .raises (IndexError ):
98147 hist .get (0 )
@@ -115,12 +164,23 @@ def test_history_class_get(hist):
115164 hist .get (None )
116165
117166def test_history_str_search (hist ):
118- assert hist .str_search ('ir' ) == ['first' , 'third' ]
119- assert hist .str_search ('rth' ) == ['fourth' ]
167+ items = hist .str_search ('ir' )
168+ assert len (items ) == 2
169+ assert items [0 ].statement .raw == 'first'
170+ assert items [1 ].statement .raw == 'third'
171+
172+ items = hist .str_search ('rth' )
173+ assert len (items ) == 1
174+ assert items [0 ].statement .raw == 'fourth'
120175
121176def test_history_regex_search (hist ):
122- assert hist .regex_search ('/i.*d/' ) == ['third' ]
123- assert hist .regex_search ('s[a-z]+ond' ) == ['second' ]
177+ items = hist .regex_search ('/i.*d/' )
178+ assert len (items ) == 1
179+ assert items [0 ].statement .raw == 'third'
180+
181+ items = hist .regex_search ('s[a-z]+ond' )
182+ assert len (items ) == 1
183+ assert items [0 ].statement .raw == 'second'
124184
125185def test_history_max_length_zero (hist ):
126186 hist .truncate (0 )
@@ -132,8 +192,9 @@ def test_history_max_length_negative(hist):
132192
133193def test_history_max_length (hist ):
134194 hist .truncate (2 )
135- assert hist .get (1 ) == 'third'
136- assert hist .get (2 ) == 'fourth'
195+ assert len (hist ) == 2
196+ assert hist .get (1 ).statement .raw == 'third'
197+ assert hist .get (2 ).statement .raw == 'fourth'
137198
138199def test_base_history (base_app ):
139200 run_cmd (base_app , 'help' )
0 commit comments