trackler 2.0.8.36 → 2.0.8.37
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.
- checksums.yaml +4 -4
- data/.gitmodules +3 -0
- data/lib/trackler/version.rb +1 -1
- data/tracks/c/config.json +7 -0
- data/tracks/c/exercises/perfect-numbers/makefile +16 -0
- data/tracks/c/exercises/perfect-numbers/src/example.c +28 -0
- data/tracks/c/exercises/perfect-numbers/src/example.h +13 -0
- data/tracks/c/exercises/perfect-numbers/src/perfect_numbers.h +11 -0
- data/tracks/c/exercises/perfect-numbers/test/test_perfect_numbers.c +87 -0
- data/tracks/c/exercises/perfect-numbers/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/perfect-numbers/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/perfect-numbers/test/vendor/unity_internals.h +701 -0
- data/tracks/ceylon/README.md +1 -1
- data/tracks/ceylon/docs/RESOURCES.md +5 -0
- data/tracks/ceylon/exercises/anagram/source/anagram/module.ceylon +1 -1
- data/tracks/ceylon/exercises/bracket-push/example/module.ceylon +2 -2
- data/tracks/ceylon/exercises/bracket-push/source/bracketpush/module.ceylon +1 -1
- data/tracks/ceylon/exercises/hamming/source/hamming/module.ceylon +1 -1
- data/tracks/ceylon/exercises/largest-series-product/source/largestseriesproduct/module.ceylon +1 -1
- data/tracks/ceylon/exercises/leap/source/leap/module.ceylon +1 -1
- data/tracks/ceylon/exercises/react/example/module.ceylon +2 -2
- data/tracks/ceylon/exercises/react/source/react/module.ceylon +1 -1
- data/tracks/ceylon/exercises/sieve/example/module.ceylon +2 -2
- data/tracks/ceylon/exercises/sieve/source/sieve/module.ceylon +1 -1
- data/tracks/clojurescript/.github/ISSUE_TEMPLATE.md +9 -0
- data/tracks/clojurescript/.gitignore +4 -0
- data/tracks/clojurescript/.travis.yml +5 -0
- data/tracks/clojurescript/LICENSE +21 -0
- data/tracks/clojurescript/README.md +72 -0
- data/tracks/clojurescript/bin/fetch-configlet +32 -0
- data/tracks/clojurescript/config.json +21 -0
- data/tracks/clojurescript/docs/ABOUT.md +0 -0
- data/tracks/clojurescript/docs/INSTALLATION.md +0 -0
- data/tracks/clojurescript/docs/LEARNING.md +0 -0
- data/tracks/clojurescript/docs/RESOURCES.md +0 -0
- data/tracks/clojurescript/docs/TESTS.md +0 -0
- data/tracks/clojurescript/exercises/TRACK_HINTS.md +0 -0
- data/tracks/clojurescript/img/.keep +0 -0
- data/tracks/csharp/exercises/grade-school/Example.cs +13 -1
- data/tracks/csharp/exercises/grade-school/GradeSchool.cs +1 -1
- data/tracks/csharp/exercises/grade-school/GradeSchoolTest.cs +42 -18
- data/tracks/go/README.md +8 -0
- data/tracks/go/exercises/twelve-days/HINTS.md +2 -0
- data/tracks/haskell/config.json +0 -1
- data/tracks/objective-c/config.json +9 -0
- data/tracks/objective-c/exercises/crypto-square/CryptoSquareExample.h +14 -0
- data/tracks/objective-c/exercises/crypto-square/CryptoSquareExample.m +96 -0
- data/tracks/objective-c/exercises/crypto-square/CryptoSquareTest.m +94 -0
- data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.pbxproj +18 -0
- data/tracks/purescript/.gitignore +2 -2
- data/tracks/purescript/bin/test-one.sh +58 -0
- data/tracks/purescript/bin/test.sh +13 -44
- data/tracks/purescript/config.json +7 -0
- data/tracks/purescript/exercises/bracket-push/bower.json +17 -0
- data/tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs +43 -0
- data/tracks/purescript/exercises/bracket-push/src/BracketPush.purs +3 -0
- data/tracks/purescript/exercises/bracket-push/test/Main.purs +64 -0
- data/tracks/scala/exercises/hello-world/HINTS.md +0 -4
- data/tracks/scala/exercises/hello-world/example.scala +1 -2
- data/tracks/scala/exercises/hello-world/src/test/scala/HelloWorldTest.scala +4 -11
- data/tracks/scala/testgen/build.sbt +9 -0
- data/tracks/scala/testgen/project/build.properties +2 -0
- data/tracks/scala/testgen/project/plugins.sbt +2 -0
- data/tracks/scala/testgen/src/main/scala/BeerSongTestGenerator.scala +15 -0
- data/tracks/scala/testgen/src/main/scala/BowlingTestGenerator.scala +23 -44
- data/tracks/scala/testgen/src/main/scala/FoodChainTestGenerator.scala +31 -0
- data/tracks/scala/testgen/src/main/scala/HelloWorldTestGenerator.scala +14 -0
- data/tracks/scala/testgen/src/main/scala/NucleotideCountTestGenerator.scala +15 -0
- data/tracks/scala/testgen/src/main/scala/PangramsTestGenerator.scala +20 -38
- data/tracks/scala/testgen/src/main/scala/SumOfMultiplesTestGenerator.scala +14 -0
- data/tracks/scala/testgen/src/main/scala/testgen/CanonicalDataParser.scala +105 -0
- data/tracks/scala/testgen/src/main/scala/testgen/TestSuiteBuilder.scala +111 -0
- data/tracks/scala/testgen/src/main/twirl/funSuiteTemplate.scala.txt +12 -0
- metadata +44 -4
- data/tracks/haskell/common/stack.yaml +0 -1
- data/tracks/haskell/exercises/pov/.dummylink +0 -1
| @@ -0,0 +1,111 @@ | |
| 1 | 
            +
            package testgen
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            import java.io.FileWriter
         | 
| 4 | 
            +
            import java.io.File
         | 
| 5 | 
            +
            import play.twirl.api.Txt
         | 
| 6 | 
            +
            import play.twirl.api.Template1
         | 
| 7 | 
            +
            import TestSuiteBuilder._
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            object TestSuiteBuilder {
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              type TestSuiteTemplate = Template1[TestSuiteData, Txt]
         | 
| 12 | 
            +
              type ToTestCaseData = String => LabeledTestItem => TestCaseData
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              private val DefaultTemplate: TestSuiteTemplate =
         | 
| 15 | 
            +
                txt.funSuiteTemplate.asInstanceOf[Template1[TestSuiteData, Txt]]
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              def build(file: File, toTestCaseData: ToTestCaseData, imports: Seq[String] = Seq())(
         | 
| 18 | 
            +
                implicit template: TestSuiteTemplate = DefaultTemplate): String =
         | 
| 19 | 
            +
              {
         | 
| 20 | 
            +
                val exercise @ Exercise(name, version, cases, comments) =
         | 
| 21 | 
            +
                  CanonicalDataParser.parse(file)
         | 
| 22 | 
            +
                val tsName = testSuiteName(name)
         | 
| 23 | 
            +
                val testCasesAllPending = cases map toTestCaseData(sutName(name))
         | 
| 24 | 
            +
                val testCases =
         | 
| 25 | 
            +
                  testCasesAllPending updated(0, testCasesAllPending.head.copy(pending = false))
         | 
| 26 | 
            +
                val testSuiteData =
         | 
| 27 | 
            +
                  TestSuiteData(tsName, version, imports, testCases)
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                template.render(testSuiteData).toString
         | 
| 30 | 
            +
              }
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              def withLabeledTest(f: String => LabeledTest => TestCaseData): ToTestCaseData =
         | 
| 33 | 
            +
                sut => item => f(sut)(item.asInstanceOf[LabeledTest])
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              def fromLabeledTest(argNames: String*): ToTestCaseData =
         | 
| 36 | 
            +
                withLabeledTest { sut => labeledTest =>
         | 
| 37 | 
            +
                  val sutFunction = labeledTest.property
         | 
| 38 | 
            +
                  val args = sutArgs(labeledTest.result, argNames: _*)
         | 
| 39 | 
            +
                  val sutCall = s"$sut.$sutFunction(${args})"
         | 
| 40 | 
            +
                  val expected = toString(labeledTest.expected)
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  TestCaseData(labeledTest.description, sutCall, expected)
         | 
| 43 | 
            +
                }
         | 
| 44 | 
            +
             | 
| 45 | 
            +
              def fromLabeledTestAlt(propArgs: (String, Seq[String])*): ToTestCaseData =
         | 
| 46 | 
            +
                withLabeledTest { sut => labeledTest =>
         | 
| 47 | 
            +
                  val sutFunction = labeledTest.property
         | 
| 48 | 
            +
                  val args = sutArgsAlt(labeledTest.result, propArgs:_*)
         | 
| 49 | 
            +
                  val sutCall = s"$sut.$sutFunction(${args})"
         | 
| 50 | 
            +
                  val expected = toString(labeledTest.expected)
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                  TestCaseData(labeledTest.description, sutCall, expected)
         | 
| 53 | 
            +
                }
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              def main(args: Array[String]): Unit = {
         | 
| 56 | 
            +
                val path = "src/main/resources"
         | 
| 57 | 
            +
                val input: Map[String, ToTestCaseData] =
         | 
| 58 | 
            +
                  Map("hello-world" -> fromLabeledTest(),
         | 
| 59 | 
            +
                      "sum-of-multiples" -> fromLabeledTest("factors", "limit"),
         | 
| 60 | 
            +
                      "bowling" -> fromLabeledTest("previous_rolls"))
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                input foreach { case ((name, toTestCaseData)) =>
         | 
| 63 | 
            +
                    val file = new File(s"$path/$name.json")
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                    val code = build(file, toTestCaseData)
         | 
| 66 | 
            +
                    println(s"------ $name -------")
         | 
| 67 | 
            +
                    println(code)
         | 
| 68 | 
            +
                    println(s"------ \\$name -------")
         | 
| 69 | 
            +
                }
         | 
| 70 | 
            +
              }
         | 
| 71 | 
            +
             | 
| 72 | 
            +
              def sutName(exerciseName: String) =
         | 
| 73 | 
            +
                (exerciseName split ("-") map (_.capitalize) mkString)
         | 
| 74 | 
            +
              def testSuiteName(exerciseName: String): String =
         | 
| 75 | 
            +
                sutName(exerciseName) + "Test"
         | 
| 76 | 
            +
             | 
| 77 | 
            +
              def sutArgs(parseResult: CanonicalDataParser.ParseResult, argNames: String*): String =
         | 
| 78 | 
            +
                argNames map (name => toString(parseResult(name))) mkString(", ")
         | 
| 79 | 
            +
             | 
| 80 | 
            +
              def sutArgsAlt(parseResult: CanonicalDataParser.ParseResult, propArgs: (String, Seq[String])*): String =
         | 
| 81 | 
            +
                propArgs collect {
         | 
| 82 | 
            +
                  case ((property, argNames)) if parseResult("property") == property =>
         | 
| 83 | 
            +
                    sutArgs(parseResult, argNames:_*)
         | 
| 84 | 
            +
                } head
         | 
| 85 | 
            +
             | 
| 86 | 
            +
              private def toString(expected: CanonicalDataParser.Expected): String =
         | 
| 87 | 
            +
                  expected.fold(error => s"Left(${toString(error)})", toString)
         | 
| 88 | 
            +
             | 
| 89 | 
            +
              private def toString(any: Any): String = {
         | 
| 90 | 
            +
                def quote(str: String): String =
         | 
| 91 | 
            +
                  if ("\"\n" exists (str.contains(_:Char))) "\"\"\"" else "\""
         | 
| 92 | 
            +
             | 
| 93 | 
            +
                any match {
         | 
| 94 | 
            +
                  case str: String =>
         | 
| 95 | 
            +
                    val quot = quote(str)
         | 
| 96 | 
            +
                    s"$quot$str$quot"
         | 
| 97 | 
            +
                  case _ => any.toString
         | 
| 98 | 
            +
                }
         | 
| 99 | 
            +
              }
         | 
| 100 | 
            +
             | 
| 101 | 
            +
              def toFile(text: String, dest: File): Unit = {
         | 
| 102 | 
            +
                val fileWriter = new FileWriter(dest)
         | 
| 103 | 
            +
                try { fileWriter.write(text) } finally fileWriter.close
         | 
| 104 | 
            +
              }
         | 
| 105 | 
            +
            }
         | 
| 106 | 
            +
             | 
| 107 | 
            +
            case class TestCaseData(description: String, sutCall: String, expected: String,
         | 
| 108 | 
            +
                pending: Boolean = true)
         | 
| 109 | 
            +
             | 
| 110 | 
            +
            case class TestSuiteData(name: String, version: String, imports: Seq[String],
         | 
| 111 | 
            +
              testCases: Seq[TestCaseData])
         | 
| @@ -0,0 +1,12 @@ | |
| 1 | 
            +
            @(data: testgen.TestSuiteData)@for(imp <- data.imports) {import @imp}
         | 
| 2 | 
            +
            import org.scalatest.{Matchers, FunSuite}
         | 
| 3 | 
            +
            @import testgen.TestSuiteBuilder._
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            /** @@version @data.version */
         | 
| 6 | 
            +
            class @data.name extends FunSuite with Matchers {
         | 
| 7 | 
            +
            @for(testCase <- data.testCases) {
         | 
| 8 | 
            +
              test("@testCase.description") { @if(testCase.pending) {
         | 
| 9 | 
            +
                pending}
         | 
| 10 | 
            +
                @testCase.sutCall should be (@testCase.expected)
         | 
| 11 | 
            +
              }
         | 
| 12 | 
            +
            }}
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: trackler
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2.0.8. | 
| 4 | 
            +
              version: 2.0.8.37
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Katrina Owen
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017-03- | 
| 11 | 
            +
            date: 2017-03-31 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rubyzip
         | 
| @@ -712,6 +712,14 @@ files: | |
| 712 712 | 
             
            - tracks/c/exercises/pascals-triangle/test/vendor/unity.c
         | 
| 713 713 | 
             
            - tracks/c/exercises/pascals-triangle/test/vendor/unity.h
         | 
| 714 714 | 
             
            - tracks/c/exercises/pascals-triangle/test/vendor/unity_internals.h
         | 
| 715 | 
            +
            - tracks/c/exercises/perfect-numbers/makefile
         | 
| 716 | 
            +
            - tracks/c/exercises/perfect-numbers/src/example.c
         | 
| 717 | 
            +
            - tracks/c/exercises/perfect-numbers/src/example.h
         | 
| 718 | 
            +
            - tracks/c/exercises/perfect-numbers/src/perfect_numbers.h
         | 
| 719 | 
            +
            - tracks/c/exercises/perfect-numbers/test/test_perfect_numbers.c
         | 
| 720 | 
            +
            - tracks/c/exercises/perfect-numbers/test/vendor/unity.c
         | 
| 721 | 
            +
            - tracks/c/exercises/perfect-numbers/test/vendor/unity.h
         | 
| 722 | 
            +
            - tracks/c/exercises/perfect-numbers/test/vendor/unity_internals.h
         | 
| 715 723 | 
             
            - tracks/c/exercises/phone-number/makefile
         | 
| 716 724 | 
             
            - tracks/c/exercises/phone-number/src/example.c
         | 
| 717 725 | 
             
            - tracks/c/exercises/phone-number/src/example.h
         | 
| @@ -1046,6 +1054,21 @@ files: | |
| 1046 1054 | 
             
            - tracks/clojure/exercises/wordy/test/wordy_test.clj
         | 
| 1047 1055 | 
             
            - tracks/clojure/img/icon.png
         | 
| 1048 1056 | 
             
            - tracks/clojure/project.clj
         | 
| 1057 | 
            +
            - tracks/clojurescript/.git
         | 
| 1058 | 
            +
            - tracks/clojurescript/.github/ISSUE_TEMPLATE.md
         | 
| 1059 | 
            +
            - tracks/clojurescript/.gitignore
         | 
| 1060 | 
            +
            - tracks/clojurescript/.travis.yml
         | 
| 1061 | 
            +
            - tracks/clojurescript/LICENSE
         | 
| 1062 | 
            +
            - tracks/clojurescript/README.md
         | 
| 1063 | 
            +
            - tracks/clojurescript/bin/fetch-configlet
         | 
| 1064 | 
            +
            - tracks/clojurescript/config.json
         | 
| 1065 | 
            +
            - tracks/clojurescript/docs/ABOUT.md
         | 
| 1066 | 
            +
            - tracks/clojurescript/docs/INSTALLATION.md
         | 
| 1067 | 
            +
            - tracks/clojurescript/docs/LEARNING.md
         | 
| 1068 | 
            +
            - tracks/clojurescript/docs/RESOURCES.md
         | 
| 1069 | 
            +
            - tracks/clojurescript/docs/TESTS.md
         | 
| 1070 | 
            +
            - tracks/clojurescript/exercises/TRACK_HINTS.md
         | 
| 1071 | 
            +
            - tracks/clojurescript/img/.keep
         | 
| 1049 1072 | 
             
            - tracks/coffeescript/.git
         | 
| 1050 1073 | 
             
            - tracks/coffeescript/.gitignore
         | 
| 1051 1074 | 
             
            - tracks/coffeescript/.travis.yml
         | 
| @@ -3544,6 +3567,7 @@ files: | |
| 3544 3567 | 
             
            - tracks/go/exercises/triangle/triangle_test.go
         | 
| 3545 3568 | 
             
            - tracks/go/exercises/trinary/example.go
         | 
| 3546 3569 | 
             
            - tracks/go/exercises/trinary/trinary_test.go
         | 
| 3570 | 
            +
            - tracks/go/exercises/twelve-days/HINTS.md
         | 
| 3547 3571 | 
             
            - tracks/go/exercises/twelve-days/example.go
         | 
| 3548 3572 | 
             
            - tracks/go/exercises/twelve-days/twelve_days_test.go
         | 
| 3549 3573 | 
             
            - tracks/go/exercises/variable-length-quantity/example.go
         | 
| @@ -3612,7 +3636,6 @@ files: | |
| 3612 3636 | 
             
            - tracks/haskell/bin/test-all-examples
         | 
| 3613 3637 | 
             
            - tracks/haskell/bin/test-example
         | 
| 3614 3638 | 
             
            - tracks/haskell/bin/test-stub
         | 
| 3615 | 
            -
            - tracks/haskell/common/stack.yaml
         | 
| 3616 3639 | 
             
            - tracks/haskell/config.json
         | 
| 3617 3640 | 
             
            - tracks/haskell/docs/ABOUT.md
         | 
| 3618 3641 | 
             
            - tracks/haskell/docs/INSTALLATION.md
         | 
| @@ -3943,7 +3966,6 @@ files: | |
| 3943 3966 | 
             
            - tracks/haskell/exercises/pig-latin/src/PigLatin.hs
         | 
| 3944 3967 | 
             
            - tracks/haskell/exercises/pig-latin/stack.yaml
         | 
| 3945 3968 | 
             
            - tracks/haskell/exercises/pig-latin/test/Tests.hs
         | 
| 3946 | 
            -
            - tracks/haskell/exercises/pov/.dummylink
         | 
| 3947 3969 | 
             
            - tracks/haskell/exercises/pov/examples/success-standard/package.yaml
         | 
| 3948 3970 | 
             
            - tracks/haskell/exercises/pov/examples/success-standard/src/POV.hs
         | 
| 3949 3971 | 
             
            - tracks/haskell/exercises/pov/package.yaml
         | 
| @@ -5640,6 +5662,9 @@ files: | |
| 5640 5662 | 
             
            - tracks/objective-c/exercises/clock/ClockExample.h
         | 
| 5641 5663 | 
             
            - tracks/objective-c/exercises/clock/ClockExample.m
         | 
| 5642 5664 | 
             
            - tracks/objective-c/exercises/clock/ClockTest.m
         | 
| 5665 | 
            +
            - tracks/objective-c/exercises/crypto-square/CryptoSquareExample.h
         | 
| 5666 | 
            +
            - tracks/objective-c/exercises/crypto-square/CryptoSquareExample.m
         | 
| 5667 | 
            +
            - tracks/objective-c/exercises/crypto-square/CryptoSquareTest.m
         | 
| 5643 5668 | 
             
            - tracks/objective-c/exercises/difference-of-squares/DifferenceOfSquaresExample.h
         | 
| 5644 5669 | 
             
            - tracks/objective-c/exercises/difference-of-squares/DifferenceOfSquaresExample.m
         | 
| 5645 5670 | 
             
            - tracks/objective-c/exercises/difference-of-squares/DifferenceOfSquaresTest.m
         | 
| @@ -6491,6 +6516,7 @@ files: | |
| 6491 6516 | 
             
            - tracks/purescript/README.md
         | 
| 6492 6517 | 
             
            - tracks/purescript/SETUP.md
         | 
| 6493 6518 | 
             
            - tracks/purescript/bin/fetch-configlet
         | 
| 6519 | 
            +
            - tracks/purescript/bin/test-one.sh
         | 
| 6494 6520 | 
             
            - tracks/purescript/bin/test.sh
         | 
| 6495 6521 | 
             
            - tracks/purescript/config.json
         | 
| 6496 6522 | 
             
            - tracks/purescript/docs/ABOUT.md
         | 
| @@ -6514,6 +6540,10 @@ files: | |
| 6514 6540 | 
             
            - tracks/purescript/exercises/bob/examples/src/Bob.purs
         | 
| 6515 6541 | 
             
            - tracks/purescript/exercises/bob/src/Bob.purs
         | 
| 6516 6542 | 
             
            - tracks/purescript/exercises/bob/test/Main.purs
         | 
| 6543 | 
            +
            - tracks/purescript/exercises/bracket-push/bower.json
         | 
| 6544 | 
            +
            - tracks/purescript/exercises/bracket-push/examples/src/BracketPush.purs
         | 
| 6545 | 
            +
            - tracks/purescript/exercises/bracket-push/src/BracketPush.purs
         | 
| 6546 | 
            +
            - tracks/purescript/exercises/bracket-push/test/Main.purs
         | 
| 6517 6547 | 
             
            - tracks/purescript/exercises/hello-world/bower.json
         | 
| 6518 6548 | 
             
            - tracks/purescript/exercises/hello-world/examples/src/HelloWorld.purs
         | 
| 6519 6549 | 
             
            - tracks/purescript/exercises/hello-world/src/HelloWorld.purs
         | 
| @@ -7949,16 +7979,26 @@ files: | |
| 7949 7979 | 
             
            - tracks/scala/project/Build.scala
         | 
| 7950 7980 | 
             
            - tracks/scala/project/build.properties
         | 
| 7951 7981 | 
             
            - tracks/scala/testgen/build.sbt
         | 
| 7982 | 
            +
            - tracks/scala/testgen/project/build.properties
         | 
| 7983 | 
            +
            - tracks/scala/testgen/project/plugins.sbt
         | 
| 7952 7984 | 
             
            - tracks/scala/testgen/src/main/scala/AllYourBaseTestGenerator.scala
         | 
| 7985 | 
            +
            - tracks/scala/testgen/src/main/scala/BeerSongTestGenerator.scala
         | 
| 7953 7986 | 
             
            - tracks/scala/testgen/src/main/scala/BinarySearchTestGenerator.scala
         | 
| 7954 7987 | 
             
            - tracks/scala/testgen/src/main/scala/BowlingTestGenerator.scala
         | 
| 7955 7988 | 
             
            - tracks/scala/testgen/src/main/scala/BracketPushTestGenerator.scala
         | 
| 7956 7989 | 
             
            - tracks/scala/testgen/src/main/scala/CustomSetTestGenerator.scala
         | 
| 7990 | 
            +
            - tracks/scala/testgen/src/main/scala/FoodChainTestGenerator.scala
         | 
| 7991 | 
            +
            - tracks/scala/testgen/src/main/scala/HelloWorldTestGenerator.scala
         | 
| 7957 7992 | 
             
            - tracks/scala/testgen/src/main/scala/IsogramTestGenerator.scala
         | 
| 7993 | 
            +
            - tracks/scala/testgen/src/main/scala/NucleotideCountTestGenerator.scala
         | 
| 7958 7994 | 
             
            - tracks/scala/testgen/src/main/scala/PangramsTestGenerator.scala
         | 
| 7959 7995 | 
             
            - tracks/scala/testgen/src/main/scala/RailFenceCipherTestGenerator.scala
         | 
| 7996 | 
            +
            - tracks/scala/testgen/src/main/scala/SumOfMultiplesTestGenerator.scala
         | 
| 7960 7997 | 
             
            - tracks/scala/testgen/src/main/scala/TestBuilder.scala
         | 
| 7961 7998 | 
             
            - tracks/scala/testgen/src/main/scala/VariableLengthQuantityTestGenerator.scala
         | 
| 7999 | 
            +
            - tracks/scala/testgen/src/main/scala/testgen/CanonicalDataParser.scala
         | 
| 8000 | 
            +
            - tracks/scala/testgen/src/main/scala/testgen/TestSuiteBuilder.scala
         | 
| 8001 | 
            +
            - tracks/scala/testgen/src/main/twirl/funSuiteTemplate.scala.txt
         | 
| 7962 8002 | 
             
            - tracks/scheme/.git
         | 
| 7963 8003 | 
             
            - tracks/scheme/.gitignore
         | 
| 7964 8004 | 
             
            - tracks/scheme/.travis.yml
         | 
| @@ -1 +0,0 @@ | |
| 1 | 
            -
            resolver: lts-8.2
         | 
| @@ -1 +0,0 @@ | |
| 1 | 
            -
            resolver: lts-8.2
         |