@@ -43,6 +43,8 @@ describe('LinkedList', () => {
4343 it ( 'should delete node by value from linked list' , ( ) => {
4444 const linkedList = new LinkedList ( ) ;
4545
46+ expect ( linkedList . deleteByValue ( 5 ) ) . toBeNull ( ) ;
47+
4648 linkedList . append ( { value : 1 } ) ;
4749 linkedList . append ( { value : 2 } ) ;
4850 linkedList . append ( { value : 3 } ) ;
@@ -80,40 +82,85 @@ describe('LinkedList', () => {
8082 expect ( linkedList . tail . toString ( ) ) . toBe ( '2' ) ;
8183 } ) ;
8284
85+ it ( 'should delete node by key from linked list' , ( ) => {
86+ const linkedList = new LinkedList ( ) ;
87+
88+ expect ( linkedList . deleteByKey ( 'key' ) ) . toBeNull ( ) ;
89+
90+ linkedList . append ( { value : 1 , key : 'test1' } ) ;
91+ linkedList . append ( { value : 2 , key : 'test2' } ) ;
92+ linkedList . append ( { value : 3 , key : 'test3' } ) ;
93+ linkedList . append ( { value : 4 , key : 'test4' } ) ;
94+
95+ const deletedNode1 = linkedList . deleteByKey ( 'test2' ) ;
96+ expect ( deletedNode1 . key ) . toBe ( 'test2' ) ;
97+ expect ( linkedList . toString ( ) ) . toBe ( 'test1:1,test3:3,test4:4' ) ;
98+
99+ const deletedNode2 = linkedList . deleteByKey ( 'test1' ) ;
100+ expect ( deletedNode2 . key ) . toBe ( 'test1' ) ;
101+ expect ( linkedList . toString ( ) ) . toBe ( 'test3:3,test4:4' ) ;
102+
103+ const deletedNode3 = linkedList . deleteByKey ( 'test4' ) ;
104+ expect ( deletedNode3 . key ) . toBe ( 'test4' ) ;
105+ expect ( linkedList . toString ( ) ) . toBe ( 'test3:3' ) ;
106+ } ) ;
107+
83108 it ( 'should delete linked list tail' , ( ) => {
84109 const linkedList = new LinkedList ( ) ;
85110
86111 linkedList . append ( { value : 1 } ) ;
87112 linkedList . append ( { value : 2 } ) ;
113+ linkedList . append ( { value : 3 } ) ;
88114
89115 expect ( linkedList . head . toString ( ) ) . toBe ( '1' ) ;
90- expect ( linkedList . tail . toString ( ) ) . toBe ( '2 ' ) ;
116+ expect ( linkedList . tail . toString ( ) ) . toBe ( '3 ' ) ;
91117
92118 const deletedNode1 = linkedList . deleteTail ( ) ;
93119
94- expect ( deletedNode1 . value ) . toBe ( 2 ) ;
120+ expect ( deletedNode1 . value ) . toBe ( 3 ) ;
121+ expect ( linkedList . toString ( ) ) . toBe ( '1,2' ) ;
122+ expect ( linkedList . head . toString ( ) ) . toBe ( '1' ) ;
123+ expect ( linkedList . tail . toString ( ) ) . toBe ( '2' ) ;
124+
125+ const deletedNode2 = linkedList . deleteTail ( ) ;
126+
127+ expect ( deletedNode2 . value ) . toBe ( 2 ) ;
95128 expect ( linkedList . toString ( ) ) . toBe ( '1' ) ;
96129 expect ( linkedList . head . toString ( ) ) . toBe ( '1' ) ;
97130 expect ( linkedList . tail . toString ( ) ) . toBe ( '1' ) ;
98131
99- const deletedNode2 = linkedList . deleteTail ( ) ;
132+ const deletedNode3 = linkedList . deleteTail ( ) ;
100133
101- expect ( deletedNode2 . value ) . toBe ( 1 ) ;
134+ expect ( deletedNode3 . value ) . toBe ( 1 ) ;
102135 expect ( linkedList . toString ( ) ) . toBe ( '' ) ;
103136 expect ( linkedList . head ) . toBeNull ( ) ;
104137 expect ( linkedList . tail ) . toBeNull ( ) ;
105138 } ) ;
106139
107- it ( 'should delete node by key from linked list' , ( ) => {
140+ it ( 'should delete linked list head ' , ( ) => {
108141 const linkedList = new LinkedList ( ) ;
109142
110- linkedList . append ( { value : 1 , key : 'test1' } ) ;
111- linkedList . append ( { value : 2 , key : 'test2' } ) ;
112- linkedList . append ( { value : 3 , key : 'test3' } ) ;
143+ expect ( linkedList . deleteHead ( ) ) . toBeNull ( ) ;
144+
145+ linkedList . append ( { value : 1 } ) ;
146+ linkedList . append ( { value : 2 } ) ;
147+
148+ expect ( linkedList . head . toString ( ) ) . toBe ( '1' ) ;
149+ expect ( linkedList . tail . toString ( ) ) . toBe ( '2' ) ;
113150
114- const deletedNode = linkedList . deleteByKey ( 'test2' ) ;
115- expect ( deletedNode . key ) . toBe ( 'test2' ) ;
116- expect ( linkedList . toString ( ) ) . toBe ( 'test1:1,test3:3' ) ;
151+ const deletedNode1 = linkedList . deleteHead ( ) ;
152+
153+ expect ( deletedNode1 . value ) . toBe ( 1 ) ;
154+ expect ( linkedList . toString ( ) ) . toBe ( '2' ) ;
155+ expect ( linkedList . head . toString ( ) ) . toBe ( '2' ) ;
156+ expect ( linkedList . tail . toString ( ) ) . toBe ( '2' ) ;
157+
158+ const deletedNode2 = linkedList . deleteHead ( ) ;
159+
160+ expect ( deletedNode2 . value ) . toBe ( 2 ) ;
161+ expect ( linkedList . toString ( ) ) . toBe ( '' ) ;
162+ expect ( linkedList . head ) . toBeNull ( ) ;
163+ expect ( linkedList . tail ) . toBeNull ( ) ;
117164 } ) ;
118165
119166 it ( 'should append unique nodes' , ( ) => {
@@ -122,13 +169,16 @@ describe('LinkedList', () => {
122169 linkedList . appendUnique ( { value : 1 , key : 'test1' } ) ;
123170 linkedList . appendUnique ( { value : 2 , key : 'test2' } ) ;
124171 linkedList . appendUnique ( { value : 3 , key : 'test2' } ) ;
172+ linkedList . appendUnique ( { value : 5 , key : 'test1' } ) ;
125173
126- expect ( linkedList . toString ( ) ) . toBe ( 'test1:1 ,test2:3' ) ;
174+ expect ( linkedList . toString ( ) ) . toBe ( 'test1:5 ,test2:3' ) ;
127175 } ) ;
128176
129177 it ( 'should find node by its key' , ( ) => {
130178 const linkedList = new LinkedList ( ) ;
131179
180+ expect ( linkedList . findByKey ( 'test' ) ) . toBeNull ( ) ;
181+
132182 linkedList . appendUnique ( { value : 1 , key : 'test1' } ) ;
133183 linkedList . appendUnique ( { value : 2 , key : 'test2' } ) ;
134184 linkedList . appendUnique ( { value : 3 , key : 'test3' } ) ;
0 commit comments