@@ -550,6 +550,100 @@ suite('Map', () => {
550550 assert . equal ( map . findSuperstr ( '/userr' ) , undefined ) ;
551551 } ) ;
552552
553+
554+ test ( 'TernarySearchTree (URI) - basics' , function ( ) {
555+ let trie = new TernarySearchTree < URI , number > ( new UriIterator ( ) ) ;
556+
557+ trie . set ( URI . file ( '/user/foo/bar' ) , 1 ) ;
558+ trie . set ( URI . file ( '/user/foo' ) , 2 ) ;
559+ trie . set ( URI . file ( '/user/foo/flip/flop' ) , 3 ) ;
560+
561+ assert . equal ( trie . get ( URI . file ( '/user/foo/bar' ) ) , 1 ) ;
562+ assert . equal ( trie . get ( URI . file ( '/user/foo' ) ) , 2 ) ;
563+ assert . equal ( trie . get ( URI . file ( '/user/foo/flip/flop' ) ) , 3 ) ;
564+
565+ assert . equal ( trie . findSubstr ( URI . file ( '/user/bar' ) ) , undefined ) ;
566+ assert . equal ( trie . findSubstr ( URI . file ( '/user/foo' ) ) , 2 ) ;
567+ assert . equal ( trie . findSubstr ( URI . file ( '/user/foo/ba' ) ) , 2 ) ;
568+ assert . equal ( trie . findSubstr ( URI . file ( '/user/foo/far/boo' ) ) , 2 ) ;
569+ assert . equal ( trie . findSubstr ( URI . file ( '/user/foo/bar' ) ) , 1 ) ;
570+ assert . equal ( trie . findSubstr ( URI . file ( '/user/foo/bar/far/boo' ) ) , 1 ) ;
571+ } ) ;
572+
573+ test ( 'TernarySearchTree (URI) - lookup' , function ( ) {
574+
575+ const map = new TernarySearchTree < URI , number > ( new UriIterator ( ) ) ;
576+ map . set ( URI . parse ( 'http://foo.bar/user/foo/bar' ) , 1 ) ;
577+ map . set ( URI . parse ( 'http://foo.bar/user/foo?query' ) , 2 ) ;
578+ map . set ( URI . parse ( 'http://foo.bar/user/foo?QUERY' ) , 3 ) ;
579+ map . set ( URI . parse ( 'http://foo.bar/user/foo/flip/flop' ) , 3 ) ;
580+
581+ assert . equal ( map . get ( URI . parse ( 'http://foo.bar/foo' ) ) , undefined ) ;
582+ assert . equal ( map . get ( URI . parse ( 'http://foo.bar/user' ) ) , undefined ) ;
583+ assert . equal ( map . get ( URI . parse ( 'http://foo.bar/user/foo/bar' ) ) , 1 ) ;
584+ assert . equal ( map . get ( URI . parse ( 'http://foo.bar/user/foo?query' ) ) , 2 ) ;
585+ assert . equal ( map . get ( URI . parse ( 'http://foo.bar/user/foo?Query' ) ) , undefined ) ;
586+ assert . equal ( map . get ( URI . parse ( 'http://foo.bar/user/foo?QUERY' ) ) , 3 ) ;
587+ assert . equal ( map . get ( URI . parse ( 'http://foo.bar/user/foo/bar/boo' ) ) , undefined ) ;
588+ } ) ;
589+
590+ test ( 'TernarySearchTree (PathSegments) - superstr' , function ( ) {
591+
592+ const map = new TernarySearchTree < URI , number > ( new UriIterator ( ) ) ;
593+ map . set ( URI . file ( '/user/foo/bar' ) , 1 ) ;
594+ map . set ( URI . file ( '/user/foo' ) , 2 ) ;
595+ map . set ( URI . file ( '/user/foo/flip/flop' ) , 3 ) ;
596+ map . set ( URI . file ( '/usr/foo' ) , 4 ) ;
597+
598+ let item : IteratorResult < number > ;
599+ let iter = map . findSuperstr ( URI . file ( '/user' ) ) ! ;
600+
601+ item = iter . next ( ) ;
602+ assert . equal ( item . value , 2 ) ;
603+ assert . equal ( item . done , false ) ;
604+ item = iter . next ( ) ;
605+ assert . equal ( item . value , 1 ) ;
606+ assert . equal ( item . done , false ) ;
607+ item = iter . next ( ) ;
608+ assert . equal ( item . value , 3 ) ;
609+ assert . equal ( item . done , false ) ;
610+ item = iter . next ( ) ;
611+ assert . equal ( item . value , undefined ) ;
612+ assert . equal ( item . done , true ) ;
613+
614+ iter = map . findSuperstr ( URI . file ( '/usr' ) ) ! ;
615+ item = iter . next ( ) ;
616+ assert . equal ( item . value , 4 ) ;
617+ assert . equal ( item . done , false ) ;
618+
619+ item = iter . next ( ) ;
620+ assert . equal ( item . value , undefined ) ;
621+ assert . equal ( item . done , true ) ;
622+
623+ iter = map . findSuperstr ( URI . file ( '/' ) ) ! ;
624+ item = iter . next ( ) ;
625+ assert . equal ( item . value , 2 ) ;
626+ assert . equal ( item . done , false ) ;
627+ item = iter . next ( ) ;
628+ assert . equal ( item . value , 1 ) ;
629+ assert . equal ( item . done , false ) ;
630+ item = iter . next ( ) ;
631+ assert . equal ( item . value , 3 ) ;
632+ assert . equal ( item . done , false ) ;
633+ item = iter . next ( ) ;
634+ assert . equal ( item . value , 4 ) ;
635+ assert . equal ( item . done , false ) ;
636+ item = iter . next ( ) ;
637+ assert . equal ( item . value , undefined ) ;
638+ assert . equal ( item . done , true ) ;
639+
640+ assert . equal ( map . findSuperstr ( URI . file ( '/not' ) ) , undefined ) ;
641+ assert . equal ( map . findSuperstr ( URI . file ( '/us' ) ) , undefined ) ;
642+ assert . equal ( map . findSuperstr ( URI . file ( '/usrr' ) ) , undefined ) ;
643+ assert . equal ( map . findSuperstr ( URI . file ( '/userr' ) ) , undefined ) ;
644+ } ) ;
645+
646+
553647 test ( 'ResourceMap - basics' , function ( ) {
554648 const map = new ResourceMap < any > ( ) ;
555649
0 commit comments