@@ -222,6 +222,129 @@ mod tests {
222222 . cloned( )
223223 . peekable( )
224224 )
225+ ) ;
226+
227+ assert_eq ! (
228+ Ok ( Params {
229+ executable: os( "sdiff" ) ,
230+ from: os( "foo" ) ,
231+ to: os( "bar" ) ,
232+ ..Default :: default ( )
233+ } ) ,
234+ parse_params(
235+ [ os( "sdiff" ) , os( "foo" ) , os( "bar" ) ]
236+ . iter( )
237+ . cloned( )
238+ . peekable( )
239+ )
240+ ) ;
241+ for option in [ "-t" , "--expand-tabs" ] {
242+ assert_eq ! (
243+ Ok ( Params {
244+ executable: os( "sdiff" ) ,
245+ from: os( "foo" ) ,
246+ to: os( "bar" ) ,
247+ expand_tabs: true ,
248+ ..Default :: default ( )
249+ } ) ,
250+ parse_params(
251+ [ os( "sdiff" ) , os( option) , os( "foo" ) , os( "bar" ) ]
252+ . iter( )
253+ . cloned( )
254+ . peekable( )
255+ )
256+ ) ;
257+ }
258+ assert_eq ! (
259+ Ok ( Params {
260+ executable: os( "sdiff" ) ,
261+ from: os( "foo" ) ,
262+ to: os( "bar" ) ,
263+ ..Default :: default ( )
264+ } ) ,
265+ parse_params(
266+ [ os( "sdiff" ) , os( "foo" ) , os( "bar" ) ]
267+ . iter( )
268+ . cloned( )
269+ . peekable( )
270+ )
271+ ) ;
272+ assert_eq ! (
273+ Ok ( Params {
274+ executable: os( "sdiff" ) ,
275+ from: os( "foo" ) ,
276+ to: os( "bar" ) ,
277+ tabsize: 1 ,
278+ ..Default :: default ( )
279+ } ) ,
280+ parse_params(
281+ [ os( "sdiff" ) , os( "--tabsize=1" ) , os( "foo" ) , os( "bar" ) ]
282+ . iter( )
283+ . cloned( )
284+ . peekable( )
285+ )
286+ ) ;
287+ assert_eq ! (
288+ Ok ( Params {
289+ executable: os( "sdiff" ) ,
290+ from: os( "foo" ) ,
291+ to: os( "bar" ) ,
292+ tabsize: 42 ,
293+ ..Default :: default ( )
294+ } ) ,
295+ parse_params(
296+ [ os( "sdiff" ) , os( "--tabsize=42" ) , os( "foo" ) , os( "bar" ) ]
297+ . iter( )
298+ . cloned( )
299+ . peekable( )
300+ )
301+ ) ;
302+ assert ! ( parse_params(
303+ [ os( "sdiff" ) , os( "--tabsize" ) , os( "foo" ) , os( "bar" ) ]
304+ . iter( )
305+ . cloned( )
306+ . peekable( )
307+ )
308+ . is_err( ) ) ;
309+ assert ! ( parse_params(
310+ [ os( "sdiff" ) , os( "--tabsize=" ) , os( "foo" ) , os( "bar" ) ]
311+ . iter( )
312+ . cloned( )
313+ . peekable( )
314+ )
315+ . is_err( ) ) ;
316+ assert ! ( parse_params(
317+ [ os( "sdiff" ) , os( "--tabsize=r2" ) , os( "foo" ) , os( "bar" ) ]
318+ . iter( )
319+ . cloned( )
320+ . peekable( )
321+ )
322+ . is_err( ) ) ;
323+ assert ! ( parse_params(
324+ [ os( "sdiff" ) , os( "--tabsize=-1" ) , os( "foo" ) , os( "bar" ) ]
325+ . iter( )
326+ . cloned( )
327+ . peekable( )
328+ )
329+ . is_err( ) ) ;
330+ assert ! ( parse_params(
331+ [ os( "sdiff" ) , os( "--tabsize=r2" ) , os( "foo" ) , os( "bar" ) ]
332+ . iter( )
333+ . cloned( )
334+ . peekable( )
335+ )
336+ . is_err( ) ) ;
337+ assert ! ( parse_params(
338+ [
339+ os( "sdiff" ) ,
340+ os( "--tabsize=92233720368547758088" ) ,
341+ os( "foo" ) ,
342+ os( "bar" )
343+ ]
344+ . iter( )
345+ . cloned( )
346+ . peekable( )
225347 )
348+ . is_err( ) ) ;
226349 }
227350}
0 commit comments