@@ -341,29 +341,76 @@ Left Center Right
341341 }
342342
343343 It " Format-Table should correctly render headers that span multiple rows: <variation>" - TestCases @ (
344- @ {
345- variation = " 4 row, 1 row, 2 row" ;
346- ps1xml = @"
344+ @ { view = " Default" ; widths = 4 , 7 , 4 ; variation = " 4 row, 1 row, 2 row" ; expectedTable = @"
345+
346+ Long Header2 Head
347+ Long er3
348+ Head
349+ er
350+ ---- ------- ----
351+ 1 2 3
352+
353+
354+
355+ "@ },
356+ @ { view = " Default" ; widths = 4 , 4 , 7 ; variation = " 4 row, 2 row, 1 row" ; expectedTable = @"
357+
358+ Long Head Header3
359+ Long er2
360+ Head
361+ er
362+ ---- ---- -------
363+ 1 2 3
364+
365+
366+
367+ "@ },
368+ @ { view = " Default" ; widths = 14 , 7 , 3 ; variation = " 1 row, 1 row, 3 row" ; expectedTable = @"
369+
370+ LongLongHeader Header2 Hea
371+ der
372+ 3
373+ -------------- ------- ---
374+ 1 2 3
375+
376+
377+
378+ "@ },
379+ @ { view = " One" ; widths = 4 , 1 , 1 ; variation = " 1 column" ; expectedTable = @"
380+
381+ Long
382+ Long
383+ Head
384+ er
385+ ----
386+ 1
387+
388+
389+
390+ "@ }
391+ ) {
392+ param ($view , $widths , $expectedTable )
393+ $ps1xml = @"
347394<Configuration>
348395 <ViewDefinitions>
349396 <View>
350- <Name>Test.Format </Name>
397+ <Name>Default </Name>
351398 <ViewSelectedBy>
352399 <TypeName>Test.Format</TypeName>
353400 </ViewSelectedBy>
354401 <TableControl>
355402 <TableHeaders>
356403 <TableColumnHeader>
357404 <Label>LongLongHeader</Label>
358- <Width>4 </Width>
405+ <Width>{0} </Width>
359406 </TableColumnHeader>
360407 <TableColumnHeader>
361408 <Label>Header2</Label>
362- <Width>7 </Width>
409+ <Width>{1} </Width>
363410 </TableColumnHeader>
364411 <TableColumnHeader>
365412 <Label>Header3</Label>
366- <Width>4 </Width>
413+ <Width>{2} </Width>
367414 </TableColumnHeader>
368415 </TableHeaders>
369416 <TableRowEntries>
@@ -383,43 +430,16 @@ Left Center Right
383430 </TableRowEntries>
384431 </TableControl>
385432 </View>
386- </ViewDefinitions>
387- </Configuration>
388- "@ ; expectedTable = @"
389-
390- Long Header2 Head
391- Long er3
392- Head
393- er
394- ---- ------- ----
395- 1 2 3
396-
397-
398-
399- "@ },
400- @ {
401- variation = " 4 row, 2 row, 1 row" ;
402- ps1xml = @"
403- <Configuration>
404- <ViewDefinitions>
405433 <View>
406- <Name>Test.Format </Name>
434+ <Name>One </Name>
407435 <ViewSelectedBy>
408436 <TypeName>Test.Format</TypeName>
409437 </ViewSelectedBy>
410438 <TableControl>
411439 <TableHeaders>
412440 <TableColumnHeader>
413441 <Label>LongLongHeader</Label>
414- <Width>4</Width>
415- </TableColumnHeader>
416- <TableColumnHeader>
417- <Label>Header2</Label>
418- <Width>4</Width>
419- </TableColumnHeader>
420- <TableColumnHeader>
421- <Label>Header3</Label>
422- <Width>7</Width>
442+ <Width>{0}</Width>
423443 </TableColumnHeader>
424444 </TableHeaders>
425445 <TableRowEntries>
@@ -428,101 +448,31 @@ er
428448 <TableColumnItem>
429449 <PropertyName>First</PropertyName>
430450 </TableColumnItem>
431- <TableColumnItem>
432- <PropertyName>Second</PropertyName>
433- </TableColumnItem>
434- <TableColumnItem>
435- <PropertyName>Third</PropertyName>
436- </TableColumnItem>
437451 </TableColumnItems>
438452 </TableRowEntry>
439453 </TableRowEntries>
440454 </TableControl>
441455 </View>
442456 </ViewDefinitions>
443457</Configuration>
444- "@ ; expectedTable = @"
445-
446- Long Head Header3
447- Long er2
448- Head
449- er
450- ---- ---- -------
451- 1 2 3
452-
453-
454-
455- "@ },
456- @ {
457- variation = " 1 row, 1 row, 3 row" ;
458- ps1xml = @"
459- <Configuration>
460- <ViewDefinitions>
461- <View>
462- <Name>Test.Format</Name>
463- <ViewSelectedBy>
464- <TypeName>Test.Format</TypeName>
465- </ViewSelectedBy>
466- <TableControl>
467- <TableHeaders>
468- <TableColumnHeader>
469- <Label>Header1</Label>
470- <Width>7</Width>
471- </TableColumnHeader>
472- <TableColumnHeader>
473- <Label>Header2</Label>
474- <Width>7</Width>
475- </TableColumnHeader>
476- <TableColumnHeader>
477- <Label>LongHeader3</Label>
478- <Width>4</Width>
479- </TableColumnHeader>
480- </TableHeaders>
481- <TableRowEntries>
482- <TableRowEntry>
483- <TableColumnItems>
484- <TableColumnItem>
485- <PropertyName>First</PropertyName>
486- </TableColumnItem>
487- <TableColumnItem>
488- <PropertyName>Second</PropertyName>
489- </TableColumnItem>
490- <TableColumnItem>
491- <PropertyName>Third</PropertyName>
492- </TableColumnItem>
493- </TableColumnItems>
494- </TableRowEntry>
495- </TableRowEntries>
496- </TableControl>
497- </View>
498- </ViewDefinitions>
499- </Configuration>
500- "@ ; expectedTable = @"
501-
502- Header1 Header2 Long
503- Head
504- er3
505- ------- ------- ----
506- 1 2 3
507-
508-
509-
510- "@ }
511- ) {
512- param ($ps1xml , $expectedTable )
458+ "@
459+ $ps1xml = $ps1xml.Replace (" {0}" , $widths [0 ]).Replace(" {1}" , $widths [1 ]).Replace(" {2}" , $widths [2 ])
513460 $ps1xmlPath = Join-Path - Path $TestDrive - ChildPath " test.format.ps1xml"
514461 Set-Content - Path $ps1xmlPath - Value $ps1xml
515462 # run in own runspace so not affect global sessionstate
516463 $ps = [powershell ]::Create()
517464 $ps.AddScript ( {
518- param ($ps1xmlPath )
465+ param ($ps1xmlPath , $view )
519466 Update-FormatData - AppendPath $ps1xmlPath
520467 $a = [PSCustomObject ]@ {First = 1 ;Second = 2 ;Third = 3 }
521468 $a.PSObject.TypeNames.Insert (0 , " Test.Format" )
522- $a | Out-String
523- } ).AddArgument($ps1xmlPath ) | Out-Null
469+ $a | Format-Table - View $view | Out-String
470+ } ).AddArgument($ps1xmlPath ).AddArgument( $view ) | Out-Null
524471 $output = $ps.Invoke ()
525-
472+ foreach ($e in $ps.Streams.Error )
473+ {
474+ Write-Verbose $e.ToString () - Verbose
475+ }
526476 $ps.HadErrors | Should - BeFalse
527477 $output.Replace (" `r " , " " ).Replace(" " , " ." ).Replace(" `n " , " `` " ) | Should - BeExactly $expectedTable.Replace (" `r " , " " ).Replace(" " , " ." ).Replace(" `n " , " `` " )
528478 }
0 commit comments