Skip to content

Commit 15e455d

Browse files
all-your-base: add generator
1 parent 2783eaf commit 15e455d

File tree

3 files changed

+65
-99
lines changed

3 files changed

+65
-99
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using Xunit;
2+
3+
public class AllYourBaseTests
4+
{
5+
{{for testCase in testCases}}
6+
[Fact{{if !for.first}}(Skip = "Remove this Skip property to run this test"){{end}}]
7+
public void {{testCase.testMethodName}}()
8+
{
9+
{{if testCase.expected.error}}
10+
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase({{testCase.input.inputBase}}, {{testCase.input.digits}}, {{testCase.input.inputBase}}));
11+
{{else}}
12+
int[] digits = {{testCase.input.digits}};
13+
int[] expected = {{testCase.expected}};
14+
Assert.Equal(expected, AllYourBase.Rebase({{testCase.input.inputBase}}, digits, {{testCase.input.inputBase}}));
15+
{{end}}
16+
}
17+
{{end}}
18+
}
Lines changed: 46 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -1,206 +1,154 @@
1-
using System;
21
using Xunit;
32

43
public class AllYourBaseTests
54
{
65
[Fact]
76
public void Single_bit_one_to_decimal()
87
{
9-
var inputBase = 2;
10-
var digits = new[] { 1 };
11-
var outputBase = 10;
12-
var expected = new[] { 1 };
13-
Assert.Equal(expected, AllYourBase.Rebase(inputBase, digits, outputBase));
8+
int[] digits = [1];
9+
int[] expected = [1];
10+
Assert.Equal(expected, AllYourBase.Rebase(2, digits, 2));
1411
}
1512

1613
[Fact(Skip = "Remove this Skip property to run this test")]
1714
public void Binary_to_single_decimal()
1815
{
19-
var inputBase = 2;
20-
var digits = new[] { 1, 0, 1 };
21-
var outputBase = 10;
22-
var expected = new[] { 5 };
23-
Assert.Equal(expected, AllYourBase.Rebase(inputBase, digits, outputBase));
16+
int[] digits = [1, 0, 1];
17+
int[] expected = [5];
18+
Assert.Equal(expected, AllYourBase.Rebase(2, digits, 2));
2419
}
2520

2621
[Fact(Skip = "Remove this Skip property to run this test")]
2722
public void Single_decimal_to_binary()
2823
{
29-
var inputBase = 10;
30-
var digits = new[] { 5 };
31-
var outputBase = 2;
32-
var expected = new[] { 1, 0, 1 };
33-
Assert.Equal(expected, AllYourBase.Rebase(inputBase, digits, outputBase));
24+
int[] digits = [5];
25+
int[] expected = [1, 0, 1];
26+
Assert.Equal(expected, AllYourBase.Rebase(10, digits, 10));
3427
}
3528

3629
[Fact(Skip = "Remove this Skip property to run this test")]
3730
public void Binary_to_multiple_decimal()
3831
{
39-
var inputBase = 2;
40-
var digits = new[] { 1, 0, 1, 0, 1, 0 };
41-
var outputBase = 10;
42-
var expected = new[] { 4, 2 };
43-
Assert.Equal(expected, AllYourBase.Rebase(inputBase, digits, outputBase));
32+
int[] digits = [1, 0, 1, 0, 1, 0];
33+
int[] expected = [4, 2];
34+
Assert.Equal(expected, AllYourBase.Rebase(2, digits, 2));
4435
}
4536

4637
[Fact(Skip = "Remove this Skip property to run this test")]
4738
public void Decimal_to_binary()
4839
{
49-
var inputBase = 10;
50-
var digits = new[] { 4, 2 };
51-
var outputBase = 2;
52-
var expected = new[] { 1, 0, 1, 0, 1, 0 };
53-
Assert.Equal(expected, AllYourBase.Rebase(inputBase, digits, outputBase));
40+
int[] digits = [4, 2];
41+
int[] expected = [1, 0, 1, 0, 1, 0];
42+
Assert.Equal(expected, AllYourBase.Rebase(10, digits, 10));
5443
}
5544

5645
[Fact(Skip = "Remove this Skip property to run this test")]
5746
public void Trinary_to_hexadecimal()
5847
{
59-
var inputBase = 3;
60-
var digits = new[] { 1, 1, 2, 0 };
61-
var outputBase = 16;
62-
var expected = new[] { 2, 10 };
63-
Assert.Equal(expected, AllYourBase.Rebase(inputBase, digits, outputBase));
48+
int[] digits = [1, 1, 2, 0];
49+
int[] expected = [2, 10];
50+
Assert.Equal(expected, AllYourBase.Rebase(3, digits, 3));
6451
}
6552

6653
[Fact(Skip = "Remove this Skip property to run this test")]
6754
public void Hexadecimal_to_trinary()
6855
{
69-
var inputBase = 16;
70-
var digits = new[] { 2, 10 };
71-
var outputBase = 3;
72-
var expected = new[] { 1, 1, 2, 0 };
73-
Assert.Equal(expected, AllYourBase.Rebase(inputBase, digits, outputBase));
56+
int[] digits = [2, 10];
57+
int[] expected = [1, 1, 2, 0];
58+
Assert.Equal(expected, AllYourBase.Rebase(16, digits, 16));
7459
}
7560

7661
[Fact(Skip = "Remove this Skip property to run this test")]
77-
public void Number_15_bit_integer()
62+
public void Fifteen_bit_integer()
7863
{
79-
var inputBase = 97;
80-
var digits = new[] { 3, 46, 60 };
81-
var outputBase = 73;
82-
var expected = new[] { 6, 10, 45 };
83-
Assert.Equal(expected, AllYourBase.Rebase(inputBase, digits, outputBase));
64+
int[] digits = [3, 46, 60];
65+
int[] expected = [6, 10, 45];
66+
Assert.Equal(expected, AllYourBase.Rebase(97, digits, 97));
8467
}
8568

8669
[Fact(Skip = "Remove this Skip property to run this test")]
8770
public void Empty_list()
8871
{
89-
var inputBase = 2;
90-
var digits = Array.Empty<int>();
91-
var outputBase = 10;
92-
var expected = new[] { 0 };
93-
Assert.Equal(expected, AllYourBase.Rebase(inputBase, digits, outputBase));
72+
int[] digits = [];
73+
int[] expected = [0];
74+
Assert.Equal(expected, AllYourBase.Rebase(2, digits, 2));
9475
}
9576

9677
[Fact(Skip = "Remove this Skip property to run this test")]
9778
public void Single_zero()
9879
{
99-
var inputBase = 10;
100-
var digits = new[] { 0 };
101-
var outputBase = 2;
102-
var expected = new[] { 0 };
103-
Assert.Equal(expected, AllYourBase.Rebase(inputBase, digits, outputBase));
80+
int[] digits = [0];
81+
int[] expected = [0];
82+
Assert.Equal(expected, AllYourBase.Rebase(10, digits, 10));
10483
}
10584

10685
[Fact(Skip = "Remove this Skip property to run this test")]
10786
public void Multiple_zeros()
10887
{
109-
var inputBase = 10;
110-
var digits = new[] { 0, 0, 0 };
111-
var outputBase = 2;
112-
var expected = new[] { 0 };
113-
Assert.Equal(expected, AllYourBase.Rebase(inputBase, digits, outputBase));
88+
int[] digits = [0, 0, 0];
89+
int[] expected = [0];
90+
Assert.Equal(expected, AllYourBase.Rebase(10, digits, 10));
11491
}
11592

11693
[Fact(Skip = "Remove this Skip property to run this test")]
11794
public void Leading_zeros()
11895
{
119-
var inputBase = 7;
120-
var digits = new[] { 0, 6, 0 };
121-
var outputBase = 10;
122-
var expected = new[] { 4, 2 };
123-
Assert.Equal(expected, AllYourBase.Rebase(inputBase, digits, outputBase));
96+
int[] digits = [0, 6, 0];
97+
int[] expected = [4, 2];
98+
Assert.Equal(expected, AllYourBase.Rebase(7, digits, 7));
12499
}
125100

126101
[Fact(Skip = "Remove this Skip property to run this test")]
127102
public void Input_base_is_one()
128103
{
129-
var inputBase = 1;
130-
var digits = new[] { 0 };
131-
var outputBase = 10;
132-
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase(inputBase, digits, outputBase));
104+
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase(1, [0], 1));
133105
}
134106

135107
[Fact(Skip = "Remove this Skip property to run this test")]
136108
public void Input_base_is_zero()
137109
{
138-
var inputBase = 0;
139-
var digits = Array.Empty<int>();
140-
var outputBase = 10;
141-
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase(inputBase, digits, outputBase));
110+
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase(0, [], 0));
142111
}
143112

144113
[Fact(Skip = "Remove this Skip property to run this test")]
145114
public void Input_base_is_negative()
146115
{
147-
var inputBase = -2;
148-
var digits = new[] { 1 };
149-
var outputBase = 10;
150-
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase(inputBase, digits, outputBase));
116+
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase(-2, [1], -2));
151117
}
152118

153119
[Fact(Skip = "Remove this Skip property to run this test")]
154120
public void Negative_digit()
155121
{
156-
var inputBase = 2;
157-
var digits = new[] { 1, -1, 1, 0, 1, 0 };
158-
var outputBase = 10;
159-
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase(inputBase, digits, outputBase));
122+
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase(2, [1, -1, 1, 0, 1, 0], 2));
160123
}
161124

162125
[Fact(Skip = "Remove this Skip property to run this test")]
163126
public void Invalid_positive_digit()
164127
{
165-
var inputBase = 2;
166-
var digits = new[] { 1, 2, 1, 0, 1, 0 };
167-
var outputBase = 10;
168-
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase(inputBase, digits, outputBase));
128+
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase(2, [1, 2, 1, 0, 1, 0], 2));
169129
}
170130

171131
[Fact(Skip = "Remove this Skip property to run this test")]
172132
public void Output_base_is_one()
173133
{
174-
var inputBase = 2;
175-
var digits = new[] { 1, 0, 1, 0, 1, 0 };
176-
var outputBase = 1;
177-
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase(inputBase, digits, outputBase));
134+
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase(2, [1, 0, 1, 0, 1, 0], 2));
178135
}
179136

180137
[Fact(Skip = "Remove this Skip property to run this test")]
181138
public void Output_base_is_zero()
182139
{
183-
var inputBase = 10;
184-
var digits = new[] { 7 };
185-
var outputBase = 0;
186-
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase(inputBase, digits, outputBase));
140+
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase(10, [7], 10));
187141
}
188142

189143
[Fact(Skip = "Remove this Skip property to run this test")]
190144
public void Output_base_is_negative()
191145
{
192-
var inputBase = 2;
193-
var digits = new[] { 1 };
194-
var outputBase = -7;
195-
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase(inputBase, digits, outputBase));
146+
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase(2, [1], 2));
196147
}
197148

198149
[Fact(Skip = "Remove this Skip property to run this test")]
199150
public void Both_bases_are_negative()
200151
{
201-
var inputBase = -2;
202-
var digits = new[] { 1 };
203-
var outputBase = -7;
204-
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase(inputBase, digits, outputBase));
152+
Assert.Throws<ArgumentException>(() => AllYourBase.Rebase(-2, [1], -2));
205153
}
206154
}

generators/Naming.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ private static string Transform(string str, int index) =>
1717
? i.ToWords()
1818
: str.Dehumanize();
1919

20-
private static IEnumerable<string> Words(this string str) => str.Split(' ');
20+
private static IEnumerable<string> Words(this string str) => str.Split(' ', '-');
2121
private static string Unwords(this IEnumerable<string> strs) => string.Join(' ', strs);
2222
}

0 commit comments

Comments
 (0)