Skip to content

Commit 501a61a

Browse files
committed
F!! MarkdownTable allows right justification
Move Markdown classes into their own package
1 parent e75ccc6 commit 501a61a

File tree

19 files changed

+158
-107
lines changed

19 files changed

+158
-107
lines changed

approvaltests-tests/src/test/java/org/approvaltests/StoryBoardTest.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package org.approvaltests;
22

3-
import com.spun.util.MarkdownCompatible;
4-
import org.approvaltests.reporters.QuietReporter;
5-
import org.approvaltests.reporters.UseReporter;
3+
import com.spun.util.markdown.MarkdownCompatible;
64
import org.junit.jupiter.api.Test;
75
import org.lambda.functions.Function2;
86
import org.lambda.query.Queryable;
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11

22

33
| Number of Parameters | Variations per Parameter | Total Combinations | Pairwise Combinations |
4-
| --------------------: | -----------------------: | ------------------: | ---------------------: |
5-
|2|5|25|25|
6-
|3|3|27|11|
7-
|3|4|64|16|
8-
|4|5|625|33|
9-
|5|6|7,776|49|
10-
|9|9|387,420,489|134|
4+
|---------------------:|-------------------------:|-------------------:|----------------------:|
5+
| 2 | 5 | 25 | 25 |
6+
| 3 | 3 | 27 | 11 |
7+
| 3 | 4 | 64 | 16 |
8+
| 4 | 5 | 625 | 33 |
9+
| 5 | 6 | 7,776 | 49 |
10+
| 9 | 9 | 387,420,489 | 134 |
1111

1212

approvaltests-tests/src/test/java/org/approvaltests/combinations/PairWiseTest.java

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.approvaltests.combinations;
22

3+
import com.spun.util.markdown.table.MarkdownColumn;
4+
import com.spun.util.markdown.table.MarkdownTable;
35
import org.approvaltests.Approvals;
46
import org.approvaltests.combinations.pairwise.Case;
57
import org.approvaltests.combinations.pairwise.InParameterOrderStrategy;
@@ -22,25 +24,37 @@
2224
import static org.junit.jupiter.api.Assertions.assertEquals;
2325
import static org.junit.jupiter.api.Assertions.fail;
2426

25-
@UseReporter(DiffMergeReporter.class)
27+
//@UseReporter(DiffMergeReporter.class)
2628
public class PairWiseTest
2729
{
2830
@Test
2931
void forTable()
3032
{
31-
StringBuffer output = new StringBuffer();
32-
output.append("\n\n"); // added blank lines at beginning due to markdown snippets bug
33-
output.append(
34-
"| Number of Parameters | Variations per Parameter | Total Combinations | Pairwise Combinations |\n"
35-
+ "| --------------------: | -----------------------: | ------------------: | ---------------------: |\n");
36-
output.append(getPairwiseTableRow(2, 5));
37-
output.append(getPairwiseTableRow(3, 3));
38-
output.append(getPairwiseTableRow(3, 4));
39-
output.append(getPairwiseTableRow(4, 5));
40-
output.append(getPairwiseTableRow(5, 6));
41-
output.append(getPairwiseTableRow(9, 9));
42-
output.append("\n\n"); // added blank lines at beginning due to markdown snippets bug
43-
Approvals.verify(output, new Options().forFile().withExtension("include.md"));
33+
String [] headers = {"Number of Parameters", "Variations per Parameter", "Total Combinations", "Pairwise Combinations"};
34+
MarkdownTable table = MarkdownTable.withHeaders(headers);
35+
table.setColumnProperties(MarkdownColumn.RIGHT_JUSTIFIED);
36+
// + "| --------------------: | -----------------------: | ------------------: | ---------------------: |\n");
37+
addPairwiseTableRow(2, 5, table);
38+
addPairwiseTableRow(3, 3, table);
39+
addPairwiseTableRow(3, 4, table);
40+
addPairwiseTableRow(4, 5, table);
41+
addPairwiseTableRow(5, 6, table);
42+
addPairwiseTableRow(9, 9, table);
43+
// added blank lines at beginning due to markdown snippets bug
44+
Approvals.verify(String.format("\n\n%s\n\n", table.toMarkdown()), new Options().forFile().withExtension("include.md"));
45+
}
46+
private String addPairwiseTableRow(int pCount, int variations, MarkdownTable table)
47+
{
48+
Object[] p = Range.get(1, variations);
49+
Pairwise pairwise = Pairwise.toPairWise(p, p, 3 <= pCount ? p : CombinationApprovals.EMPTY,
50+
4 <= pCount ? p : CombinationApprovals.EMPTY, 5 <= pCount ? p : CombinationApprovals.EMPTY,
51+
6 <= pCount ? p : CombinationApprovals.EMPTY, 7 <= pCount ? p : CombinationApprovals.EMPTY,
52+
8 <= pCount ? p : CombinationApprovals.EMPTY, 9 <= pCount ? p : CombinationApprovals.EMPTY);
53+
final List<Case> cases = pairwise.getCases();
54+
int totalPossibleSize = pairwise.getTotalPossibleCombinations();
55+
DecimalFormat df = new DecimalFormat("###,###,###");
56+
table.addRow(pCount, p.length, df.format(totalPossibleSize), cases.size());
57+
return null;
4458
}
4559
private String getPairwiseTableRow(int pCount, int variations)
4660
{

approvaltests-util/src/main/java/com/spun/util/MarkdownTableContents.java

Lines changed: 0 additions & 24 deletions
This file was deleted.

approvaltests-util/src/main/java/com/spun/util/MarkdownTableHeader.java

Lines changed: 0 additions & 23 deletions
This file was deleted.

approvaltests-util/src/main/java/com/spun/util/Resizable.java

Lines changed: 0 additions & 7 deletions
This file was deleted.

approvaltests-util/src/main/java/com/spun/util/StringUtils.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -615,4 +615,11 @@ public static String pad(String contents, int targetLength)
615615
}
616616
return contents;
617617
}
618+
619+
public static String padLeft(String contents, int targetLength) {
620+
while(contents.length() < targetLength) {
621+
contents = " " + contents;
622+
}
623+
return contents;
624+
}
618625
}

approvaltests-util/src/main/java/com/spun/util/MarkdownCompatible.java renamed to approvaltests-util/src/main/java/com/spun/util/markdown/MarkdownCompatible.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.spun.util;
1+
package com.spun.util.markdown;
22

33
public interface MarkdownCompatible
44
{
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.spun.util.markdown.table;
2+
3+
public enum MarkdownColumn {
4+
DEFAULT,
5+
RIGHT_JUSTIFIED
6+
}

approvaltests-util/src/main/java/com/spun/util/MarkdownTable.java renamed to approvaltests-util/src/main/java/com/spun/util/markdown/table/MarkdownTable.java

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
1-
package com.spun.util;
1+
package com.spun.util.markdown.table;
22

3+
import com.spun.util.markdown.MarkdownCompatible;
34
import org.lambda.functions.Function1;
45
import org.lambda.query.Queryable;
56

67
public class MarkdownTable implements MarkdownCompatible
78
{
8-
public Queryable<MarkdownTableElement> markdown = new Queryable<MarkdownTableElement>(
9-
MarkdownTableElement.class);
10-
private boolean fixedWidth = true;
11-
public void setColumnsConsistentWidth(boolean setting)
12-
{
9+
public Queryable<MarkdownTableElement> markdown = new Queryable<MarkdownTableElement>(MarkdownTableElement.class);
10+
private boolean fixedWidth = true;
11+
private MarkdownColumn columnProperties = MarkdownColumn.DEFAULT;
12+
13+
public void setColumnsConsistentWidth(boolean setting) {
1314
fixedWidth = setting;
1415
}
1516
public static <I, O> MarkdownTable create(I[] inputs, Function1<I, O> o, String column1, String column2)
@@ -57,32 +58,32 @@ public String toMarkdown()
5758
handleFixedWidth();
5859
return render(markdown);
5960
}
60-
private void handleFixedWidth()
61-
{
62-
if (!fixedWidth)
63-
{ return; }
61+
62+
private void handleFixedWidth() {
63+
if (!fixedWidth) { return; }
6464
Queryable<Queryable<MarkdownTableElement>> rows = markdown.split(e -> e == MarkdownTableElement.NEWLINE);
65-
for (int column = 0; column < rows.get(0).size(); column++)
66-
{
65+
for (int column = 0; column < rows.get(0).size(); column++) {
6766
int col = column;
68-
if (rows.get(0).get(column) instanceof MarkdownTableContents)
69-
{
70-
Queryable<Resizable> select = rows.select(e -> e.get(col)).where(e -> e instanceof Resizable)
71-
.select(e -> (Resizable) e);
72-
int length = select.max(e -> e.getLength()).getLength();
73-
select.forEach(e -> e.setPadding(length));
67+
if (rows.get(0).get(column) instanceof MarkdownTableContents) {
68+
Queryable<Resizable> select = rows
69+
.select(e -> e.get(col))
70+
.where(e -> e instanceof Resizable)
71+
.select(e -> (Resizable) e);
72+
select.forEach(e -> e.setJustification(columnProperties));
73+
int length = select.max(e -> e.getLength()).getLength();
74+
select.forEach(e -> e.setPadding(length));
7475
}
7576
}
7677
}
78+
7779
public static String printColumnHeaders(String... headers)
7880
{
7981
return render(constructColumnHeaders(headers));
8082
}
8183
public static Queryable<MarkdownTableElement> constructColumnHeaders(String... headers)
8284
{
8385
Queryable<MarkdownTableElement> row = constructRow(headers);
84-
for (int i = 0; i < headers.length; i++)
85-
{
86+
for (int i = 0; i < headers.length; i++) {
8687
row.add(MarkdownTableElement.DELIMITER);
8788
row.add(new MarkdownTableHeader());
8889
}
@@ -94,10 +95,11 @@ public static String printRow(Object... columns)
9495
{
9596
return render(constructRow(columns));
9697
}
97-
private static String render(Queryable<MarkdownTableElement> table)
98-
{
98+
99+
private static String render(Queryable<MarkdownTableElement> table) {
99100
return table.join("");
100101
}
102+
101103
public static Queryable<MarkdownTableElement> constructRow(Object... columns)
102104
{
103105
Queryable row = new Queryable(MarkdownTableElement.class);
@@ -110,4 +112,8 @@ public static Queryable<MarkdownTableElement> constructRow(Object... columns)
110112
row.add(MarkdownTableElement.NEWLINE);
111113
return row;
112114
}
115+
116+
public void setColumnProperties(MarkdownColumn columnProperties) {
117+
this.columnProperties = columnProperties;
118+
}
113119
}

0 commit comments

Comments
 (0)