trackler 2.0.8.33 → 2.0.8.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/csharp/exercises/food-chain/Example.cs +2 -2
  4. data/tracks/csharp/exercises/food-chain/FoodChain.cs +2 -2
  5. data/tracks/csharp/exercises/food-chain/FoodChainTest.cs +150 -73
  6. data/tracks/csharp/exercises/luhn/LuhnTest.cs +5 -8
  7. data/tracks/csharp/generators/Data/CanonicalDataValue.cs +10 -0
  8. data/tracks/csharp/generators/Exercises/FoodChainExercise.cs +27 -0
  9. data/tracks/csharp/generators/Exercises/NthPrimeExercise.cs +1 -3
  10. data/tracks/csharp/generators/Methods/EqualityTestMethodGenerator.cs +25 -1
  11. data/tracks/csharp/generators/Methods/TestMethodGenerator.cs +16 -4
  12. data/tracks/csharp/generators/Methods/TestMethodOptions.cs +1 -0
  13. data/tracks/csharp/generators/Methods/TestMethodRenderer.cs +15 -7
  14. data/tracks/csharp/generators/Program.cs +2 -0
  15. data/tracks/java/exercises/difference-of-squares/src/example/java/{Difference.java → DifferenceOfSquaresCalculator.java} +4 -4
  16. data/tracks/java/exercises/difference-of-squares/src/main/java/DifferenceOfSquaresCalculator.java +5 -0
  17. data/tracks/java/exercises/difference-of-squares/src/test/java/{DifferenceTest.java → DifferenceOfSquaresCalculatorTest.java} +18 -11
  18. data/tracks/java/exercises/sum-of-multiples/src/example/java/SumOfMultiples.java +17 -9
  19. data/tracks/java/exercises/sum-of-multiples/src/test/java/SumOfMultiplesTest.java +73 -88
  20. data/tracks/perl6/.travis.yml +3 -0
  21. data/tracks/python/exercises/bob/bob_test.py +47 -71
  22. data/tracks/python/exercises/leap/leap_test.py +10 -11
  23. data/tracks/python/exercises/pangram/pangram_test.py +16 -16
  24. data/tracks/python/exercises/prime-factors/prime_factors_test.py +11 -21
  25. data/tracks/python/exercises/sieve/sieve_test.py +32 -24
  26. data/tracks/swift/.gitignore +3 -0
  27. data/tracks/swift/.swiftlint.yml +4 -2
  28. data/tracks/swift/exercises/kindergarten-garden/Sources/KindergartenGardenExample.swift +4 -4
  29. data/tracks/swift/exercises/kindergarten-garden/Tests/KindergartenGardenTests/KindergartenGardenTests.swift +25 -25
  30. data/tracks/swift/exercises/meetup/Sources/MeetupExample.swift +6 -6
  31. data/tracks/swift/exercises/poker/Sources/PokerExample.swift +12 -14
  32. data/tracks/swift/exercises/robot-simulator/Sources/RobotSimulatorExample.swift +6 -6
  33. data/tracks/swift/exercises/robot-simulator/Tests/RobotSimulatorTests/RobotSimulatorTests.swift +4 -4
  34. metadata +7 -5
  35. data/tracks/java/exercises/difference-of-squares/src/main/java/Difference.java +0 -5
@@ -1,4 +1,5 @@
1
1
  using System.Collections.Generic;
2
+ using System.Linq;
2
3
  using Humanizer;
3
4
  using To = Generators.Helpers.To;
4
5
 
@@ -37,7 +38,7 @@ protected virtual string TestedMethod
37
38
 
38
39
  protected virtual object Input =>
39
40
  TestMethodData.Options.FormatInput
40
- ? FormatValue(InputValue)
41
+ ? FormatInputValue(InputValue)
41
42
  : InputValue;
42
43
 
43
44
  protected virtual object Expected =>
@@ -45,9 +46,9 @@ protected virtual string TestedMethod
45
46
  ? FormatValue(TestMethodData.CanonicalDataCase.Expected)
46
47
  : TestMethodData.CanonicalDataCase.Expected;
47
48
 
48
- protected virtual object InputValue
49
- => TestMethodData.Options.InputProperty == null
50
- ? TestMethodData.CanonicalDataCase.Input
49
+ protected virtual object InputValue =>
50
+ TestMethodData.Options.InputProperty == null
51
+ ? TestMethodData.CanonicalDataCase.Input
51
52
  : TestMethodData.CanonicalDataCase.Data[TestMethodData.Options.InputProperty];
52
53
 
53
54
  protected virtual object FormatValue(object val)
@@ -60,5 +61,16 @@ protected virtual object FormatValue(object val)
60
61
  return val;
61
62
  }
62
63
  }
64
+
65
+ protected virtual object FormatInputValue(object val)
66
+ {
67
+ switch (val)
68
+ {
69
+ case IEnumerable<object> inputs when !(val is string):
70
+ return string.Join(", ", inputs.Select(FormatValue));
71
+ default:
72
+ return FormatValue(val);
73
+ }
74
+ }
63
75
  }
64
76
  }
@@ -7,6 +7,7 @@ public class TestMethodOptions
7
7
  public string InputProperty { get; set; }
8
8
  public bool FormatInput { get; set; } = true;
9
9
  public bool FormatExpected { get; set; } = true;
10
+ public bool UseVariableForExpected { get; set; } = false;
10
11
  public Type ExceptionType { get; set; } = typeof(ArgumentException);
11
12
  public TestedMethodType TestedMethodType { get; set; } = TestedMethodType.Static;
12
13
  }
@@ -1,18 +1,26 @@
1
- namespace Generators.Methods
1
+ using System.Linq;
2
+
3
+ namespace Generators.Methods
2
4
  {
3
5
  public static class TestMethodRenderer
4
6
  {
7
+ private const string Tab = " ";
8
+
5
9
  private const string TestMethodTemplate =
6
- @" [Fact{Skip}]
7
- public void {Name}()
8
- {
9
- {Body}
10
- }";
10
+ @"{Tab}[Fact{Skip}]
11
+ {Tab}public void {Name}()
12
+ {Tab}{
13
+ {Body}
14
+ {Tab}}";
11
15
 
12
16
  public static string Render(TestMethod testMethod) =>
13
17
  TestMethodTemplate
18
+ .Replace("{Tab}", Tab)
14
19
  .Replace("{Name}", testMethod.MethodName)
15
- .Replace("{Body}", testMethod.Body)
20
+ .Replace("{Body}", RenderBody(testMethod))
16
21
  .Replace("{Skip}", testMethod.Index == 0 ? "" : "(Skip = \"Remove to run test\")");
22
+
23
+ private static string RenderBody(TestMethod testMethod)
24
+ => string.Join("\n", testMethod.Body.Split('\n').Select(line => $"{Tab}{Tab}{line}"));
17
25
  }
18
26
  }
@@ -25,6 +25,8 @@ private static void GenerateAll()
25
25
  {
26
26
  Log.Information("Start generating tests...");
27
27
 
28
+ TestFileGenerator.Generate(new FoodChainExercise());
29
+
28
30
  foreach (var exercise in new ExerciseCollection())
29
31
  TestFileGenerator.Generate(exercise);
30
32
 
@@ -1,19 +1,19 @@
1
1
  import java.util.stream.IntStream;
2
2
 
3
- public final class Difference {
3
+ public final class DifferenceOfSquaresCalculator {
4
4
 
5
- public static int computeSquareOfSumTo(final int input) {
5
+ public int computeSquareOfSumTo(final int input) {
6
6
  final int sum = input * (input + 1) / 2;
7
7
  return (int) Math.pow(sum, 2);
8
8
  }
9
9
 
10
- public static int computeSumOfSquaresTo(final int input) {
10
+ public int computeSumOfSquaresTo(final int input) {
11
11
  return IntStream.rangeClosed(1, input)
12
12
  .map(i -> (int) Math.pow(i, 2))
13
13
  .sum();
14
14
  }
15
15
 
16
- public static int betweenSquareOfSumAndSumOfSquaresTo(final int input) {
16
+ public int computeDifferenceOfSquares(final int input) {
17
17
  return computeSquareOfSumTo(input) - computeSumOfSquaresTo(input);
18
18
  }
19
19
 
@@ -0,0 +1,5 @@
1
+ public final class DifferenceOfSquaresCalculator {
2
+
3
+
4
+
5
+ }
@@ -1,14 +1,21 @@
1
+ import org.junit.Before;
1
2
  import org.junit.Ignore;
2
3
  import org.junit.Test;
3
4
 
4
5
  import static org.junit.Assert.assertEquals;
5
6
 
6
- public final class DifferenceTest {
7
+ public final class DifferenceOfSquaresCalculatorTest {
8
+ private DifferenceOfSquaresCalculator calculator;
9
+
10
+ @Before
11
+ public void setUp() {
12
+ calculator = new DifferenceOfSquaresCalculator();
13
+ }
7
14
 
8
15
  @Test
9
16
  public void testSquareOfSum5() {
10
17
  final int expected = 225;
11
- final int actual = Difference.computeSquareOfSumTo(5);
18
+ final int actual = calculator.computeSquareOfSumTo(5);
12
19
  assertEquals(expected, actual);
13
20
  }
14
21
 
@@ -16,7 +23,7 @@ public final class DifferenceTest {
16
23
  @Test
17
24
  public void testSquareOfSum10() {
18
25
  final int expected = 3025;
19
- final int actual = Difference.computeSquareOfSumTo(10);
26
+ final int actual = calculator.computeSquareOfSumTo(10);
20
27
  assertEquals(expected, actual);
21
28
  }
22
29
 
@@ -24,7 +31,7 @@ public final class DifferenceTest {
24
31
  @Test
25
32
  public void testSquareOfSum100() {
26
33
  final int expected = 25502500;
27
- final int actual = Difference.computeSquareOfSumTo(100);
34
+ final int actual = calculator.computeSquareOfSumTo(100);
28
35
  assertEquals(expected, actual);
29
36
  }
30
37
 
@@ -32,7 +39,7 @@ public final class DifferenceTest {
32
39
  @Test
33
40
  public void testSumOfSquares5() {
34
41
  final int expected = 55;
35
- final int actual = Difference.computeSumOfSquaresTo(5);
42
+ final int actual = calculator.computeSumOfSquaresTo(5);
36
43
  assertEquals(expected, actual);
37
44
  }
38
45
 
@@ -40,7 +47,7 @@ public final class DifferenceTest {
40
47
  @Test
41
48
  public void testSumOfSquares10() {
42
49
  final int expected = 385;
43
- final int actual = Difference.computeSumOfSquaresTo(10);
50
+ final int actual = calculator.computeSumOfSquaresTo(10);
44
51
  assertEquals(expected, actual);
45
52
  }
46
53
 
@@ -48,7 +55,7 @@ public final class DifferenceTest {
48
55
  @Test
49
56
  public void testSumOfSquares100() {
50
57
  final int expected = 338350;
51
- final int actual = Difference.computeSumOfSquaresTo(100);
58
+ final int actual = calculator.computeSumOfSquaresTo(100);
52
59
  assertEquals(expected, actual);
53
60
  }
54
61
 
@@ -56,7 +63,7 @@ public final class DifferenceTest {
56
63
  @Test
57
64
  public void testDifferenceOfSquares0() {
58
65
  final int expected = 0;
59
- final int actual = Difference.betweenSquareOfSumAndSumOfSquaresTo(0);
66
+ final int actual = calculator.computeDifferenceOfSquares(0);
60
67
  assertEquals(expected, actual);
61
68
  }
62
69
 
@@ -64,7 +71,7 @@ public final class DifferenceTest {
64
71
  @Test
65
72
  public void testDifferenceOfSquares5() {
66
73
  final int expected = 170;
67
- final int actual = Difference.betweenSquareOfSumAndSumOfSquaresTo(5);
74
+ final int actual = calculator.computeDifferenceOfSquares(5);
68
75
  assertEquals(expected, actual);
69
76
  }
70
77
 
@@ -72,7 +79,7 @@ public final class DifferenceTest {
72
79
  @Test
73
80
  public void testDifferenceOfSquares10() {
74
81
  final int expected = 2640;
75
- final int actual = Difference.betweenSquareOfSumAndSumOfSquaresTo(10);
82
+ final int actual = calculator.computeDifferenceOfSquares(10);
76
83
  assertEquals(expected, actual);
77
84
  }
78
85
 
@@ -80,7 +87,7 @@ public final class DifferenceTest {
80
87
  @Test
81
88
  public void testDifferenceOfSquares100() {
82
89
  final int expected = 25164150;
83
- final int actual = Difference.betweenSquareOfSumAndSumOfSquaresTo(100);
90
+ final int actual = calculator.computeDifferenceOfSquares(100);
84
91
  assertEquals(expected, actual);
85
92
  }
86
93
 
@@ -1,26 +1,34 @@
1
1
  public class SumOfMultiples {
2
-
3
-
4
- public static int sum(int number, int[] set) {
5
-
2
+ private final int sum;
3
+
4
+ public SumOfMultiples(int number, int[] set) {
5
+ sum = calculateSum(number, set);
6
+ }
7
+
8
+ public int getSum() {
9
+ return sum;
10
+ }
11
+
12
+ private int calculateSum(int number, int[] set) {
13
+
6
14
  int sum = 0;
7
15
  int count = 0;
8
-
16
+
9
17
  for (int i = 1; i < number; i++) {
10
-
18
+
11
19
  for (int j = 0; j < set.length; j++) {
12
20
  if (i % set[j] == 0) {
13
21
  count++;
14
22
  }
15
23
  }
16
-
24
+
17
25
  if (count > 0) {
18
26
  sum = sum + i;
19
27
  count = 0;
20
28
  }
21
29
  }
22
-
30
+
23
31
  return sum;
24
32
  }
25
-
33
+
26
34
  }
@@ -1,175 +1,160 @@
1
- import static org.junit.Assert.*;
2
-
3
1
  import org.junit.Ignore;
4
2
  import org.junit.Test;
5
3
 
4
+ import static org.junit.Assert.*;
5
+
6
6
  public class SumOfMultiplesTest {
7
-
8
-
7
+
9
8
  @Test
10
9
  public void testSumOfMultiplesOf3and4UpToOne() {
11
-
10
+
12
11
  int[] set = {
13
- 3,
14
- 5
12
+ 3,
13
+ 5
15
14
  };
16
- int output = SumOfMultiples.sum(1, set);
15
+ int output = new SumOfMultiples(1, set).getSum();
17
16
  assertEquals(0, output);
18
-
17
+
19
18
  }
20
-
21
-
19
+
22
20
  @Test
23
21
  @Ignore
24
22
  public void testSumOfMultiplesOf3and5UpToFour() {
25
-
23
+
26
24
  int[] set = {
27
- 3,
28
- 5
25
+ 3,
26
+ 5
29
27
  };
30
- int output = SumOfMultiples.sum(4, set);
28
+ int output = new SumOfMultiples(4, set).getSum();
31
29
  assertEquals(3, output);
32
-
30
+
33
31
  }
34
-
35
-
32
+
36
33
  @Test
37
34
  @Ignore
38
35
  public void testSumOfMultiplesOf3and5UpToTen() {
39
-
36
+
40
37
  int[] set = {
41
- 3,
42
- 5
38
+ 3,
39
+ 5
43
40
  };
44
- int output = SumOfMultiples.sum(10, set);
41
+ int output = new SumOfMultiples(10, set).getSum();
45
42
  assertEquals(23, output);
46
-
43
+
47
44
  }
48
-
49
-
45
+
50
46
  @Test
51
47
  @Ignore
52
48
  public void testSumOfMultiplesOf3and5UpToOneHundred() {
53
-
49
+
54
50
  int[] set = {
55
- 3,
56
- 5
51
+ 3,
52
+ 5
57
53
  };
58
- int output = SumOfMultiples.sum(100, set);
54
+ int output = new SumOfMultiples(100, set).getSum();
59
55
  assertEquals(2318, output);
60
-
56
+
61
57
  }
62
-
63
-
58
+
64
59
  @Test
65
60
  @Ignore
66
61
  public void testSumOfMultiplesOf3and5UpToOneThousand() {
67
-
62
+
68
63
  int[] set = {
69
- 3,
70
- 5
64
+ 3,
65
+ 5
71
66
  };
72
- int output = SumOfMultiples.sum(1000, set);
67
+ int output = new SumOfMultiples(1000, set).getSum();
73
68
  assertEquals(233168, output);
74
-
69
+
75
70
  }
76
-
77
-
71
+
78
72
  @Test
79
73
  @Ignore
80
74
  public void testSumOfMultiplesOf7and13and17UpToTwenty() {
81
-
75
+
82
76
  int[] set = {
83
- 7,
84
- 13,
85
- 17
77
+ 7,
78
+ 13,
79
+ 17
86
80
  };
87
- int output = SumOfMultiples.sum(20, set);
81
+ int output = new SumOfMultiples(20, set).getSum();
88
82
  assertEquals(51, output);
89
-
83
+
90
84
  }
91
-
92
-
85
+
93
86
  @Test
94
87
  @Ignore
95
88
  public void testSumOfMultiplesOf4and6UpToFifteen() {
96
-
89
+
97
90
  int[] set = {
98
- 4,
99
- 6
91
+ 4,
92
+ 6
100
93
  };
101
- int output = SumOfMultiples.sum(15, set);
94
+ int output = new SumOfMultiples(15, set).getSum();
102
95
  assertEquals(30, output);
103
-
96
+
104
97
  }
105
-
106
-
98
+
107
99
  @Test
108
100
  @Ignore
109
101
  public void testSumOfMultiplesOf5and6and8UpToOneHundredFifty() {
110
-
102
+
111
103
  int[] set = {
112
- 5,
113
- 6,
114
- 8
104
+ 5,
105
+ 6,
106
+ 8
115
107
  };
116
- int output = SumOfMultiples.sum(150, set);
108
+ int output = new SumOfMultiples(150, set).getSum();
117
109
  assertEquals(4419, output);
118
-
110
+
119
111
  }
120
-
121
-
112
+
122
113
  @Test
123
114
  @Ignore
124
115
  public void testSumOfMultiplesOf5and25UpToTwoHundredSeventyFive() {
125
-
116
+
126
117
  int[] set = {
127
- 5,
128
- 25
118
+ 5,
119
+ 25
129
120
  };
130
- int output = SumOfMultiples.sum(51, set);
121
+ int output = new SumOfMultiples(51, set).getSum();
131
122
  assertEquals(275, output);
132
-
123
+
133
124
  }
134
-
135
-
125
+
136
126
  @Test
137
127
  @Ignore
138
128
  public void testSumOfMultiplesOf43and47UpToTenThousand() {
139
-
129
+
140
130
  int[] set = {
141
- 43,
142
- 47
131
+ 43,
132
+ 47
143
133
  };
144
- int output = SumOfMultiples.sum(10000, set);
134
+ int output = new SumOfMultiples(10000, set).getSum();
145
135
  assertEquals(2203160, output);
146
-
136
+
147
137
  }
148
-
149
-
138
+
150
139
  @Test
151
140
  @Ignore
152
141
  public void testSumOfMultiplesOfOneUpToOneHundred() {
153
-
142
+
154
143
  int[] set = {
155
- 1
144
+ 1
156
145
  };
157
- int output = SumOfMultiples.sum(100, set);
146
+ int output = new SumOfMultiples(100, set).getSum();
158
147
  assertEquals(4950, output);
159
-
148
+
160
149
  }
161
-
162
-
150
+
163
151
  @Test
164
152
  @Ignore
165
153
  public void testSumOfMultiplesOfNoneUpToTenThousand() {
166
-
154
+
167
155
  int[] set = {};
168
- int output = SumOfMultiples.sum(10000, set);
156
+ int output = new SumOfMultiples(10000, set).getSum();
169
157
  assertEquals(0, output);
170
-
158
+
171
159
  }
172
-
173
-
174
-
175
160
  }