trackler 2.0.8.33 → 2.0.8.34

Sign up to get free protection for your applications and to get access to all the features.
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
  }