@@ -16,6 +16,10 @@ fn test_parse() -> Result<()> {
1616 let j = Range :: parse ( "Your mom" ) ;
1717 let k = Range :: parse ( "" ) ;
1818 let l = Range :: parse ( ">=12" ) ;
19+ let m = Range :: parse ( "@1" ) ;
20+ let n = Range :: parse ( "@1.1" ) ;
21+ let o = Range :: parse ( "@1.1.1" ) ;
22+ let p = Range :: parse ( "@1.1.1.1" ) ;
1923
2024 assert ! ( a. is_ok( ) ) ;
2125 assert ! ( b. is_ok( ) ) ;
@@ -29,6 +33,10 @@ fn test_parse() -> Result<()> {
2933 assert ! ( j. is_err( ) ) ;
3034 assert ! ( k. is_err( ) ) ;
3135 assert ! ( l. is_ok( ) ) ;
36+ assert ! ( m. is_ok( ) ) ;
37+ assert ! ( n. is_ok( ) ) ;
38+ assert ! ( o. is_ok( ) ) ;
39+ assert ! ( p. is_ok( ) ) ;
3240
3341 assert_eq ! ( f?. set. len( ) , 5 ) ;
3442
@@ -203,3 +211,71 @@ fn test_intersect() -> Result<()> {
203211
204212 Ok ( ( ) )
205213}
214+
215+ #[ test]
216+ fn test_at ( ) -> Result < ( ) > {
217+ let ra = Range :: parse ( ">=1.0<1.1" ) ?;
218+ let rb = Range :: parse ( "=1.1" ) ?;
219+
220+ assert_eq ! ( format!( "{ra}" ) , "~1" ) ;
221+ assert_eq ! ( format!( "{rb}" ) , "=1.1" ) ;
222+
223+ let rc = Range :: parse ( ">=1.1.0<1.1.1" ) ?;
224+ let rd = Range :: parse ( "=1.1.1" ) ?;
225+
226+ assert_eq ! ( format!( "{rc}" ) , "@1.1.0" ) ;
227+ assert_eq ! ( format!( "{rd}" ) , "=1.1.1" ) ;
228+
229+ let re = Range :: parse ( ">=1.1.1.0<1.1.1.1" ) ?;
230+ let rf = Range :: parse ( "=1.1.1.0" ) ?;
231+
232+ assert_eq ! ( format!( "{re}" ) , "@1.1.1.0" ) ;
233+ assert_eq ! ( format!( "{rf}" ) , "=1.1.1.0" ) ;
234+
235+ let rg = Range :: parse ( ">=1.1<1.1.1.1.1" ) ?;
236+ let rh = Range :: parse ( ">=1.1.1<1.1.3" ) ?;
237+ let ri = Range :: parse ( ">=1.1.1<1.2.2" ) ?;
238+
239+ assert_eq ! ( format!( "{rg}" ) , ">=1.1<1.1.1.1.1" ) ;
240+ assert_eq ! ( format!( "{rh}" ) , ">=1.1.1<1.1.3" ) ;
241+ assert_eq ! ( format!( "{ri}" ) , ">=1.1.1<1.2.2" ) ;
242+
243+ let rj = Range :: parse ( "@1" ) ?;
244+ let rk = Range :: parse ( "@1.1" ) ?;
245+ let rl = Range :: parse ( "@1.1.1" ) ?;
246+ let rm = Range :: parse ( "@1.1.1.1" ) ?;
247+
248+ assert_eq ! ( format!( "{rj}" ) , "^1" ) ;
249+ assert_eq ! ( format!( "{rk}" ) , "~1.1" ) ;
250+ assert_eq ! ( format!( "{rl}" ) , "@1.1.1" ) ;
251+ assert_eq ! ( format!( "{rm}" ) , "@1.1.1.1" ) ;
252+
253+ Ok ( ( ) )
254+ }
255+
256+ #[ test]
257+ fn test_display ( ) -> Result < ( ) > {
258+ let ra = Range :: parse ( "^3.7" ) ?;
259+ let rb = Range :: parse ( "=3.11" ) ?;
260+ let rc = Range :: parse ( "^3.9" ) ?;
261+ let rd = Range :: parse ( "*" ) ?;
262+ let re = Range :: parse ( ">=0<1" ) ?;
263+ let rf = Range :: parse ( ">=0.1<1" ) ?;
264+ let rg = Range :: parse ( ">=0.1<0.2" ) ?;
265+ let rh = Range :: parse ( ">=0.1.1<0.2" ) ?;
266+ let ri = Range :: parse ( ">=0.1.1" ) ?;
267+ let rj = Range :: parse ( ">=0.1.1<3" ) ?;
268+
269+ assert_eq ! ( ra. to_string( ) , "^3.7" ) ;
270+ assert_eq ! ( rb. to_string( ) , "=3.11" ) ;
271+ assert_eq ! ( rc. to_string( ) , "^3.9" ) ;
272+ assert_eq ! ( rd. to_string( ) , "*" ) ;
273+ assert_eq ! ( re. to_string( ) , "^0" ) ;
274+ assert_eq ! ( rf. to_string( ) , ">=0.1<1" ) ;
275+ assert_eq ! ( rg. to_string( ) , "~0.1" ) ;
276+ assert_eq ! ( rh. to_string( ) , "~0.1.1" ) ;
277+ assert_eq ! ( ri. to_string( ) , ">=0.1.1" ) ;
278+ assert_eq ! ( rj. to_string( ) , ">=0.1.1<3" ) ;
279+
280+ Ok ( ( ) )
281+ }
0 commit comments