trackler 2.2.1.41 → 2.2.1.42
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitmodules +0 -3
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/change/metadata.yml +0 -3
- data/tracks/c/exercises/allergies/src/allergies.h +12 -12
- data/tracks/c/exercises/allergies/src/example.c +4 -4
- data/tracks/c/exercises/allergies/src/example.h +14 -14
- data/tracks/c/exercises/allergies/test/test_allergies.c +45 -45
- data/tracks/cfml/config.json +139 -193
- data/tracks/cfml/config/maintainers.json +11 -11
- data/tracks/csharp/exercises/etl/Etl.cs +1 -1
- data/tracks/csharp/exercises/etl/EtlTest.cs +102 -0
- data/tracks/csharp/exercises/etl/Example.cs +1 -1
- data/tracks/csharp/exercises/pascals-triangle/Example.cs +10 -1
- data/tracks/csharp/exercises/pascals-triangle/PascalsTriangle.cs +1 -0
- data/tracks/csharp/exercises/pascals-triangle/PascalsTriangleTest.cs +17 -50
- data/tracks/csharp/exercises/saddle-points/SaddlePointsTest.cs +75 -0
- data/tracks/csharp/generators/Exercises/Etl.cs +61 -0
- data/tracks/csharp/generators/Exercises/PascalsTriangle.cs +28 -0
- data/tracks/csharp/generators/Exercises/SaddlePoints.cs +50 -0
- data/tracks/csharp/generators/Output/ValueFormatter.cs +29 -0
- data/tracks/java/config.json +40 -5
- data/tracks/java/exercises/triangle/.meta/src/reference/java/Triangle.java +11 -10
- data/tracks/java/exercises/triangle/src/main/java/Triangle.java +9 -1
- data/tracks/java/exercises/triangle/src/test/java/TriangleTest.java +12 -12
- data/tracks/python/exercises/phone-number/phone_number.py +1 -1
- data/tracks/python/exercises/rna-transcription/rna_transcription.py +1 -1
- data/tracks/python/exercises/run-length-encoding/run_length_encoding.py +2 -2
- data/tracks/python/exercises/saddle-points/saddle_points.py +1 -1
- data/tracks/rust/exercises/etl/README.md +1 -1
- data/tracks/rust/exercises/ocr-numbers/README.md +1 -1
- data/tracks/rust/exercises/pascals-triangle/README.md +1 -1
- data/tracks/rust/exercises/rna-transcription/README.md +1 -1
- data/tracks/scala/exercises/meetup/src/test/scala/MeetupTest.scala +118 -93
- data/tracks/scala/testgen/src/main/scala/MeetupTestGenerator.scala +48 -0
- data/tracks/scala/testgen/src/main/scala/testgen/CanonicalDataParser.scala +1 -1
- data/tracks/typescript/config.json +13 -0
- data/tracks/typescript/exercises/bob/bob.ts +7 -0
- data/tracks/typescript/exercises/hello-world/hello-world.ts +7 -0
- data/tracks/typescript/exercises/leap/leap.ts +5 -0
- data/tracks/typescript/exercises/pangram/pangram.ts +11 -0
- data/tracks/typescript/exercises/prime-factors/README.md +73 -0
- data/tracks/typescript/exercises/prime-factors/package.json +36 -0
- data/tracks/typescript/exercises/prime-factors/prime-factors.example.ts +14 -0
- data/tracks/typescript/exercises/prime-factors/prime-factors.test.ts +25 -0
- data/tracks/{coldfusion/exercises/acronym/.meta/HINTS.md → typescript/exercises/prime-factors/prime-factors.ts} +0 -0
- data/tracks/typescript/exercises/prime-factors/tsconfig.json +22 -0
- data/tracks/typescript/exercises/prime-factors/tslint.json +127 -0
- data/tracks/typescript/exercises/prime-factors/yarn.lock +2305 -0
- data/tracks/typescript/exercises/rna-transcription/rna-transcription.ts +7 -0
- metadata +16 -242
- data/tracks/coldfusion/.gitignore +0 -5
- data/tracks/coldfusion/.travis.yml +0 -18
- data/tracks/coldfusion/CONTRIBUTING.md +0 -10
- data/tracks/coldfusion/LICENSE +0 -21
- data/tracks/coldfusion/README.md +0 -92
- data/tracks/coldfusion/bin/fetch-configlet +0 -32
- data/tracks/coldfusion/config.json +0 -223
- data/tracks/coldfusion/config/exercise_readme.go.tmpl +0 -16
- data/tracks/coldfusion/config/maintainers.json +0 -13
- data/tracks/coldfusion/docs/ABOUT.md +0 -10
- data/tracks/coldfusion/docs/EXERCISE_README_INSERT.md +0 -15
- data/tracks/coldfusion/docs/INSTALLATION.md +0 -35
- data/tracks/coldfusion/docs/LEARNING.md +0 -37
- data/tracks/coldfusion/docs/RESOURCES.md +0 -29
- data/tracks/coldfusion/docs/SNIPPET.txt +0 -8
- data/tracks/coldfusion/docs/TESTS.md +0 -13
- data/tracks/coldfusion/exercises/acronym/Acronym.cfc +0 -13
- data/tracks/coldfusion/exercises/acronym/AcronymTest.cfc +0 -43
- data/tracks/coldfusion/exercises/acronym/Solution.cfc +0 -22
- data/tracks/coldfusion/exercises/acronym/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/acronym/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/acronym/box.json +0 -8
- data/tracks/coldfusion/exercises/acronym/index.cfm +0 -37
- data/tracks/coldfusion/exercises/atbash-cipher/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/atbash-cipher/AtbashCipher.cfc +0 -14
- data/tracks/coldfusion/exercises/atbash-cipher/AtbashCipherTest.cfc +0 -71
- data/tracks/coldfusion/exercises/atbash-cipher/Solution.cfc +0 -56
- data/tracks/coldfusion/exercises/atbash-cipher/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/atbash-cipher/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/atbash-cipher/box.json +0 -8
- data/tracks/coldfusion/exercises/atbash-cipher/index.cfm +0 -37
- data/tracks/coldfusion/exercises/bob/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/bob/Bob.cfc +0 -13
- data/tracks/coldfusion/exercises/bob/BobTest.cfc +0 -115
- data/tracks/coldfusion/exercises/bob/Solution.cfc +0 -27
- data/tracks/coldfusion/exercises/bob/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/bob/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/bob/box.json +0 -8
- data/tracks/coldfusion/exercises/bob/index.cfm +0 -37
- data/tracks/coldfusion/exercises/diamond/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/diamond/Diamond.cfc +0 -13
- data/tracks/coldfusion/exercises/diamond/DiamondTest.cfc +0 -35
- data/tracks/coldfusion/exercises/diamond/Solution.cfc +0 -35
- data/tracks/coldfusion/exercises/diamond/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/diamond/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/diamond/box.json +0 -8
- data/tracks/coldfusion/exercises/diamond/index.cfm +0 -37
- data/tracks/coldfusion/exercises/difference-of-squares/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/difference-of-squares/DifferenceOfSquares.cfc +0 -18
- data/tracks/coldfusion/exercises/difference-of-squares/DifferenceOfSquaresTest.cfc +0 -63
- data/tracks/coldfusion/exercises/difference-of-squares/Solution.cfc +0 -28
- data/tracks/coldfusion/exercises/difference-of-squares/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/difference-of-squares/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/difference-of-squares/box.json +0 -8
- data/tracks/coldfusion/exercises/difference-of-squares/index.cfm +0 -37
- data/tracks/coldfusion/exercises/flatten-array/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/flatten-array/FlattenArray.cfc +0 -13
- data/tracks/coldfusion/exercises/flatten-array/FlattenArrayTest.cfc +0 -42
- data/tracks/coldfusion/exercises/flatten-array/Solution.cfc +0 -26
- data/tracks/coldfusion/exercises/flatten-array/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/flatten-array/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/flatten-array/box.json +0 -8
- data/tracks/coldfusion/exercises/flatten-array/index.cfm +0 -37
- data/tracks/coldfusion/exercises/gigasecond/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/gigasecond/Gigasecond.cfc +0 -13
- data/tracks/coldfusion/exercises/gigasecond/GigasecondTest.cfc +0 -39
- data/tracks/coldfusion/exercises/gigasecond/Solution.cfc +0 -16
- data/tracks/coldfusion/exercises/gigasecond/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/gigasecond/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/gigasecond/box.json +0 -8
- data/tracks/coldfusion/exercises/gigasecond/index.cfm +0 -37
- data/tracks/coldfusion/exercises/grains/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/grains/Grains.cfc +0 -14
- data/tracks/coldfusion/exercises/grains/GrainsTest.cfc +0 -63
- data/tracks/coldfusion/exercises/grains/Solution.cfc +0 -22
- data/tracks/coldfusion/exercises/grains/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/grains/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/grains/box.json +0 -8
- data/tracks/coldfusion/exercises/grains/index.cfm +0 -37
- data/tracks/coldfusion/exercises/hamming/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/hamming/Hamming.cfc +0 -13
- data/tracks/coldfusion/exercises/hamming/HammingTest.cfc +0 -75
- data/tracks/coldfusion/exercises/hamming/Solution.cfc +0 -25
- data/tracks/coldfusion/exercises/hamming/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/hamming/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/hamming/box.json +0 -8
- data/tracks/coldfusion/exercises/hamming/index.cfm +0 -37
- data/tracks/coldfusion/exercises/hello-world/HelloWorld.cfc +0 -13
- data/tracks/coldfusion/exercises/hello-world/HelloWorldTest.cfc +0 -18
- data/tracks/coldfusion/exercises/hello-world/Solution.cfc +0 -13
- data/tracks/coldfusion/exercises/hello-world/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/hello-world/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/hello-world/box.json +0 -8
- data/tracks/coldfusion/exercises/hello-world/index.cfm +0 -37
- data/tracks/coldfusion/exercises/isogram/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/isogram/Isogram.cfc +0 -13
- data/tracks/coldfusion/exercises/isogram/IsogramTest.cfc +0 -55
- data/tracks/coldfusion/exercises/isogram/Solution.cfc +0 -23
- data/tracks/coldfusion/exercises/isogram/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/isogram/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/isogram/box.json +0 -8
- data/tracks/coldfusion/exercises/isogram/index.cfm +0 -37
- data/tracks/coldfusion/exercises/largest-series-product/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/largest-series-product/LargestSeriesProduct.cfc +0 -13
- data/tracks/coldfusion/exercises/largest-series-product/LargestSeriesProductTest.cfc +0 -75
- data/tracks/coldfusion/exercises/largest-series-product/Solution.cfc +0 -41
- data/tracks/coldfusion/exercises/largest-series-product/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/largest-series-product/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/largest-series-product/box.json +0 -8
- data/tracks/coldfusion/exercises/largest-series-product/index.cfm +0 -37
- data/tracks/coldfusion/exercises/leap/Leap.cfc +0 -15
- data/tracks/coldfusion/exercises/leap/LeapTest.cfc +0 -39
- data/tracks/coldfusion/exercises/leap/README.md +0 -33
- data/tracks/coldfusion/exercises/leap/Solution.cfc +0 -19
- data/tracks/coldfusion/exercises/leap/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/leap/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/leap/box.json +0 -8
- data/tracks/coldfusion/exercises/leap/index.cfm +0 -37
- data/tracks/coldfusion/exercises/luhn/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/luhn/Luhn.cfc +0 -13
- data/tracks/coldfusion/exercises/luhn/LuhnTest.cfc +0 -67
- data/tracks/coldfusion/exercises/luhn/Solution.cfc +0 -38
- data/tracks/coldfusion/exercises/luhn/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/luhn/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/luhn/box.json +0 -8
- data/tracks/coldfusion/exercises/luhn/index.cfm +0 -37
- data/tracks/coldfusion/exercises/nth-prime/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/nth-prime/NthPrime.cfc +0 -13
- data/tracks/coldfusion/exercises/nth-prime/NthPrimeTest.cfc +0 -35
- data/tracks/coldfusion/exercises/nth-prime/Solution.cfc +0 -33
- data/tracks/coldfusion/exercises/nth-prime/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/nth-prime/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/nth-prime/box.json +0 -8
- data/tracks/coldfusion/exercises/nth-prime/index.cfm +0 -37
- data/tracks/coldfusion/exercises/pangram/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/pangram/Pangram.cfc +0 -13
- data/tracks/coldfusion/exercises/pangram/PangramTest.cfc +0 -55
- data/tracks/coldfusion/exercises/pangram/Solution.cfc +0 -21
- data/tracks/coldfusion/exercises/pangram/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/pangram/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/pangram/box.json +0 -8
- data/tracks/coldfusion/exercises/pangram/index.cfm +0 -37
- data/tracks/coldfusion/exercises/pig-latin/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/pig-latin/PigLatin.cfc +0 -13
- data/tracks/coldfusion/exercises/pig-latin/PigLatinTest.cfc +0 -115
- data/tracks/coldfusion/exercises/pig-latin/Solution.cfc +0 -30
- data/tracks/coldfusion/exercises/pig-latin/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/pig-latin/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/pig-latin/box.json +0 -8
- data/tracks/coldfusion/exercises/pig-latin/index.cfm +0 -37
- data/tracks/coldfusion/exercises/raindrops/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/raindrops/Raindrops.cfc +0 -13
- data/tracks/coldfusion/exercises/raindrops/RaindropsTest.cfc +0 -87
- data/tracks/coldfusion/exercises/raindrops/Solution.cfc +0 -33
- data/tracks/coldfusion/exercises/raindrops/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/raindrops/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/raindrops/box.json +0 -8
- data/tracks/coldfusion/exercises/raindrops/index.cfm +0 -37
- data/tracks/coldfusion/exercises/rna-transcription/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/rna-transcription/RnaTranscription.cfc +0 -13
- data/tracks/coldfusion/exercises/rna-transcription/RnaTranscriptionTest.cfc +0 -47
- data/tracks/coldfusion/exercises/rna-transcription/Solution.cfc +0 -35
- data/tracks/coldfusion/exercises/rna-transcription/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/rna-transcription/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/rna-transcription/box.json +0 -8
- data/tracks/coldfusion/exercises/rna-transcription/index.cfm +0 -37
- data/tracks/coldfusion/exercises/saddle-points/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/saddle-points/SaddlePoints.cfc +0 -13
- data/tracks/coldfusion/exercises/saddle-points/SaddlePointsTest.cfc +0 -35
- data/tracks/coldfusion/exercises/saddle-points/Solution.cfc +0 -59
- data/tracks/coldfusion/exercises/saddle-points/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/saddle-points/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/saddle-points/box.json +0 -8
- data/tracks/coldfusion/exercises/saddle-points/index.cfm +0 -37
- data/tracks/coldfusion/exercises/scrabble-score/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/scrabble-score/ScrabbleScore.cfc +0 -13
- data/tracks/coldfusion/exercises/scrabble-score/ScrabbleScoreTest.cfc +0 -59
- data/tracks/coldfusion/exercises/scrabble-score/Solution.cfc +0 -50
- data/tracks/coldfusion/exercises/scrabble-score/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/scrabble-score/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/scrabble-score/box.json +0 -8
- data/tracks/coldfusion/exercises/scrabble-score/index.cfm +0 -37
- data/tracks/coldfusion/exercises/secret-handshake/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/secret-handshake/SecretHandshake.cfc +0 -13
- data/tracks/coldfusion/exercises/secret-handshake/SecretHandshakeTest.cfc +0 -63
- data/tracks/coldfusion/exercises/secret-handshake/Solution.cfc +0 -31
- data/tracks/coldfusion/exercises/secret-handshake/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/secret-handshake/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/secret-handshake/box.json +0 -8
- data/tracks/coldfusion/exercises/secret-handshake/index.cfm +0 -37
- data/tracks/coldfusion/exercises/space-age/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/space-age/Solution.cfc +0 -28
- data/tracks/coldfusion/exercises/space-age/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/space-age/SpaceAge.cfc +0 -13
- data/tracks/coldfusion/exercises/space-age/SpaceAgeTest.cfc +0 -47
- data/tracks/coldfusion/exercises/space-age/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/space-age/box.json +0 -8
- data/tracks/coldfusion/exercises/space-age/index.cfm +0 -37
- data/tracks/coldfusion/exercises/sum-of-multiples/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/sum-of-multiples/Solution.cfc +0 -27
- data/tracks/coldfusion/exercises/sum-of-multiples/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/sum-of-multiples/SumOfMultiples.cfc +0 -13
- data/tracks/coldfusion/exercises/sum-of-multiples/SumOfMultiplesTest.cfc +0 -63
- data/tracks/coldfusion/exercises/sum-of-multiples/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/sum-of-multiples/box.json +0 -8
- data/tracks/coldfusion/exercises/sum-of-multiples/index.cfm +0 -37
- data/tracks/coldfusion/exercises/triangle/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/triangle/Solution.cfc +0 -53
- data/tracks/coldfusion/exercises/triangle/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/triangle/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/triangle/Triangle.cfc +0 -18
- data/tracks/coldfusion/exercises/triangle/TriangleTest.cfc +0 -95
- data/tracks/coldfusion/exercises/triangle/box.json +0 -8
- data/tracks/coldfusion/exercises/triangle/index.cfm +0 -37
- data/tracks/coldfusion/exercises/word-count/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/exercises/word-count/Solution.cfc +0 -22
- data/tracks/coldfusion/exercises/word-count/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/exercises/word-count/TestRunner.cfc +0 -103
- data/tracks/coldfusion/exercises/word-count/WordCount.cfc +0 -13
- data/tracks/coldfusion/exercises/word-count/WordCountTest.cfc +0 -55
- data/tracks/coldfusion/exercises/word-count/box.json +0 -8
- data/tracks/coldfusion/exercises/word-count/index.cfm +0 -37
- data/tracks/coldfusion/img/icon.png +0 -0
- data/tracks/coldfusion/tasks/GenerateTests.cfc +0 -179
- data/tracks/coldfusion/tasks/ScaffoldExercise.cfc +0 -85
- data/tracks/coldfusion/tasks/TestAllSolutions.cfc +0 -24
- data/tracks/coldfusion/tasks/exercise_template/.meta/HINTS.md +0 -0
- data/tracks/coldfusion/tasks/exercise_template/@@name@@.cfc +0 -13
- data/tracks/coldfusion/tasks/exercise_template/@@name@@Test.cfc +0 -15
- data/tracks/coldfusion/tasks/exercise_template/Solution.cfc +0 -6
- data/tracks/coldfusion/tasks/exercise_template/SolutionTest.cfc +0 -7
- data/tracks/coldfusion/tasks/exercise_template/TestRunner.cfc +0 -103
- data/tracks/coldfusion/tasks/exercise_template/box.json +0 -8
- data/tracks/coldfusion/tasks/exercise_template/index.cfm +0 -37
- data/tracks/csharp/exercises/etl/ETLTest.cs +0 -51
- data/tracks/csharp/exercises/saddle-points/SaddlePointTest.cs +0 -68
- data/tracks/java/exercises/triangle/.meta/src/reference/java/TriangleKind.java +0 -5
- data/tracks/java/exercises/triangle/src/main/java/TriangleKind.java +0 -5
@@ -1,42 +0,0 @@
|
|
1
|
-
component extends="testbox.system.BaseSpec" {
|
2
|
-
|
3
|
-
function beforeAll(){
|
4
|
-
SUT = createObject( 'FlattenArray' );
|
5
|
-
}
|
6
|
-
|
7
|
-
// Return a null value
|
8
|
-
function null(){}
|
9
|
-
|
10
|
-
function run(){
|
11
|
-
|
12
|
-
describe( "My FlattenArray class", function(){
|
13
|
-
|
14
|
-
it( 'no nesting', function(){
|
15
|
-
expect( SUT.flatten( input=[0, 1, 2] ) ).toBe( [0,1,2] );
|
16
|
-
});
|
17
|
-
|
18
|
-
it( 'flattens array with just integers present', function(){
|
19
|
-
expect( SUT.flatten( input=[1, [2, 3, 4, 5, 6, 7], 8] ) ).toBe( [1,2,3,4,5,6,7,8] );
|
20
|
-
});
|
21
|
-
|
22
|
-
it( '5 level nesting', function(){
|
23
|
-
expect( SUT.flatten( input=[0, 2, [[2, 3], 8, 100, 4, [[[50]]]], -2] ) ).toBe( [0,2,2,3,8,100,4,50,-2] );
|
24
|
-
});
|
25
|
-
|
26
|
-
it( '6 level nesting', function(){
|
27
|
-
expect( SUT.flatten( input=[1, [2, [[3]], [4, [[5]]], 6, 7], 8] ) ).toBe( [1,2,3,4,5,6,7,8] );
|
28
|
-
});
|
29
|
-
|
30
|
-
it( '6 level nest list with null values', function(){
|
31
|
-
expect( SUT.flatten( input=[0, 2, [[2, 3], 8, [[100]], null(), [[null()]]], -2] ) ).toBe( [0,2,2,3,8,100,-2] );
|
32
|
-
});
|
33
|
-
|
34
|
-
it( 'all values in nested list are null', function(){
|
35
|
-
expect( SUT.flatten( input=[null(), [[[null()]]], null(), null(), [[null(), null()], null()], null()] ) ).toBe( [] );
|
36
|
-
});
|
37
|
-
|
38
|
-
});
|
39
|
-
|
40
|
-
}
|
41
|
-
|
42
|
-
}
|
@@ -1,26 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Here is an example solution for the FlattenArray exercise
|
3
|
-
*/
|
4
|
-
component {
|
5
|
-
|
6
|
-
function flatten( input ) {
|
7
|
-
var accumulator = [];
|
8
|
-
|
9
|
-
// Loop over items in array
|
10
|
-
input
|
11
|
-
.each( function( i ) {
|
12
|
-
// Skip nulls
|
13
|
-
if( !isNull( i ) ) {
|
14
|
-
// Simple values get added
|
15
|
-
if( isArray( i ) ) {
|
16
|
-
accumulator.append( flatten( i ), true );
|
17
|
-
// Nested arrays recurse
|
18
|
-
} else {
|
19
|
-
accumulator.append( i );
|
20
|
-
}
|
21
|
-
}
|
22
|
-
} );
|
23
|
-
return accumulator;
|
24
|
-
}
|
25
|
-
|
26
|
-
}
|
@@ -1,103 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* I am a CommandBox task runner which you can use to test your implementation of this exercise against the
|
3
|
-
* provided test suite. To use me, open the CommandBox CLI and run this:
|
4
|
-
*
|
5
|
-
* CommandBox> task run TestRunner
|
6
|
-
*
|
7
|
-
* To start up a test watcher that will automatically rerun the test suite every time you save a file change, run this:
|
8
|
-
*
|
9
|
-
* CommandBox> task run TestRunner --watcher
|
10
|
-
*
|
11
|
-
*/
|
12
|
-
component {
|
13
|
-
|
14
|
-
/**
|
15
|
-
* @solution Runs the tests against the solution
|
16
|
-
* @watcher Start up a file watch that re-runs the tests on file changes. Use Ctrl-C to stop
|
17
|
-
*/
|
18
|
-
function run( boolean solution=false, boolean watcher=false ) {
|
19
|
-
|
20
|
-
ensureTestBox();
|
21
|
-
|
22
|
-
if( watcher ) {
|
23
|
-
|
24
|
-
// Tabula rasa
|
25
|
-
command( 'cls' ).run();
|
26
|
-
|
27
|
-
// Start watcher
|
28
|
-
watch()
|
29
|
-
.paths( '*.cfc' )
|
30
|
-
.inDirectory( getCWD() )
|
31
|
-
.withDelay( 500 )
|
32
|
-
.onChange( function() {
|
33
|
-
|
34
|
-
// Clear the screen
|
35
|
-
command( 'cls' )
|
36
|
-
.run();
|
37
|
-
|
38
|
-
// This is neccessary so changes to tests get picked up right away.
|
39
|
-
pagePoolClear();
|
40
|
-
|
41
|
-
runTests( solution );
|
42
|
-
|
43
|
-
} )
|
44
|
-
.start();
|
45
|
-
|
46
|
-
} else {
|
47
|
-
runTests( solution );
|
48
|
-
}
|
49
|
-
|
50
|
-
}
|
51
|
-
|
52
|
-
/**
|
53
|
-
* Make sure the TestBox framework is installed
|
54
|
-
*/
|
55
|
-
private function ensureTestBox() {
|
56
|
-
var excerciseRoot = getCWD();
|
57
|
-
var testBoxRoot = excerciseRoot & '/testbox';
|
58
|
-
|
59
|
-
if( !directoryExists( testBoxRoot ) ) {
|
60
|
-
|
61
|
-
print.boldYellowLine( 'Installing some missing dependencies for you!' ).toConsole();
|
62
|
-
command( 'install' )
|
63
|
-
.inWorkingDirectory( excerciseRoot )
|
64
|
-
.run();
|
65
|
-
}
|
66
|
-
|
67
|
-
// Bootstrap TestBox framework
|
68
|
-
filesystemUtil.createMapping( '/testbox', testBoxRoot );
|
69
|
-
}
|
70
|
-
|
71
|
-
/**
|
72
|
-
* Invoke TestBox to run the test suite
|
73
|
-
*/
|
74
|
-
private function runTests( boolean solution=false ) {
|
75
|
-
|
76
|
-
// Create TestBox and run the tests
|
77
|
-
testData = new testbox.system.TestBox()
|
78
|
-
.runRaw( directory = {
|
79
|
-
// Find all CFCs...
|
80
|
-
mapping = filesystemUtil.makePathRelative( getCWD() ),
|
81
|
-
// ... in this directory ...
|
82
|
-
recurse = false,
|
83
|
-
// ... whose name ends in "test"
|
84
|
-
filter = function( path ) {
|
85
|
-
return path.reFind( ( solution ? 'Solution' : '' ) & 'Test.cfc$' );
|
86
|
-
}
|
87
|
-
} )
|
88
|
-
.getMemento();
|
89
|
-
|
90
|
-
// Print out the results with ANSI formatting for the CLI
|
91
|
-
getInstance( 'CLIRenderer@testbox-commands' )
|
92
|
-
.render( print, testData, true );
|
93
|
-
|
94
|
-
print.toConsole();
|
95
|
-
|
96
|
-
// Set proper exit code
|
97
|
-
if( testData.totalFail || testData.totalError ) {
|
98
|
-
setExitCode( 1 );
|
99
|
-
}
|
100
|
-
}
|
101
|
-
|
102
|
-
}
|
103
|
-
|
@@ -1,37 +0,0 @@
|
|
1
|
-
<!---
|
2
|
-
|
3
|
-
This file will only be used if you want to start up a web server in this directory. You can do so by running:
|
4
|
-
|
5
|
-
$> box
|
6
|
-
CommandBox> install
|
7
|
-
CommandBox> server start
|
8
|
-
|
9
|
-
However, this is not necessary unless you really just want to use the HTML reporters on TestBox.
|
10
|
-
Ideally, you'll skip the need for this file entirely and just run the tests directly frm the CLI like this:
|
11
|
-
|
12
|
-
CommandBox> task run TestRunner
|
13
|
-
|
14
|
-
--->
|
15
|
-
<cfsetting showDebugOutput="false">
|
16
|
-
<cfparam name="url.reporter" default="simple">
|
17
|
-
<cfscript>
|
18
|
-
// get a list of all CFCs in this folder whose name looks like "XXXTest.cfc"
|
19
|
-
// And turn it into compnent path relative to the web root
|
20
|
-
url.bundles = directoryList(
|
21
|
-
path=expandPath( '/' ),
|
22
|
-
filter='*Test.cfc' )
|
23
|
-
.map( function( path ) {
|
24
|
-
return path
|
25
|
-
.replaceNoCase( expandPath( '/' ), '' )
|
26
|
-
.left( -4 )
|
27
|
-
} )
|
28
|
-
.toList();
|
29
|
-
</cfscript>
|
30
|
-
|
31
|
-
<!--- Ensure TestBox --->
|
32
|
-
<cfif fileExists( "/testbox/system/runners/HTMLRunner.cfm" )>
|
33
|
-
<!--- Include the TestBox HTML Runner --->
|
34
|
-
<cfinclude template="/testbox/system/runners/HTMLRunner.cfm">
|
35
|
-
<cfelse>
|
36
|
-
Oops, you don't have TestBox installed yet! Please run <b>box install</b> from the root of your excercise folder and refresh this page.
|
37
|
-
</cfif>
|
File without changes
|
@@ -1,39 +0,0 @@
|
|
1
|
-
component extends="testbox.system.BaseSpec" {
|
2
|
-
|
3
|
-
function beforeAll(){
|
4
|
-
SUT = createObject( 'Gigasecond' );
|
5
|
-
}
|
6
|
-
|
7
|
-
function run(){
|
8
|
-
|
9
|
-
describe( "My Gigasecond class", function(){
|
10
|
-
|
11
|
-
describe( 'Add one gigasecond to the input.', function(){
|
12
|
-
|
13
|
-
it( 'date only specification of time', function(){
|
14
|
-
expect( SUT.add( input='2011-04-25' ) ).toBe( '2043-01-01T01:46:40' );
|
15
|
-
});
|
16
|
-
|
17
|
-
it( 'second test for date only specification of time', function(){
|
18
|
-
expect( SUT.add( input='1977-06-13' ) ).toBe( '2009-02-19T01:46:40' );
|
19
|
-
});
|
20
|
-
|
21
|
-
it( 'third test for date only specification of time', function(){
|
22
|
-
expect( SUT.add( input='1959-07-19' ) ).toBe( '1991-03-27T01:46:40' );
|
23
|
-
});
|
24
|
-
|
25
|
-
it( 'full time specified', function(){
|
26
|
-
expect( SUT.add( input='2015-01-24T22:00:00' ) ).toBe( '2046-10-02T23:46:40' );
|
27
|
-
});
|
28
|
-
|
29
|
-
it( 'full time with day roll-over', function(){
|
30
|
-
expect( SUT.add( input='2015-01-24T23:59:59' ) ).toBe( '2046-10-03T01:46:39' );
|
31
|
-
});
|
32
|
-
|
33
|
-
});
|
34
|
-
|
35
|
-
});
|
36
|
-
|
37
|
-
}
|
38
|
-
|
39
|
-
}
|
@@ -1,16 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Here is an example solution for the Gigasecond exercise
|
3
|
-
*/
|
4
|
-
component {
|
5
|
-
|
6
|
-
function add( input ) {
|
7
|
-
// Convert to local time
|
8
|
-
input = dateConvert( 'utc2Local', input );
|
9
|
-
// Add 1 billion seconds
|
10
|
-
var newDate = dateAdd( 's', 1000000000, input );
|
11
|
-
// Convert back to UTC
|
12
|
-
newDate = dateConvert( 'local2Utc', newDate );
|
13
|
-
return dateFormat( newDate, 'yyyy-mm-dd' ) & 'T' & timeFormat( newDate, 'HH:mm:ss' );
|
14
|
-
}
|
15
|
-
|
16
|
-
}
|
@@ -1,103 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* I am a CommandBox task runner which you can use to test your implementation of this exercise against the
|
3
|
-
* provided test suite. To use me, open the CommandBox CLI and run this:
|
4
|
-
*
|
5
|
-
* CommandBox> task run TestRunner
|
6
|
-
*
|
7
|
-
* To start up a test watcher that will automatically rerun the test suite every time you save a file change, run this:
|
8
|
-
*
|
9
|
-
* CommandBox> task run TestRunner --watcher
|
10
|
-
*
|
11
|
-
*/
|
12
|
-
component {
|
13
|
-
|
14
|
-
/**
|
15
|
-
* @solution Runs the tests against the solution
|
16
|
-
* @watcher Start up a file watch that re-runs the tests on file changes. Use Ctrl-C to stop
|
17
|
-
*/
|
18
|
-
function run( boolean solution=false, boolean watcher=false ) {
|
19
|
-
|
20
|
-
ensureTestBox();
|
21
|
-
|
22
|
-
if( watcher ) {
|
23
|
-
|
24
|
-
// Tabula rasa
|
25
|
-
command( 'cls' ).run();
|
26
|
-
|
27
|
-
// Start watcher
|
28
|
-
watch()
|
29
|
-
.paths( '*.cfc' )
|
30
|
-
.inDirectory( getCWD() )
|
31
|
-
.withDelay( 500 )
|
32
|
-
.onChange( function() {
|
33
|
-
|
34
|
-
// Clear the screen
|
35
|
-
command( 'cls' )
|
36
|
-
.run();
|
37
|
-
|
38
|
-
// This is neccessary so changes to tests get picked up right away.
|
39
|
-
pagePoolClear();
|
40
|
-
|
41
|
-
runTests( solution );
|
42
|
-
|
43
|
-
} )
|
44
|
-
.start();
|
45
|
-
|
46
|
-
} else {
|
47
|
-
runTests( solution );
|
48
|
-
}
|
49
|
-
|
50
|
-
}
|
51
|
-
|
52
|
-
/**
|
53
|
-
* Make sure the TestBox framework is installed
|
54
|
-
*/
|
55
|
-
private function ensureTestBox() {
|
56
|
-
var excerciseRoot = getCWD();
|
57
|
-
var testBoxRoot = excerciseRoot & '/testbox';
|
58
|
-
|
59
|
-
if( !directoryExists( testBoxRoot ) ) {
|
60
|
-
|
61
|
-
print.boldYellowLine( 'Installing some missing dependencies for you!' ).toConsole();
|
62
|
-
command( 'install' )
|
63
|
-
.inWorkingDirectory( excerciseRoot )
|
64
|
-
.run();
|
65
|
-
}
|
66
|
-
|
67
|
-
// Bootstrap TestBox framework
|
68
|
-
filesystemUtil.createMapping( '/testbox', testBoxRoot );
|
69
|
-
}
|
70
|
-
|
71
|
-
/**
|
72
|
-
* Invoke TestBox to run the test suite
|
73
|
-
*/
|
74
|
-
private function runTests( boolean solution=false ) {
|
75
|
-
|
76
|
-
// Create TestBox and run the tests
|
77
|
-
testData = new testbox.system.TestBox()
|
78
|
-
.runRaw( directory = {
|
79
|
-
// Find all CFCs...
|
80
|
-
mapping = filesystemUtil.makePathRelative( getCWD() ),
|
81
|
-
// ... in this directory ...
|
82
|
-
recurse = false,
|
83
|
-
// ... whose name ends in "test"
|
84
|
-
filter = function( path ) {
|
85
|
-
return path.reFind( ( solution ? 'Solution' : '' ) & 'Test.cfc$' );
|
86
|
-
}
|
87
|
-
} )
|
88
|
-
.getMemento();
|
89
|
-
|
90
|
-
// Print out the results with ANSI formatting for the CLI
|
91
|
-
getInstance( 'CLIRenderer@testbox-commands' )
|
92
|
-
.render( print, testData, true );
|
93
|
-
|
94
|
-
print.toConsole();
|
95
|
-
|
96
|
-
// Set proper exit code
|
97
|
-
if( testData.totalFail || testData.totalError ) {
|
98
|
-
setExitCode( 1 );
|
99
|
-
}
|
100
|
-
}
|
101
|
-
|
102
|
-
}
|
103
|
-
|
@@ -1,37 +0,0 @@
|
|
1
|
-
<!---
|
2
|
-
|
3
|
-
This file will only be used if you want to start up a web server in this directory. You can do so by running:
|
4
|
-
|
5
|
-
$> box
|
6
|
-
CommandBox> install
|
7
|
-
CommandBox> server start
|
8
|
-
|
9
|
-
However, this is not necessary unless you really just want to use the HTML reporters on TestBox.
|
10
|
-
Ideally, you'll skip the need for this file entirely and just run the tests directly frm the CLI like this:
|
11
|
-
|
12
|
-
CommandBox> task run TestRunner
|
13
|
-
|
14
|
-
--->
|
15
|
-
<cfsetting showDebugOutput="false">
|
16
|
-
<cfparam name="url.reporter" default="simple">
|
17
|
-
<cfscript>
|
18
|
-
// get a list of all CFCs in this folder whose name looks like "XXXTest.cfc"
|
19
|
-
// And turn it into compnent path relative to the web root
|
20
|
-
url.bundles = directoryList(
|
21
|
-
path=expandPath( '/' ),
|
22
|
-
filter='*Test.cfc' )
|
23
|
-
.map( function( path ) {
|
24
|
-
return path
|
25
|
-
.replaceNoCase( expandPath( '/' ), '' )
|
26
|
-
.left( -4 )
|
27
|
-
} )
|
28
|
-
.toList();
|
29
|
-
</cfscript>
|
30
|
-
|
31
|
-
<!--- Ensure TestBox --->
|
32
|
-
<cfif fileExists( "/testbox/system/runners/HTMLRunner.cfm" )>
|
33
|
-
<!--- Include the TestBox HTML Runner --->
|
34
|
-
<cfinclude template="/testbox/system/runners/HTMLRunner.cfm">
|
35
|
-
<cfelse>
|
36
|
-
Oops, you don't have TestBox installed yet! Please run <b>box install</b> from the root of your excercise folder and refresh this page.
|
37
|
-
</cfif>
|