@@ -213,3 +213,196 @@ def test_invalid_text_align(self):
213213 self .assertRaises (
214214 ValueError , table .create_table , 3 , 14 , text_array , "invalid_align"
215215 )
216+
217+ def test_create_table_array_basic (self ):
218+ """Test basic functionality of create_table_array method."""
219+ table = Table ()
220+ data = [
221+ ["Header 1" , "Header 2" , "Header 3" ],
222+ ["Row 1 Col 1" , "Row 1 Col 2" , "Row 1 Col 3" ],
223+ ["Row 2 Col 1" , "Row 2 Col 2" , "Row 2 Col 3" ]
224+ ]
225+ expected_result = (
226+ "\n |Header 1|Header 2|Header 3|\n | --- | --- | --- |\n "
227+ "|Row 1 Col 1|Row 1 Col 2|Row 1 Col 3|\n "
228+ "|Row 2 Col 1|Row 2 Col 2|Row 2 Col 3|\n "
229+ )
230+
231+ result = table .create_table_array (data = data )
232+ self .assertEqual (result , expected_result )
233+
234+ def test_create_table_array_with_center_alignment (self ):
235+ """Test create_table_array with center text alignment."""
236+ table = Table ()
237+ data = [
238+ ["Header 1" , "Header 2" ],
239+ ["Data 1" , "Data 2" ]
240+ ]
241+ expected_result = (
242+ "\n |Header 1|Header 2|\n | :---: | :---: |\n "
243+ "|Data 1|Data 2|\n "
244+ )
245+
246+ result = table .create_table_array (data = data , text_align = "center" )
247+ self .assertEqual (result , expected_result )
248+
249+ def test_create_table_array_with_left_alignment (self ):
250+ """Test create_table_array with left text alignment."""
251+ table = Table ()
252+ data = [
253+ ["Header 1" , "Header 2" ],
254+ ["Data 1" , "Data 2" ]
255+ ]
256+ expected_result = (
257+ "\n |Header 1|Header 2|\n | :--- | :--- |\n "
258+ "|Data 1|Data 2|\n "
259+ )
260+
261+ result = table .create_table_array (data = data , text_align = "left" )
262+ self .assertEqual (result , expected_result )
263+
264+ def test_create_table_array_with_right_alignment (self ):
265+ """Test create_table_array with right text alignment."""
266+ table = Table ()
267+ data = [
268+ ["Header 1" , "Header 2" ],
269+ ["Data 1" , "Data 2" ]
270+ ]
271+ expected_result = (
272+ "\n |Header 1|Header 2|\n | ---: | ---: |\n "
273+ "|Data 1|Data 2|\n "
274+ )
275+
276+ result = table .create_table_array (data = data , text_align = "right" )
277+ self .assertEqual (result , expected_result )
278+
279+ def test_create_table_array_with_mixed_alignment (self ):
280+ """Test create_table_array with mixed text alignment per column."""
281+ table = Table ()
282+ data = [
283+ ["Left" , "Center" , "Right" ],
284+ ["L1" , "C1" , "R1" ],
285+ ["L2" , "C2" , "R2" ]
286+ ]
287+ expected_result = (
288+ "\n |Left|Center|Right|\n | :--- | :---: | ---: |\n "
289+ "|L1|C1|R1|\n |L2|C2|R2|\n "
290+ )
291+
292+ result = table .create_table_array (data = data , text_align = ["left" , "center" , "right" ])
293+ self .assertEqual (result , expected_result )
294+
295+ def test_create_table_array_uneven_rows (self ):
296+ """Test create_table_array with rows of different lengths."""
297+ table = Table ()
298+ data = [
299+ ["Header 1" , "Header 2" , "Header 3" ],
300+ ["Row 1 Col 1" , "Row 1 Col 2" ], # Missing third column
301+ ["Row 2 Col 1" ] # Missing second and third columns
302+ ]
303+ expected_result = (
304+ "\n |Header 1|Header 2|Header 3|\n | --- | --- | --- |\n "
305+ "|Row 1 Col 1|Row 1 Col 2||\n "
306+ "|Row 2 Col 1|||\n "
307+ )
308+
309+ result = table .create_table_array (data = data )
310+ self .assertEqual (result , expected_result )
311+
312+ def test_create_table_array_mixed_data_types (self ):
313+ """Test create_table_array with mixed data types (converts to strings)."""
314+ table = Table ()
315+ data = [
316+ ["Name" , "Age" , "Score" , "Active" ],
317+ ["Alice" , 25 , 95.5 , True ],
318+ ["Bob" , 30 , 87.2 , False ],
319+ ["Charlie" , None , 92.0 , True ]
320+ ]
321+ expected_result = (
322+ "\n |Name|Age|Score|Active|\n | --- | --- | --- | --- |\n "
323+ "|Alice|25|95.5|True|\n "
324+ "|Bob|30|87.2|False|\n "
325+ "|Charlie|None|92.0|True|\n "
326+ )
327+
328+ result = table .create_table_array (data = data )
329+ self .assertEqual (result , expected_result )
330+
331+ def test_create_table_array_empty_data (self ):
332+ """Test create_table_array with empty data."""
333+ table = Table ()
334+ data = []
335+ expected_result = ""
336+
337+ result = table .create_table_array (data = data )
338+ self .assertEqual (result , expected_result )
339+
340+ def test_create_table_array_single_row (self ):
341+ """Test create_table_array with a single row."""
342+ table = Table ()
343+ data = [["Single" , "Row" , "Data" ]]
344+ expected_result = (
345+ "\n |Single|Row|Data|\n | --- | --- | --- |\n "
346+ )
347+
348+ result = table .create_table_array (data = data )
349+ self .assertEqual (result , expected_result )
350+
351+ def test_create_table_array_single_column (self ):
352+ """Test create_table_array with a single column."""
353+ table = Table ()
354+ data = [["Header" ], ["Row 1" ], ["Row 2" ]]
355+ expected_result = (
356+ "\n |Header|\n | --- |\n "
357+ "|Row 1|\n |Row 2|\n "
358+ )
359+
360+ result = table .create_table_array (data = data )
361+ self .assertEqual (result , expected_result )
362+
363+ def test_create_table_array_with_special_characters (self ):
364+ """Test create_table_array with special characters that need escaping."""
365+ table = Table ()
366+ data = [
367+ ["Header|With|Pipes" , "Normal Header" ],
368+ ["Data|With|Pipes" , "Normal Data" ]
369+ ]
370+ expected_result = (
371+ "\n |Header\\ |With\\ |Pipes|Normal Header|\n | --- | --- |\n "
372+ "|Data\\ |With\\ |Pipes|Normal Data|\n "
373+ )
374+
375+ result = table .create_table_array (data = data )
376+ self .assertEqual (result , expected_result )
377+
378+ def test_create_table_array_rows_with_empty_lists (self ):
379+ """Test create_table_array with some empty rows."""
380+ table = Table ()
381+ data = [
382+ ["Header 1" , "Header 2" ],
383+ [], # Empty row
384+ ["Row 2 Col 1" , "Row 2 Col 2" ]
385+ ]
386+ expected_result = (
387+ "\n |Header 1|Header 2|\n | --- | --- |\n "
388+ "|||\n "
389+ "|Row 2 Col 1|Row 2 Col 2|\n "
390+ )
391+
392+ result = table .create_table_array (data = data )
393+ self .assertEqual (result , expected_result )
394+
395+ def test_create_table_array_with_partial_alignment_list (self ):
396+ """Test create_table_array with alignment list shorter than number of columns."""
397+ table = Table ()
398+ data = [
399+ ["Col 1" , "Col 2" , "Col 3" ],
400+ ["Data 1" , "Data 2" , "Data 3" ]
401+ ]
402+ expected_result = (
403+ "\n |Col 1|Col 2|Col 3|\n | :--- | :---: | --- |\n "
404+ "|Data 1|Data 2|Data 3|\n "
405+ )
406+
407+ result = table .create_table_array (data = data , text_align = ["left" , "center" ])
408+ self .assertEqual (result , expected_result )
0 commit comments