public void Cells_are_wrapped_in_an_instance_of_MdSingleLineSpan_when_necessary() { var row = new MdTableRow(new MdTextSpan("Cell 1")); row.Add("Cell 2"); Assert.All(row.Cells, cell => Assert.IsType <MdSingleLineSpan>(cell)); }
public static MdTableRow AddIf(this MdTableRow row, bool condition, MdSpan cell) { if (condition) { row.Add(cell); } return(row); }
public void Initialization_of_MdTableRow_using_constructor() { _ = new MdTableRow(); _ = new MdTableRow("Cell 1", "Cell2"); _ = new MdTableRow(new MdTextSpan("Cell 1"), new MdTextSpan("Cell2")); _ = new MdTableRow(new[] { new MdTextSpan("Cell 1"), new MdTextSpan("Cell2") }); _ = new MdTableRow(new MdCompositeSpan("Cell 1", "Cell 1 continued")); }
public void Cells_are_not_wrapped_in_an_instance_of_MdSingleLineSpan_if_span_already_is_a_SingleLineSPan() { var cell1 = new MdSingleLineSpan(new MdTextSpan("Cell 1")); var cell2 = new MdSingleLineSpan(new MdTextSpan("Cell 2")); var row = new MdTableRow(cell1); row.Add(cell2); Assert.All(row.Cells, cell => Assert.True(ReferenceEquals(cell, cell1) || ReferenceEquals(cell, cell2))); }
public void DeepEquals_returns_expected_value() { var instance1 = new MdTableRow("Some Text"); var instance2 = new MdTableRow("Some Text"); var instance3 = new MdTableRow("Other", "text"); Assert.True(instance1.DeepEquals(instance1)); Assert.True(instance1.DeepEquals(instance2)); Assert.False(instance1.DeepEquals(null)); Assert.False(instance1.DeepEquals(instance3)); }
public void Insert_inserts_a_row_at_the_specifed_index_01() { // ARRANGE var instance = new MdTable(new MdTableRow(MdEmptySpan.Instance)); var row = new MdTableRow(MdEmptySpan.Instance); // ACT instance.Insert(0, row); // ASSERT Assert.Equal(1, instance.RowCount); Assert.Same(row, instance.Rows.Single()); }
public void MdTableRow_can_be_initialized_with_string_content_01() { var row = new MdTableRow("Content"); Assert.Single(row.Cells); Assert.IsType <MdSingleLineSpan>(row.Cells.Single()); var singleLineSpan = (MdSingleLineSpan)row.Cells.Single(); Assert.IsType <MdTextSpan>(singleLineSpan.Content); var textSpan = (MdTextSpan)singleLineSpan.Content; Assert.Equal("Content", textSpan.Text); }
public void MdTableRow_can_be_initialized_with_string_content_02() { var row = new MdTableRow("Content1", "Content2"); Assert.Equal(2, row.ColumnCount); Assert.IsType <MdSingleLineSpan>(row[0]); Assert.IsType <MdSingleLineSpan>(row[1]); var singleLineSpan1 = (MdSingleLineSpan)row[0]; var singleLineSpan2 = (MdSingleLineSpan)row[1]; var textSpan1 = Assert.IsType <MdTextSpan>(singleLineSpan1.Content); var textSpan2 = Assert.IsType <MdTextSpan>(singleLineSpan2.Content); Assert.Equal("Content1", textSpan1.Text); Assert.Equal("Content2", textSpan2.Text); }
public void Insert_inserts_a_row_at_the_specifed_index_03(int insertAt) { // ARRANGE var instance = new MdTable(new MdTableRow(MdEmptySpan.Instance)) { new MdTableRow(MdEmptySpan.Instance), new MdTableRow(MdEmptySpan.Instance) }; var row = new MdTableRow(MdEmptySpan.Instance); // ACT instance.Insert(insertAt, row); // ASSERT Assert.Equal(3, instance.RowCount); Assert.Same(row, instance.Rows.Skip(insertAt).First()); }
protected override MdBlock ConvertToBlock() { MdSpan GetLinkOrEmptySpan(string?text, string uri, bool italic = false) { return((text == null || String.IsNullOrEmpty(text)) ? (MdSpan)MdEmptySpan.Instance : new MdLinkSpan(italic ? new MdEmphasisSpan(text) : (MdSpan)text, uri)); } // only include the "Name" column, if any option has a 'long' name var addNameColumn = m_Model.NamedParameters.Any(x => x.HasName) || m_Model.SwitchParameters.Any(x => x.HasName); // only include the "Short Name" column if option has a short name var addShortNameColumn = m_Model.NamedParameters.Any(x => x.HasShortName) || m_Model.SwitchParameters.Any(x => x.HasShortName); // only include the position column if the command has any unnamed parameters var addPositionColumn = m_Model.PositionalParameters.Any(); // only add "Required" column if at least on option or value is mandatory var addRequiredColumn = m_Model.NamedParameters.Any(x => x.Required) || m_Model.PositionalParameters.Any(x => x.Required); // create empty table with header row var headerRow = new MdTableRow(); headerRow.AddIf(addPositionColumn, "Position"); headerRow.AddIf(addNameColumn, "Name"); headerRow.AddIf(addShortNameColumn && !addNameColumn, "Name"); headerRow.AddIf(addShortNameColumn && addNameColumn, "Short Name"); headerRow.AddIf(addRequiredColumn, "Required"); headerRow.Add("Description"); var table = new MdTable(headerRow); // add a row for every positional parameter foreach (var positionalParameter in m_Model.PositionalParameters.OrderBy(x => x.Position)) { var link = "#" + m_GetPositionalParameterAnchor(positionalParameter); var row = new MdTableRow(); // add index and link to details anchor row.Add(GetLinkOrEmptySpan(positionalParameter.Position.ToString(), link)); // add name (if a name of the value was specified) and link to details anchor row.AddIf(addNameColumn, GetLinkOrEmptySpan(positionalParameter.InformationalName, link, italic: true)); // if "Name" column was skipped, add the name in the "Short Name" column and link to details anchor, // if the name was already added to the name column, add an empty cell row.AddIf(addShortNameColumn && !addNameColumn, GetLinkOrEmptySpan(positionalParameter.InformationalName, link, italic: true)); row.AddIf(addShortNameColumn && addNameColumn, MdEmptySpan.Instance); // add value for "Required" column row.AddIf(addRequiredColumn, positionalParameter.Required ? "Yes" : "No"); // add help text to "Description" column row.Add(positionalParameter.Description ?? ""); table.Add(row); } // Add a row for every named parameter foreach (var namedParameter in m_Model.NamedParameters) { var link = "#" + m_GetNamedParameterAnchor(namedParameter); var row = new MdTableRow(); // add empty cell for position because option has no position row.AddIf(addPositionColumn, MdEmptySpan.Instance); // if specified, add name and link to details anchor row.AddIf(addNameColumn, GetLinkOrEmptySpan(namedParameter.Name, link)); // if specified, add shot name and link to details anchor row.AddIf(addShortNameColumn, GetLinkOrEmptySpan(namedParameter.ShortName?.ToString(), link)); // add value for "Required" column row.AddIf(addRequiredColumn, namedParameter.Required ? "Yes" : "No"); // add help text to "Description" column row.Add(namedParameter.Description ?? ""); table.Add(row); } // Add a row for every switch parameter foreach (var switchParameter in m_Model.SwitchParameters) { var link = "#" + m_GetSwitchParameterAnchor(switchParameter); var row = new MdTableRow(); // add empty cell for position because option has no position row.AddIf(addPositionColumn, MdEmptySpan.Instance); // if specified, add name and link to details anchor row.AddIf(addNameColumn, GetLinkOrEmptySpan(switchParameter.Name, link)); // if specified, add shot name and link to details anchor row.AddIf(addShortNameColumn, GetLinkOrEmptySpan(switchParameter.ShortName?.ToString(), link)); // add value for "Required" column (switch parameters are never required) row.AddIf(addRequiredColumn, "No"); // add help text to "Description" column row.Add(switchParameter.Description ?? ""); table.Add(row); } return(table); }
public void Line_breaks_are_removed_from_cells(string rawValue, string expectedValue) { var row = new MdTableRow(rawValue); Assert.Equal(expectedValue, row.Cells.Single().ToString()); }
public void Cell_contents_are_escaped(string rawValue, string expectedValue) { var row = new MdTableRow(rawValue); Assert.Equal(expectedValue, row.Cells.Single().ToString()); }