func FormatTable(table *parser.Table) string { columnToWidthMap := make(map[int]int) for i, header := range table.Headers { //table.get(header) returns a list of cells in that particular column cells := table.Get(header) columnToWidthMap[i] = findLongestCellWidth(cells, len(header)) } var tableStringBuffer bytes.Buffer tableStringBuffer.WriteString(fmt.Sprintf("%s|", getRepeatedChars(" ", tableLeftSpacing))) for i, header := range table.Headers { width := columnToWidthMap[i] tableStringBuffer.WriteString(fmt.Sprintf("%s|", addPaddingToCell(header, width))) } tableStringBuffer.WriteString("\n") tableStringBuffer.WriteString(fmt.Sprintf("%s|", getRepeatedChars(" ", tableLeftSpacing))) for i := range table.Headers { width := columnToWidthMap[i] cell := getRepeatedChars("-", width) tableStringBuffer.WriteString(fmt.Sprintf("%s|", addPaddingToCell(cell, width))) } tableStringBuffer.WriteString("\n") for _, row := range table.Rows() { tableStringBuffer.WriteString(fmt.Sprintf("%s|", getRepeatedChars(" ", tableLeftSpacing))) for i, cell := range row { width := columnToWidthMap[i] tableStringBuffer.WriteString(fmt.Sprintf("%s|", addPaddingToCell(cell, width))) } tableStringBuffer.WriteString("\n") } return string(tableStringBuffer.Bytes()) }
func (specExecutor *specExecutor) executeTableDrivenSpec() { var dataTableScenarioExecutionResult [][]*result.ScenarioResult for specExecutor.currentTableRow = specExecutor.dataTableIndex.start; specExecutor.currentTableRow <= specExecutor.dataTableIndex.end; specExecutor.currentTableRow++ { var dataTable parser.Table dataTable.AddHeaders(specExecutor.specification.DataTable.Table.Headers) dataTable.AddRowValues(specExecutor.specification.DataTable.Table.Rows()[specExecutor.currentTableRow]) specExecutor.consoleReporter.DataTable(formatter.FormatTable(&dataTable)) dataTableScenarioExecutionResult = append(dataTableScenarioExecutionResult, specExecutor.executeScenarios()) } specExecutor.specResult.AddTableDrivenScenarioResult(dataTableScenarioExecutionResult) }