11package com .thealgorithms .others ;
22
3- import static org .junit .jupiter .api .Assertions .assertEquals ;
4- import static org .junit .jupiter .api .Assertions .assertNotEquals ;
5- import static org .junit .jupiter .api .Assertions .assertNotNull ;
6- import static org .junit .jupiter .api .Assertions .assertThrows ;
7- import static org .junit .jupiter .api .Assertions .assertTrue ;
8-
93import java .util .Map ;
4+ import org .junit .jupiter .api .Assertions ;
105import org .junit .jupiter .api .Test ;
116
127/**
@@ -18,167 +13,177 @@ class HuffmanTest {
1813
1914 @ Test
2015 void testBuildHuffmanTreeWithBasicInput () {
21- char [] charArray = {'a' , 'b' , 'c' , 'd' , 'e' , 'f' };
22- int [] charFreq = {5 , 9 , 12 , 13 , 16 , 45 };
16+ char [] charArray = { 'a' , 'b' , 'c' , 'd' , 'e' , 'f' };
17+ int [] charFreq = { 5 , 9 , 12 , 13 , 16 , 45 };
2318
2419 HuffmanNode root = Huffman .buildHuffmanTree (charArray , charFreq );
2520
26- assertNotNull (root );
27- assertEquals (100 , root .data ); // Total frequency
21+ Assertions . assertNotNull (root );
22+ Assertions . assertEquals (100 , root .data ); // Total frequency
2823 }
2924
3025 @ Test
3126 void testGenerateCodesWithBasicInput () {
32- char [] charArray = {'a' , 'b' , 'c' , 'd' , 'e' , 'f' };
33- int [] charFreq = {5 , 9 , 12 , 13 , 16 , 45 };
27+ char [] charArray = { 'a' , 'b' , 'c' , 'd' , 'e' , 'f' };
28+ int [] charFreq = { 5 , 9 , 12 , 13 , 16 , 45 };
3429
3530 HuffmanNode root = Huffman .buildHuffmanTree (charArray , charFreq );
3631 Map <Character , String > codes = Huffman .generateCodes (root );
3732
38- assertNotNull (codes );
39- assertEquals (6 , codes .size ());
33+ Assertions . assertNotNull (codes );
34+ Assertions . assertEquals (6 , codes .size ());
4035
4136 // Verify that all characters have codes
4237 for (char c : charArray ) {
43- assertTrue (codes .containsKey (c ), "Missing code for character: " + c );
44- assertNotNull (codes .get (c ), "Null code for character: " + c );
38+ Assertions . assertTrue (codes .containsKey (c ), "Missing code for character: " + c );
39+ Assertions . assertNotNull (codes .get (c ), "Null code for character: " + c );
4540 }
4641
4742 // Verify that higher frequency characters have shorter codes
4843 // 'f' has the highest frequency (45), so it should have one of the shortest
4944 // codes
50- assertTrue (codes .get ('f' ).length () <= codes .get ('a' ).length ());
45+ Assertions . assertTrue (codes .get ('f' ).length () <= codes .get ('a' ).length ());
5146 }
5247
5348 @ Test
5449 void testSingleCharacter () {
55- char [] charArray = {'a' };
56- int [] charFreq = {10 };
50+ char [] charArray = { 'a' };
51+ int [] charFreq = { 10 };
5752
5853 HuffmanNode root = Huffman .buildHuffmanTree (charArray , charFreq );
5954 Map <Character , String > codes = Huffman .generateCodes (root );
6055
61- assertNotNull (codes );
62- assertEquals (1 , codes .size ());
63- assertEquals ("0" , codes .get ('a' )); // Single character gets code "0"
56+ Assertions . assertNotNull (codes );
57+ Assertions . assertEquals (1 , codes .size ());
58+ Assertions . assertEquals ("0" , codes .get ('a' )); // Single character gets code "0"
6459 }
6560
6661 @ Test
6762 void testTwoCharacters () {
68- char [] charArray = {'a' , 'b' };
69- int [] charFreq = {3 , 7 };
63+ char [] charArray = { 'a' , 'b' };
64+ int [] charFreq = { 3 , 7 };
7065
7166 HuffmanNode root = Huffman .buildHuffmanTree (charArray , charFreq );
7267 Map <Character , String > codes = Huffman .generateCodes (root );
7368
74- assertNotNull (codes );
75- assertEquals (2 , codes .size ());
69+ Assertions . assertNotNull (codes );
70+ Assertions . assertEquals (2 , codes .size ());
7671
7772 // Verify both characters have codes
78- assertTrue (codes .containsKey ('a' ));
79- assertTrue (codes .containsKey ('b' ));
73+ Assertions . assertTrue (codes .containsKey ('a' ));
74+ Assertions . assertTrue (codes .containsKey ('b' ));
8075
8176 // Verify codes are different
82- assertNotEquals (codes .get ('a' ), codes .get ('b' ));
77+ Assertions . assertNotEquals (codes .get ('a' ), codes .get ('b' ));
8378 }
8479
8580 @ Test
8681 void testEqualFrequencies () {
87- char [] charArray = {'a' , 'b' , 'c' };
88- int [] charFreq = {5 , 5 , 5 };
82+ char [] charArray = { 'a' , 'b' , 'c' };
83+ int [] charFreq = { 5 , 5 , 5 };
8984
9085 HuffmanNode root = Huffman .buildHuffmanTree (charArray , charFreq );
9186 Map <Character , String > codes = Huffman .generateCodes (root );
9287
93- assertNotNull (codes );
94- assertEquals (3 , codes .size ());
88+ Assertions . assertNotNull (codes );
89+ Assertions . assertEquals (3 , codes .size ());
9590
9691 // Verify all characters have codes
9792 for (char c : charArray ) {
98- assertTrue (codes .containsKey (c ));
93+ Assertions . assertTrue (codes .containsKey (c ));
9994 }
10095 }
10196
10297 @ Test
10398 void testLargeFrequencyDifference () {
104- char [] charArray = {'a' , 'b' , 'c' };
105- int [] charFreq = {1 , 10 , 100 };
99+ char [] charArray = { 'a' , 'b' , 'c' };
100+ int [] charFreq = { 1 , 10 , 100 };
106101
107102 HuffmanNode root = Huffman .buildHuffmanTree (charArray , charFreq );
108103 Map <Character , String > codes = Huffman .generateCodes (root );
109104
110- assertNotNull (codes );
111- assertEquals (3 , codes .size ());
105+ Assertions . assertNotNull (codes );
106+ Assertions . assertEquals (3 , codes .size ());
112107
113108 // Character 'c' with highest frequency should have shortest code
114- assertTrue (codes .get ('c' ).length () <= codes .get ('b' ).length ());
115- assertTrue (codes .get ('c' ).length () <= codes .get ('a' ).length ());
109+ Assertions . assertTrue (codes .get ('c' ).length () <= codes .get ('b' ).length ());
110+ Assertions . assertTrue (codes .get ('c' ).length () <= codes .get ('a' ).length ());
116111 }
117112
118113 @ Test
119114 void testNullCharacterArray () {
120- int [] charFreq = {5 , 9 , 12 };
115+ int [] charFreq = { 5 , 9 , 12 };
121116
122- assertThrows (IllegalArgumentException .class , () -> { Huffman .buildHuffmanTree (null , charFreq ); });
117+ Assertions .assertThrows (IllegalArgumentException .class , () -> {
118+ Huffman .buildHuffmanTree (null , charFreq );
119+ });
123120 }
124121
125122 @ Test
126123 void testNullFrequencyArray () {
127- char [] charArray = {'a' , 'b' , 'c' };
124+ char [] charArray = { 'a' , 'b' , 'c' };
128125
129- assertThrows (IllegalArgumentException .class , () -> { Huffman .buildHuffmanTree (charArray , null ); });
126+ Assertions .assertThrows (IllegalArgumentException .class , () -> {
127+ Huffman .buildHuffmanTree (charArray , null );
128+ });
130129 }
131130
132131 @ Test
133132 void testEmptyArrays () {
134133 char [] charArray = {};
135134 int [] charFreq = {};
136135
137- assertThrows (IllegalArgumentException .class , () -> { Huffman .buildHuffmanTree (charArray , charFreq ); });
136+ Assertions .assertThrows (IllegalArgumentException .class , () -> {
137+ Huffman .buildHuffmanTree (charArray , charFreq );
138+ });
138139 }
139140
140141 @ Test
141142 void testMismatchedArrayLengths () {
142- char [] charArray = {'a' , 'b' , 'c' };
143- int [] charFreq = {5 , 9 };
143+ char [] charArray = { 'a' , 'b' , 'c' };
144+ int [] charFreq = { 5 , 9 };
144145
145- assertThrows (IllegalArgumentException .class , () -> { Huffman .buildHuffmanTree (charArray , charFreq ); });
146+ Assertions .assertThrows (IllegalArgumentException .class , () -> {
147+ Huffman .buildHuffmanTree (charArray , charFreq );
148+ });
146149 }
147150
148151 @ Test
149152 void testNegativeFrequency () {
150- char [] charArray = {'a' , 'b' , 'c' };
151- int [] charFreq = {5 , -9 , 12 };
153+ char [] charArray = { 'a' , 'b' , 'c' };
154+ int [] charFreq = { 5 , -9 , 12 };
152155
153- assertThrows (IllegalArgumentException .class , () -> { Huffman .buildHuffmanTree (charArray , charFreq ); });
156+ Assertions .assertThrows (IllegalArgumentException .class , () -> {
157+ Huffman .buildHuffmanTree (charArray , charFreq );
158+ });
154159 }
155160
156161 @ Test
157162 void testZeroFrequency () {
158- char [] charArray = {'a' , 'b' , 'c' };
159- int [] charFreq = {0 , 5 , 10 };
163+ char [] charArray = { 'a' , 'b' , 'c' };
164+ int [] charFreq = { 0 , 5 , 10 };
160165
161166 HuffmanNode root = Huffman .buildHuffmanTree (charArray , charFreq );
162167 Map <Character , String > codes = Huffman .generateCodes (root );
163168
164- assertNotNull (codes );
165- assertEquals (3 , codes .size ());
166- assertTrue (codes .containsKey ('a' )); // Even with 0 frequency, character should have a code
169+ Assertions . assertNotNull (codes );
170+ Assertions . assertEquals (3 , codes .size ());
171+ Assertions . assertTrue (codes .containsKey ('a' )); // Even with 0 frequency, character should have a code
167172 }
168173
169174 @ Test
170175 void testGenerateCodesWithNullRoot () {
171176 Map <Character , String > codes = Huffman .generateCodes (null );
172177
173- assertNotNull (codes );
174- assertTrue (codes .isEmpty ());
178+ Assertions . assertNotNull (codes );
179+ Assertions . assertTrue (codes .isEmpty ());
175180 }
176181
177182 @ Test
178183 void testPrefixProperty () {
179184 // Verify that no code is a prefix of another (Huffman property)
180- char [] charArray = {'a' , 'b' , 'c' , 'd' , 'e' };
181- int [] charFreq = {5 , 9 , 12 , 13 , 16 };
185+ char [] charArray = { 'a' , 'b' , 'c' , 'd' , 'e' };
186+ int [] charFreq = { 5 , 9 , 12 , 13 , 16 };
182187
183188 HuffmanNode root = Huffman .buildHuffmanTree (charArray , charFreq );
184189 Map <Character , String > codes = Huffman .generateCodes (root );
@@ -189,7 +194,8 @@ void testPrefixProperty() {
189194 if (!entry1 .getKey ().equals (entry2 .getKey ())) {
190195 String code1 = entry1 .getValue ();
191196 String code2 = entry2 .getValue ();
192- assertTrue (!code1 .startsWith (code2 ) && !code2 .startsWith (code1 ), "Code " + code1 + " is a prefix of " + code2 );
197+ Assertions .assertTrue (!code1 .startsWith (code2 ) && !code2 .startsWith (code1 ),
198+ "Code " + code1 + " is a prefix of " + code2 );
193199 }
194200 }
195201 }
@@ -198,31 +204,31 @@ void testPrefixProperty() {
198204 @ Test
199205 void testBinaryCodesOnly () {
200206 // Verify that all codes contain only '0' and '1'
201- char [] charArray = {'a' , 'b' , 'c' , 'd' };
202- int [] charFreq = {1 , 2 , 3 , 4 };
207+ char [] charArray = { 'a' , 'b' , 'c' , 'd' };
208+ int [] charFreq = { 1 , 2 , 3 , 4 };
203209
204210 HuffmanNode root = Huffman .buildHuffmanTree (charArray , charFreq );
205211 Map <Character , String > codes = Huffman .generateCodes (root );
206212
207213 for (String code : codes .values ()) {
208- assertTrue (code .matches ("[01]+" ), "Code contains non-binary characters: " + code );
214+ Assertions . assertTrue (code .matches ("[01]+" ), "Code contains non-binary characters: " + code );
209215 }
210216 }
211217
212218 @ Test
213219 void testMultipleCharactersWithLargeAlphabet () {
214- char [] charArray = {'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' };
215- int [] charFreq = {2 , 3 , 5 , 7 , 11 , 13 , 17 , 19 , 23 , 29 };
220+ char [] charArray = { 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' };
221+ int [] charFreq = { 2 , 3 , 5 , 7 , 11 , 13 , 17 , 19 , 23 , 29 };
216222
217223 HuffmanNode root = Huffman .buildHuffmanTree (charArray , charFreq );
218224 Map <Character , String > codes = Huffman .generateCodes (root );
219225
220- assertNotNull (codes );
221- assertEquals (10 , codes .size ());
226+ Assertions . assertNotNull (codes );
227+ Assertions . assertEquals (10 , codes .size ());
222228
223229 // Verify all characters have codes
224230 for (char c : charArray ) {
225- assertTrue (codes .containsKey (c ));
231+ Assertions . assertTrue (codes .containsKey (c ));
226232 }
227233 }
228234}
0 commit comments