|
1 | | -#include "cucumber/messages/pickle_table_row.hpp" |
| 1 | +#include "cucumber/messages/pickle_table.hpp" |
2 | 2 | #include "cucumber_cpp/CucumberCpp.hpp" |
3 | | -#include "gmock/gmock.h" |
4 | | -#include "gtest/gtest.h" |
5 | 3 | #include <cstddef> |
6 | 4 | #include <gmock/gmock.h> |
7 | | -#include <span> |
| 5 | +#include <gtest/gtest.h> |
8 | 6 | #include <vector> |
9 | 7 |
|
10 | 8 | STEP(R"(the following table is transposed:)") |
11 | 9 | { |
12 | | - std::vector<cucumber::messages::pickle_table_row> transposedTable; |
13 | | - transposedTable.reserve(this->table->front().cells.size()); |
14 | | - for (std::size_t colIdx = 0; colIdx < this->table->front().cells.size(); ++colIdx) |
15 | | - transposedTable.emplace_back().cells.resize(this->table->size()); |
| 10 | + auto transposedTable = context.Emplace<cucumber::messages::pickle_table>(); |
| 11 | + transposedTable->rows.reserve(this->dataTable->rows[0].cells.size()); |
| 12 | + for (std::size_t colIdx = 0; colIdx < this->dataTable->rows[0].cells.size(); ++colIdx) |
| 13 | + transposedTable->rows.emplace_back().cells.resize(this->dataTable->rows.size()); |
16 | 14 |
|
17 | | - for (std::size_t rowIdx = 0; rowIdx < this->table->size(); ++rowIdx) |
18 | | - for (std::size_t colIdx = 0; colIdx < this->table->begin()[rowIdx].cells.size(); ++colIdx) |
19 | | - transposedTable[colIdx].cells[rowIdx] = this->table->begin()[rowIdx].cells[colIdx]; |
20 | | - |
21 | | - context.Insert(transposedTable); |
| 15 | + for (std::size_t rowIdx = 0; rowIdx < this->dataTable->rows.size(); ++rowIdx) |
| 16 | + for (std::size_t colIdx = 0; colIdx < this->dataTable->rows[rowIdx].cells.size(); ++colIdx) |
| 17 | + transposedTable->rows[colIdx].cells[rowIdx] = this->dataTable->rows[rowIdx].cells[colIdx]; |
22 | 18 | } |
23 | 19 |
|
24 | 20 | STEP(R"(it should be:)") |
25 | 21 | { |
26 | | - std::span<const cucumber::messages::pickle_table_row> expected = context.Get<std::vector<cucumber::messages::pickle_table_row>>(); |
27 | | - const auto& actual = *table; |
28 | | - const auto rows = expected.size(); |
29 | | - ASSERT_THAT(rows, testing::Eq(actual.size())); |
| 22 | + const auto& actualTable = context.Get<cucumber::messages::pickle_table>(); |
| 23 | + const auto& expectedTalbe = dataTable; |
| 24 | + |
| 25 | + const auto rows = actualTable.rows.size(); |
| 26 | + ASSERT_THAT(rows, testing::Eq(expectedTalbe->rows.size())); |
| 27 | + |
30 | 28 | for (auto rowIdx = 0; rowIdx < rows; ++rowIdx) |
31 | 29 | { |
32 | | - const auto columns = expected[rowIdx].cells.size(); |
33 | | - ASSERT_THAT(columns, testing::Eq(actual[rowIdx].cells.size())); |
| 30 | + const auto columns = expectedTalbe->rows[rowIdx].cells.size(); |
| 31 | + ASSERT_THAT(columns, testing::Eq(actualTable.rows[rowIdx].cells.size())); |
34 | 32 | for (auto colIdx = 0; colIdx < columns; ++colIdx) |
35 | 33 | { |
36 | | - const auto& expectedCell = expected[rowIdx].cells[colIdx]; |
37 | | - const auto& actualCell = actual[rowIdx].cells[colIdx]; |
| 34 | + const auto& expectedCell = expectedTalbe->rows[rowIdx].cells[colIdx]; |
| 35 | + const auto& actualCell = actualTable.rows[rowIdx].cells[colIdx]; |
38 | 36 | EXPECT_THAT(expectedCell.value, testing::StrEq(actualCell.value)) << "at row " << rowIdx << " column " << colIdx; |
39 | 37 | } |
40 | 38 | } |
41 | 39 | } |
42 | | - |
43 | | -// import assert from 'node:assert' |
44 | | -// import { DataTable, When, Then } from '@cucumber/fake-cucumber' |
45 | | - |
46 | | -// When('the following table is transposed:', function (table: DataTable) { |
47 | | -// this.transposed = table.transpose() |
48 | | -// }) |
49 | | - |
50 | | -// Then('it should be:', function (expected: DataTable) { |
51 | | -// assert.deepStrictEqual(this.transposed.raw(), expected.raw()) |
52 | | -// } |
0 commit comments