trackler 2.1.0.27 → 2.1.0.28

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/common/CONTRIBUTING.md +9 -349
  3. data/common/exercises/forth/canonical-data.json +1 -7
  4. data/lib/trackler/version.rb +1 -1
  5. data/tracks/bash/config.json +5 -0
  6. data/tracks/bash/exercises/anagram/anagram_tests.sh +99 -0
  7. data/tracks/bash/exercises/anagram/example.sh +23 -0
  8. data/tracks/delphi/config.json +8 -1
  9. data/tracks/delphi/exercises/two-fer/twofer.dpr +60 -0
  10. data/tracks/delphi/exercises/two-fer/utwoferExample.pas +17 -0
  11. data/tracks/delphi/exercises/two-fer/utwoferTest.pas +71 -0
  12. data/tracks/dlang/README.md +9 -5
  13. data/tracks/dlang/bin/test-exercise +14 -5
  14. data/tracks/dlang/docs/INSTALLATION.md +24 -0
  15. data/tracks/dlang/docs/TESTS.md +6 -6
  16. data/tracks/dlang/exercises/bob/dub.sdl +2 -0
  17. data/tracks/dlang/exercises/bob/{bob_example.d → example/bob.d} +0 -5
  18. data/tracks/dlang/exercises/bob/{bob.d → source/bob.d} +0 -5
  19. data/tracks/dlang/exercises/circular-buffer/dub.sdl +2 -0
  20. data/tracks/dlang/exercises/circular-buffer/{circular_buffer_example.d → example/circular_buffer.d} +0 -5
  21. data/tracks/dlang/exercises/circular-buffer/{circular_buffer.d → source/circular_buffer.d} +0 -5
  22. data/tracks/dlang/exercises/crypto-square/dub.sdl +2 -0
  23. data/tracks/dlang/exercises/crypto-square/{crypto_square_example.d → example/crypto_square.d} +0 -5
  24. data/tracks/dlang/exercises/crypto-square/{crypto_square.d → source/crypto_square.d} +0 -5
  25. data/tracks/dlang/exercises/difference-of-squares/dub.sdl +2 -0
  26. data/tracks/dlang/exercises/difference-of-squares/{difference_of_squares_example.d → example/difference_of_squares.d} +0 -2
  27. data/tracks/dlang/exercises/difference-of-squares/{difference_of_squares.d → source/difference_of_squares.d} +0 -2
  28. data/tracks/dlang/exercises/etl/dub.sdl +2 -0
  29. data/tracks/dlang/exercises/etl/{etl_example.d → example/etl.d} +0 -5
  30. data/tracks/dlang/exercises/etl/{etl.d → source/etl.d} +0 -5
  31. data/tracks/dlang/exercises/gigasecond/dub.sdl +2 -0
  32. data/tracks/dlang/exercises/gigasecond/{gigasecond_example.d → example/gigasecond.d} +0 -2
  33. data/tracks/dlang/exercises/gigasecond/{gigasecond.d → source/gigasecond.d} +0 -2
  34. data/tracks/dlang/exercises/hamming/dub.sdl +2 -0
  35. data/tracks/dlang/exercises/hamming/{hamming_example.d → example/hamming.d} +0 -5
  36. data/tracks/dlang/exercises/hamming/{hamming.d → source/hamming.d} +0 -5
  37. data/tracks/dlang/exercises/hello-world/dub.sdl +2 -0
  38. data/tracks/dlang/exercises/hello-world/{hello_world_example.d → example/hello_world.d} +0 -2
  39. data/tracks/dlang/exercises/hello-world/{hello_world.d → source/hello_world.d} +0 -0
  40. data/tracks/dlang/exercises/leap/dub.sdl +2 -0
  41. data/tracks/dlang/exercises/leap/{leap_example.d → example/leap.d} +0 -2
  42. data/tracks/dlang/exercises/leap/{leap.d → source/leap.d} +0 -2
  43. data/tracks/dlang/exercises/nucleotide-count/dub.sdl +2 -0
  44. data/tracks/dlang/exercises/nucleotide-count/{nucleotide_count_example.d → example/nucleotide_count.d} +0 -4
  45. data/tracks/dlang/exercises/nucleotide-count/{nucleotide_count.d → source/nucleotide_count.d} +0 -4
  46. data/tracks/dlang/exercises/pangram/dub.sdl +2 -0
  47. data/tracks/dlang/exercises/pangram/{pangram_example.d → example/pangram.d} +0 -2
  48. data/tracks/dlang/exercises/pangram/{pangram.d → source/pangram.d} +0 -2
  49. data/tracks/dlang/exercises/raindrops/dub.sdl +2 -0
  50. data/tracks/dlang/exercises/raindrops/{raindrops_example.d → example/raindrops.d} +0 -2
  51. data/tracks/dlang/exercises/raindrops/{raindrops.d → source/raindrops.d} +0 -2
  52. data/tracks/dlang/exercises/react/dub.sdl +2 -0
  53. data/tracks/dlang/exercises/react/{react_example.d → example/react.d} +0 -2
  54. data/tracks/dlang/exercises/react/{react.d → source/react.d} +0 -2
  55. data/tracks/dlang/exercises/rna-transcription/dub.sdl +2 -0
  56. data/tracks/dlang/exercises/rna-transcription/{rna_transcription_example.d → example/rna_transcription.d} +0 -2
  57. data/tracks/dlang/exercises/rna-transcription/{rna_transcription.d → source/rna_transcription.d} +0 -2
  58. data/tracks/dlang/exercises/robot-name/dub.sdl +2 -0
  59. data/tracks/dlang/exercises/robot-name/{robot_name_example.d → example/robot_name.d} +0 -5
  60. data/tracks/dlang/exercises/robot-name/{robot_name.d → source/robot_name.d} +0 -4
  61. data/tracks/dlang/exercises/roman-numerals/dub.sdl +2 -0
  62. data/tracks/dlang/exercises/roman-numerals/{roman_numerals_example.d → example/roman_numerals.d} +0 -4
  63. data/tracks/dlang/exercises/roman-numerals/{roman_numerals.d → source/roman_numerals.d} +0 -4
  64. data/tracks/dlang/exercises/series/dub.sdl +2 -0
  65. data/tracks/dlang/exercises/series/{series_example.d → example/series.d} +0 -5
  66. data/tracks/dlang/exercises/series/{series.d → source/series.d} +0 -5
  67. data/tracks/dlang/exercises/triangle/dub.sdl +2 -0
  68. data/tracks/dlang/exercises/triangle/{triangle_example.d → example/triangle.d} +0 -5
  69. data/tracks/dlang/exercises/triangle/{triangle.d → source/triangle.d} +0 -5
  70. data/tracks/elisp/.github/stale.yml +0 -0
  71. data/tracks/elisp/exercises/grains/grains-test.el +12 -12
  72. data/tracks/elisp/exercises/robot-name/robot-name-test.el +8 -19
  73. data/tracks/elisp/exercises/word-count/word-count-test.el +27 -27
  74. data/tracks/fortran/Makefile +3 -2
  75. data/tracks/fortran/config.json +21 -2
  76. data/tracks/fortran/exercises/difference-of-squares/difference_of_squares.fun +42 -0
  77. data/tracks/fortran/exercises/difference-of-squares/example.f90 +35 -0
  78. data/tracks/fortran/exercises/{hello_world → hello-world}/example.f90 +0 -0
  79. data/tracks/fortran/exercises/{hello_world → hello-world}/hello_world.fun +0 -0
  80. data/tracks/fortran/exercises/raindrops/example.f90 +26 -0
  81. data/tracks/fortran/exercises/raindrops/raindrops.fun +78 -0
  82. data/tracks/fortran/exercises/rna-transcription/example.f90 +27 -0
  83. data/tracks/fortran/exercises/rna-transcription/rna_transcription.fun +38 -0
  84. data/tracks/go/exercises/acronym/.meta/gen.go +51 -0
  85. data/tracks/go/exercises/acronym/acronym_test.go +1 -15
  86. data/tracks/go/exercises/acronym/cases_test.go +37 -0
  87. data/tracks/go/exercises/acronym/example.go +1 -1
  88. data/tracks/go/exercises/secret-handshake/.meta/gen.go +49 -0
  89. data/tracks/go/exercises/secret-handshake/cases_test.go +24 -0
  90. data/tracks/go/exercises/secret-handshake/example.go +1 -1
  91. data/tracks/go/exercises/secret-handshake/secret_handshake_test.go +1 -17
  92. data/tracks/java/config.json +23 -23
  93. data/tracks/java/exercises/book-store/src/example/java/{Bookstore.java → BookStore.java} +5 -12
  94. data/tracks/java/exercises/book-store/src/test/java/BookStoreTest.java +113 -0
  95. data/tracks/java/exercises/saddle-points/src/example/java/Matrix.java +5 -4
  96. data/tracks/java/exercises/saddle-points/src/example/java/MatrixCoordinate.java +5 -5
  97. data/tracks/java/exercises/saddle-points/src/main/java/MatrixCoordinate.java +5 -5
  98. data/tracks/java/exercises/saddle-points/src/test/java/MatrixTest.java +10 -10
  99. data/tracks/purescript/config.json +7 -0
  100. data/tracks/purescript/exercises/hamming/bower.json +16 -0
  101. data/tracks/purescript/exercises/hamming/examples/src/Hamming.purs +14 -0
  102. data/tracks/purescript/exercises/hamming/test/Main.purs +46 -0
  103. data/tracks/scala/config.json +7 -0
  104. data/tracks/scala/exercises/bob/example.scala +3 -3
  105. data/tracks/scala/exercises/bob/src/main/scala/Bob.scala +2 -2
  106. data/tracks/scala/exercises/bob/src/test/scala/BobTest.scala +83 -53
  107. data/tracks/scala/exercises/book-store/build.sbt +3 -0
  108. data/tracks/scala/exercises/book-store/example.scala +49 -0
  109. data/tracks/scala/exercises/book-store/src/main/scala/.keep +0 -0
  110. data/tracks/scala/exercises/book-store/src/test/scala/BookStoreTest.scala +70 -0
  111. data/tracks/scala/exercises/difference-of-squares/example.scala +3 -3
  112. data/tracks/scala/exercises/difference-of-squares/src/main/scala/DifferenceOfSquares.scala +8 -0
  113. data/tracks/scala/exercises/difference-of-squares/src/test/scala/DifferenceOfSquaresTest.scala +49 -0
  114. data/tracks/scala/exercises/leap/example.scala +4 -3
  115. data/tracks/scala/exercises/leap/src/main/scala/Leap.scala +2 -2
  116. data/tracks/scala/exercises/leap/src/test/scala/LeapTest.scala +12 -20
  117. data/tracks/scala/exercises/raindrops/src/test/scala/RaindropsTest.scala +46 -35
  118. data/tracks/scala/testgen/src/main/scala/BobTestGenerator.scala +15 -0
  119. data/tracks/scala/testgen/src/main/scala/BookStoreTestGenerator.scala +15 -0
  120. data/tracks/scala/testgen/src/main/scala/DifferenceOfSquaresTestGenerator.scala +17 -0
  121. data/tracks/scala/testgen/src/main/scala/LeapTestGenerator.scala +15 -0
  122. data/tracks/scala/testgen/src/main/scala/RaindropsTestGenerator.scala +15 -0
  123. data/tracks/vimscript/config.json +5 -0
  124. data/tracks/vimscript/exercises/triangle/example.vim +28 -0
  125. data/tracks/vimscript/exercises/triangle/triangle.vader +92 -0
  126. data/tracks/vimscript/exercises/triangle/triangle.vim +24 -0
  127. metadata +93 -44
  128. data/tracks/java/exercises/book-store/src/test/java/BookstoreTest.java +0 -119
  129. data/tracks/scala/exercises/difference-of-squares/src/main/scala/Squares.scala +0 -8
  130. data/tracks/scala/exercises/difference-of-squares/src/test/scala/SquaresTest.scala +0 -56
@@ -0,0 +1,23 @@
1
+ #! /bin/bash
2
+
3
+ if [ "$#" -ne 2 ]; then
4
+ echo "Usage: $0 <string1> <string2>" >&2
5
+ exit 1
6
+ fi
7
+
8
+ input="$1"
9
+ possibles="$2"
10
+
11
+ out=""
12
+
13
+ in_counts="$(echo $input | tr '[:upper:]' '[:lower:]' | fold -w1 | sort | uniq -c)"
14
+ for possible in $possibles
15
+ do
16
+ p_counts="$(echo $possible | tr '[:upper:]' '[:lower:]' | fold -w1 | sort | uniq -c)"
17
+ if test "$in_counts" = "$p_counts" -a "$(echo $input | tr '[:upper:]' '[:lower:]')" != "$(echo $possible | tr '[:upper:]' '[:lower:]')"
18
+ then
19
+ out="${out} ${possible}"
20
+ fi
21
+ done
22
+
23
+ echo ${out# } #strip leading spaces
@@ -7,6 +7,13 @@
7
7
  {
8
8
  "slug": "hello-world",
9
9
  "difficulty": 1,
10
+ "topics": [
11
+ "Text formatting"
12
+ ]
13
+ },
14
+ {
15
+ "slug": "two-fer",
16
+ "difficulty": 1,
10
17
  "topics": [
11
18
  "Text formatting",
12
19
  "Optional values"
@@ -163,7 +170,7 @@
163
170
  "Parsing",
164
171
  "Transforming"
165
172
  ]
166
- },
173
+ },
167
174
  {
168
175
  "slug": "roman-numerals",
169
176
  "difficulty": 5,
@@ -0,0 +1,60 @@
1
+ program twofer;
2
+
3
+ {$IFNDEF TESTINSIGHT}
4
+ {$APPTYPE CONSOLE}
5
+ {$ENDIF}{$STRONGLINKTYPES ON}
6
+ uses
7
+ System.SysUtils,
8
+ {$IFDEF TESTINSIGHT}
9
+ TestInsight.DUnitX,
10
+ {$ENDIF }
11
+ DUnitX.Loggers.Console,
12
+ DUnitX.Loggers.Xml.NUnit,
13
+ DUnitX.TestFramework,
14
+ utwoferTest in 'utwoferTest.pas',
15
+ utwofer in 'utwofer.pas';
16
+
17
+ var
18
+ runner : ITestRunner;
19
+ results : IRunResults;
20
+ logger : ITestLogger;
21
+ nunitLogger : ITestLogger;
22
+ begin
23
+ {$IFDEF TESTINSIGHT}
24
+ TestInsight.DUnitX.RunRegisteredTests;
25
+ exit;
26
+ {$ENDIF}
27
+ try
28
+ //Check command line options, will exit if invalid
29
+ TDUnitX.CheckCommandLine;
30
+ //Create the test runner
31
+ runner := TDUnitX.CreateRunner;
32
+ //Tell the runner to use RTTI to find Fixtures
33
+ runner.UseRTTI := True;
34
+ //tell the runner how we will log things
35
+ //Log to the console window
36
+ logger := TDUnitXConsoleLogger.Create(true);
37
+ runner.AddLogger(logger);
38
+ //Generate an NUnit compatible XML File
39
+ nunitLogger := TDUnitXXMLNUnitFileLogger.Create(TDUnitX.Options.XMLOutputFile);
40
+ runner.AddLogger(nunitLogger);
41
+ runner.FailsOnNoAsserts := False; //When true, Assertions must be made during tests;
42
+
43
+ //Run tests
44
+ results := runner.Execute;
45
+ if not results.AllPassed then
46
+ System.ExitCode := EXIT_ERRORS;
47
+
48
+ {$IFNDEF CI}
49
+ //We don't want this happening when running under CI.
50
+ if TDUnitX.Options.ExitBehavior = TDUnitXExitBehavior.Pause then
51
+ begin
52
+ System.Write('Done.. press <Enter> key to quit.');
53
+ System.Readln;
54
+ end;
55
+ {$ENDIF}
56
+ except
57
+ on E: Exception do
58
+ System.Writeln(E.ClassName, ': ', E.Message);
59
+ end;
60
+ end.
@@ -0,0 +1,17 @@
1
+ unit utwofer;
2
+
3
+ interface
4
+
5
+ function twoFer(aName: string=''): string;
6
+
7
+ implementation
8
+ uses SysUtils;
9
+
10
+ function twoFer(aName: string=''): string;
11
+ begin
12
+ if trim(aName).IsEmpty then
13
+ aName := 'you';
14
+ result := 'One for ' + aName + ', one for me.';
15
+ end;
16
+
17
+ end.
@@ -0,0 +1,71 @@
1
+ (******************************************************************************
2
+ You got an error, which is exactly as it should be.
3
+ This is the first step in the Test-Driven Development
4
+ (TDD) process.
5
+
6
+ The most important part of the error is
7
+
8
+ "cannot compile"
9
+
10
+ It's looking for a file named utwo-fer.pas that doesn't exist.
11
+
12
+ To fix the error, create a unit file named utwo-fer.pas
13
+ in the same directory as the file utwo-ferTest.pas.
14
+
15
+ The beginning of the new unit file should contain a unit statement:
16
+
17
+ unit utwo-fer;
18
+
19
+ The new unit should contain Interface, Implementation, and End. statements.
20
+
21
+ Hint: Delphi will take care of all this if you instruct it to add a new unit
22
+ to your project. Be sure to save the new unit as utwo-fer.pas before
23
+ trying to compile again.
24
+
25
+ For more guidance as you work on this exercise, see
26
+ GETTING_STARTED.md.
27
+ ******************************************************************************)
28
+ unit utwoferTest;
29
+
30
+ interface
31
+ uses
32
+ DUnitX.TestFramework;
33
+
34
+ type
35
+ [TestFixture]
36
+ twoferTest = class(TObject)
37
+ public
38
+ [Test]
39
+ // [Ignore('Comment the "[Ignore]" statement to run the test')]
40
+ procedure No_name_given;
41
+
42
+ [Test]
43
+ [Ignore]
44
+ procedure A_name_given;
45
+
46
+ [Test]
47
+ [Ignore]
48
+ procedure Another_name_given;
49
+ end;
50
+
51
+ implementation
52
+ uses utwofer;
53
+
54
+ procedure twoferTest.No_name_given;
55
+ begin
56
+ Assert.AreEqual('One for you, one for me.', twoFer);
57
+ end;
58
+
59
+ procedure twoferTest.A_name_given;
60
+ begin
61
+ Assert.AreEqual('One for Alice, one for me.', twoFer('Alice'));
62
+ end;
63
+
64
+ procedure twoferTest.Another_name_given;
65
+ begin
66
+ Assert.AreEqual('One for Bob, one for me.', twoFer('Bob'));
67
+ end;
68
+
69
+ initialization
70
+ TDUnitX.RegisterTestFixture(twoferTest);
71
+ end.
@@ -14,18 +14,22 @@ E.g. `circular-buffer`.
14
14
  The following conventions are used when adding a new exercise:
15
15
 
16
16
  * Name the directory `$SLUG`
17
- * Place the tests in `$SLUG.d`, replacing underscores with hyphens.
18
- * Name the example solution `$SLUG_example`, replacing underscores with hyphens.
17
+ * Place the tests in `source/$SLUG.d`, replacing hyphens with underscores.
18
+ * Place the example solution in `example/$SLUG.d`, replacing hyphens with underscores.
19
+ * Add a file named `dub.sdl` with two lines: `name "$SLUG"` and `buildRequirements "disallowDeprecations"`.
19
20
 
20
21
  E.g.
21
22
 
22
23
  ```
23
24
  $ tree exercises/circular-buffer
24
25
  exercises/circular-buffer/
25
- ├── circular_buffer.d
26
- └── circular_buffer_example.d
26
+ ├── dub.sdl
27
+ ├── source
28
+ │ └── circular_buffer.d
29
+ └── example
30
+ └── circular_buffer.d
27
31
 
28
- 0 directories, 2 files
32
+ 2 directories, 3 files
29
33
  ```
30
34
 
31
35
  ## Contributing Guide
@@ -6,11 +6,20 @@ if [ $# -eq 0 ]; then
6
6
  fi
7
7
 
8
8
  dir=$1
9
- exercise=$(basename $dir)
10
- underscored=$(echo "$exercise" | tr - _)
11
- example="${underscored}_example"
12
- backupext=testbak
13
9
 
14
10
  cd $dir
15
11
 
16
- dmd ${example}.d -de -w -unittest && ./$example
12
+ status=0
13
+
14
+ mv source testbak
15
+ mv example source
16
+ if ! dub test ; then
17
+ echo "$dir test has failed"
18
+ status=1
19
+ fi
20
+ # Restore so that if we are running locally,
21
+ # we don't accidentally commit the directory moves.
22
+ mv source example
23
+ mv testbak source
24
+
25
+ exit $status
@@ -4,6 +4,7 @@ The D language track requires that you have the following software
4
4
  installed on your system:
5
5
 
6
6
  * a D version 2 compiler
7
+ * (optional but recommended) DUB
7
8
 
8
9
  ### Prerequisite: D version 2 Compiler
9
10
 
@@ -52,3 +53,26 @@ There are also support for the D language in various IDEs e.g.
52
53
  [D plugin](https://plugins.jetbrains.com/plugin/7727?pr=clion) for IntelliJ's CLion. See the wiki
53
54
  for [more information](https://wiki.dlang.org/IDEs).
54
55
 
56
+ ### Prerequisite: DUB
57
+
58
+ [DUB](https://github.com/dlang/dub) is a build manager for D.
59
+
60
+ We recommend it as a way to simplify the process of running the tests, but it is still possible to run without DUB if you cannot or do not want to install it.
61
+
62
+ #### Windows
63
+
64
+ The [DUB website's download page](https://code.dlang.org/download) has a Windows installer.
65
+
66
+ #### Mac OS X
67
+
68
+ * The [DUB website's download page](https://code.dlang.org/download) has OS X binaries.
69
+ * or using [Homebrew](http://brew.sh/): brew install dmd
70
+
71
+ #### Linux
72
+
73
+ * The [DUB website's download page](https://code.dlang.org/download) has Linux binaries.
74
+ * Packages for various distributions are provided:
75
+ * [ArchLinux](https://www.archlinux.org/packages/community/x86_64/dub/)
76
+ * [Debian/Ubuntu](http://d-apt.sourceforge.net/)
77
+ * [Gentoo](https://github.com/gentoo/dlang/tree/master/dev-util/dub)
78
+ * [OpenSUSE](http://software.opensuse.org/download.html?project=devel%3Alanguages%3AD&package=dub)
@@ -10,13 +10,13 @@ If your code does not pass the one or more tests but is valid D code, it will st
10
10
 
11
11
  Working through each exercise is a process of:
12
12
 
13
- * Creating the initial build with **dmd example.d -de -w -unittest**
14
- * Run with **./example or example.exe** depending on the platform
13
+ * Running the tests with `dub test`
14
+ * If you have chosen not to install DUB, you would instead use `dmd source/*.d -de -w -main -unittest`, then run the resulting binary.
15
15
  * For each unit test:
16
- * Satisfy compile errors to make the test fail.
17
- * Implement just enough to make the test pass.
18
- * Refactor your implementation to enhance readability, reduce duplication, etc.
19
- * Enable the next test
16
+ * Satisfy compile errors to make the test fail.
17
+ * Implement just enough to make the test pass.
18
+ * Refactor your implementation to enhance readability, reduce duplication, etc.
19
+ * Enable the next test
20
20
 
21
21
  *Note:* D has support for unit testing direct in the language so usually the unit tests
22
22
  reside in the same file as the implementation. The unittests are ran before the body of
@@ -0,0 +1,2 @@
1
+ name "bob"
2
+ buildRequirements "disallowDeprecations"
@@ -85,8 +85,3 @@ unittest
85
85
  assert(hey(" ") == "Fine. Be that way!");
86
86
  assert(hey(" A bit of silence can be nice. ") == "Whatever.");
87
87
  }
88
-
89
- void main ()
90
- {
91
- }
92
-
@@ -28,8 +28,3 @@ static if (allTestsEnabled)
28
28
  }
29
29
 
30
30
  }
31
-
32
- void main ()
33
- {
34
- }
35
-
@@ -0,0 +1,2 @@
1
+ name "circular-buffer"
2
+ buildRequirements "disallowDeprecations"
@@ -0,0 +1,2 @@
1
+ name "crypto-square"
2
+ buildRequirements "disallowDeprecations"
@@ -88,8 +88,3 @@ static if (allTestsEnabled)
88
88
  }
89
89
 
90
90
  }
91
-
92
- void main ()
93
- {
94
- }
95
-
@@ -0,0 +1,2 @@
1
+ name "difference-of-squares"
2
+ buildRequirements "disallowDeprecations"
@@ -40,5 +40,3 @@ unittest {
40
40
  assert(squares(10).difference == 2_640);
41
41
  assert(squares(100).difference == 25_164_150);
42
42
  }
43
-
44
- void main () {}
@@ -0,0 +1,2 @@
1
+ name "etl"
2
+ buildRequirements "disallowDeprecations"
@@ -107,8 +107,3 @@ bool aaEqual (const int[dchar] lhs, const int[dchar] rhs)
107
107
  }
108
108
 
109
109
  }
110
-
111
- void main ()
112
- {
113
- }
114
-
@@ -78,8 +78,3 @@ static if (allTestsEnabled)
78
78
  }
79
79
 
80
80
  }
81
-
82
- void main ()
83
- {
84
- }
85
-
@@ -0,0 +1,2 @@
1
+ name "gigasecond"
2
+ buildRequirements "disallowDeprecations"
@@ -21,5 +21,3 @@ unittest {
21
21
  assert(gsAnniversary(d) == DateTime(2043, 1, 1, 1, 46, 40));
22
22
  assert(d == DateTime(2011, 4, 25));
23
23
  }
24
-
25
- void main () {}
@@ -21,5 +21,3 @@ static if (allTestsEnabled) {
21
21
  }
22
22
 
23
23
  }
24
-
25
- void main() {}
@@ -0,0 +1,2 @@
1
+ name "hamming"
2
+ buildRequirements "disallowDeprecations"
@@ -37,8 +37,3 @@ unittest
37
37
  assert(distance("GATACA", "GCATAA") == 4);
38
38
  assert(distance("GGACGGATTCTG", "AGGACGGATTCT") == 9);
39
39
  }
40
-
41
- void main ()
42
- {
43
- }
44
-