@@ -93,6 +93,13 @@ impl<T: PartialEq> PartialEq for TrieMap<T> {
93
93
94
94
impl < T : Eq > Eq for TrieMap < T > { }
95
95
96
+ impl < T : PartialOrd > PartialOrd for TrieMap < T > {
97
+ #[ inline]
98
+ fn partial_cmp ( & self , other : & TrieMap < T > ) -> Option < Ordering > {
99
+ iter:: order:: partial_cmp ( self . iter ( ) , other. iter ( ) )
100
+ }
101
+ }
102
+
96
103
impl < T : Show > Show for TrieMap < T > {
97
104
fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
98
105
try!( write ! ( f, "{{" ) ) ;
@@ -517,7 +524,7 @@ impl<S: Writer, T: Hash<S>> Hash<S> for TrieMap<T> {
517
524
/// set.clear();
518
525
/// assert!(set.is_empty());
519
526
/// ```
520
- #[ deriving( Clone , Hash , PartialEq , Eq ) ]
527
+ #[ deriving( Clone , Hash , PartialEq , Eq , PartialOrd ) ]
521
528
pub struct TrieSet {
522
529
map : TrieMap < ( ) >
523
530
}
@@ -1309,6 +1316,38 @@ mod test_map {
1309
1316
assert ! ( a == b) ;
1310
1317
}
1311
1318
1319
+ #[ test]
1320
+ fn test_lt ( ) {
1321
+ let mut a = TrieMap :: new ( ) ;
1322
+ let mut b = TrieMap :: new ( ) ;
1323
+
1324
+ assert ! ( !( a < b) && !( b < a) ) ;
1325
+ assert ! ( b. insert( 2 u, 5 i) ) ;
1326
+ assert ! ( a < b) ;
1327
+ assert ! ( a. insert( 2 , 7 ) ) ;
1328
+ assert ! ( !( a < b) && b < a) ;
1329
+ assert ! ( b. insert( 1 , 0 ) ) ;
1330
+ assert ! ( b < a) ;
1331
+ assert ! ( a. insert( 0 , 6 ) ) ;
1332
+ assert ! ( a < b) ;
1333
+ assert ! ( a. insert( 6 , 2 ) ) ;
1334
+ assert ! ( a < b && !( b < a) ) ;
1335
+ }
1336
+
1337
+ #[ test]
1338
+ fn test_ord ( ) {
1339
+ let mut a = TrieMap :: new ( ) ;
1340
+ let mut b = TrieMap :: new ( ) ;
1341
+
1342
+ assert ! ( a <= b && a >= b) ;
1343
+ assert ! ( a. insert( 1 u, 1 i) ) ;
1344
+ assert ! ( a > b && a >= b) ;
1345
+ assert ! ( b < a && b <= a) ;
1346
+ assert ! ( b. insert( 2 , 2 ) ) ;
1347
+ assert ! ( b > a && b >= a) ;
1348
+ assert ! ( a < b && a <= b) ;
1349
+ }
1350
+
1312
1351
#[ test]
1313
1352
fn test_hash ( ) {
1314
1353
let mut x = TrieMap :: new ( ) ;
@@ -1513,4 +1552,36 @@ mod test_set {
1513
1552
1514
1553
assert ! ( a. clone( ) == a) ;
1515
1554
}
1555
+
1556
+ #[ test]
1557
+ fn test_lt ( ) {
1558
+ let mut a = TrieSet :: new ( ) ;
1559
+ let mut b = TrieSet :: new ( ) ;
1560
+
1561
+ assert ! ( !( a < b) && !( b < a) ) ;
1562
+ assert ! ( b. insert( 2 u) ) ;
1563
+ assert ! ( a < b) ;
1564
+ assert ! ( a. insert( 3 u) ) ;
1565
+ assert ! ( !( a < b) && b < a) ;
1566
+ assert ! ( b. insert( 1 ) ) ;
1567
+ assert ! ( b < a) ;
1568
+ assert ! ( a. insert( 0 ) ) ;
1569
+ assert ! ( a < b) ;
1570
+ assert ! ( a. insert( 6 ) ) ;
1571
+ assert ! ( a < b && !( b < a) ) ;
1572
+ }
1573
+
1574
+ #[ test]
1575
+ fn test_ord ( ) {
1576
+ let mut a = TrieSet :: new ( ) ;
1577
+ let mut b = TrieSet :: new ( ) ;
1578
+
1579
+ assert ! ( a <= b && a >= b) ;
1580
+ assert ! ( a. insert( 1 u) ) ;
1581
+ assert ! ( a > b && a >= b) ;
1582
+ assert ! ( b < a && b <= a) ;
1583
+ assert ! ( b. insert( 2 u) ) ;
1584
+ assert ! ( b > a && b >= a) ;
1585
+ assert ! ( a < b && a <= b) ;
1586
+ }
1516
1587
}
0 commit comments