trackler 2.1.0.16 → 2.1.0.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/fixtures/tracks/snowflake/exercises/snowflake-only/{description.md → .meta/description.md} +0 -0
- data/fixtures/tracks/snowflake/exercises/snowflake-only/{metadata.yml → .meta/metadata.yml} +0 -0
- data/lib/trackler/guaranteed_file.rb +2 -2
- data/lib/trackler/version.rb +1 -1
- data/tracks/coq/exercises/tautology/{description.md → .meta/description.md} +0 -0
- data/tracks/coq/exercises/tautology/{metadata.yml → .meta/metadata.yml} +0 -0
- data/tracks/java/exercises/robot-simulator/src/test/java/RobotTest.java +1 -1
- data/tracks/perl6/config.json +1 -1
- data/tracks/ruby/exercises/phone-number/.meta/.version +1 -1
- data/tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb +1 -1
- data/tracks/ruby/exercises/phone-number/phone_number_test.rb +2 -7
- data/tracks/ruby/exercises/space-age/.meta/.version +1 -0
- data/tracks/ruby/exercises/space-age/.meta/generator/space_age_case.rb +11 -0
- data/tracks/ruby/exercises/space-age/.meta/generator/test_template.erb +25 -0
- data/tracks/ruby/exercises/space-age/.meta/solutions/space_age.rb +4 -0
- data/tracks/ruby/exercises/space-age/space_age_test.rb +30 -16
- data/tracks/ruby/lib/generator/underscore.rb +6 -0
- data/tracks/rust/config.json +0 -1
- data/tracks/typescript/exercises/anagram/anagram.test.ts +10 -10
- data/tracks/typescript/exercises/beer-song/beer-song.test.ts +5 -5
- data/tracks/typescript/exercises/bob/bob.test.ts +16 -16
- data/tracks/typescript/exercises/etl/etl.test.ts +3 -3
- data/tracks/typescript/exercises/food-chain/food-chain.test.ts +9 -9
- data/tracks/typescript/exercises/gigasecond/gigasecond.test.ts +3 -3
- data/tracks/typescript/exercises/grade-school/grade-school.test.ts +8 -8
- data/tracks/typescript/exercises/hamming/hamming.test.ts +7 -7
- data/tracks/typescript/exercises/hello-world/hello-world.test.ts +2 -2
- data/tracks/typescript/exercises/leap/leap.test.ts +7 -7
- data/tracks/typescript/exercises/pangram/pangram.test.ts +8 -8
- data/tracks/typescript/exercises/phone-number/phone-number.test.ts +9 -9
- data/tracks/typescript/exercises/rna-transcription/rna-transcription.test.ts +7 -7
- data/tracks/typescript/exercises/robot-name/robot-name.test.ts +7 -7
- data/tracks/typescript/exercises/say/say.test.ts +15 -15
- data/tracks/typescript/exercises/space-age/space-age.test.ts +8 -8
- data/tracks/typescript/exercises/word-count/word-count.test.ts +11 -11
- data/tracks/typescript/exercises/wordy/wordy.test.ts +15 -15
- metadata +8 -11
- data/tracks/coq/exercises/hello-world/metadata.yml +0 -3
- data/tracks/coq/exercises/rna-transcription/metadata.yml +0 -3
- data/tracks/rust/exercises/luhn-from/description.md +0 -9
- data/tracks/rust/exercises/luhn-from/metadata.yml +0 -3
- data/tracks/rust/exercises/luhn-trait/description.md +0 -17
- data/tracks/rust/exercises/luhn-trait/metadata.yml +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04fb381a30ed2a42604ad108aa8dd1e5a0df7c86
|
4
|
+
data.tar.gz: 3993f6c27d0dbd3d918660247df9f71cd42cd385
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 588207f9777f4b7ee6d1dcdaaff4e4dc59d7cee2511961c9c573b22a5a3dda5abb7fc5f21a11809a84c99f655589774eae713e4188d3c69766dec92cc7e8f9ca
|
7
|
+
data.tar.gz: 4187a9e3c3896766ec9887c511bed8f8c9e78cee91c819a5133095253e1297941b76d15d4cddc6f70cc89600945d360e214d35dab80105c6afcdfdd0d2135f24
|
data/fixtures/tracks/snowflake/exercises/snowflake-only/{description.md → .meta/description.md}
RENAMED
File without changes
|
File without changes
|
@@ -28,11 +28,11 @@ module Trackler
|
|
28
28
|
|
29
29
|
class TrackFile < GuaranteedFile
|
30
30
|
def self.location(problem:, track:, filename:)
|
31
|
-
File.join(problem.root, 'tracks', track.id, 'exercises', problem.slug, filename)
|
31
|
+
File.join(problem.root, 'tracks', track.id, 'exercises', problem.slug, '.meta', filename)
|
32
32
|
end
|
33
33
|
|
34
34
|
def url
|
35
|
-
"#{track.repository}/blob/master/exercises/%s/#{filename}" % problem.slug
|
35
|
+
"#{track.repository}/blob/master/exercises/%s/.meta/#{filename}" % problem.slug
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
data/lib/trackler/version.rb
CHANGED
File without changes
|
File without changes
|
data/tracks/perl6/config.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2
|
@@ -2,7 +2,7 @@
|
|
2
2
|
require 'minitest/autorun'
|
3
3
|
require_relative 'phone_number'
|
4
4
|
|
5
|
-
# Common test data version: 1.
|
5
|
+
# Common test data version: 1.2.0 39cba0d
|
6
6
|
class PhoneNumberTest < Minitest::Test
|
7
7
|
def test_cleans_the_number
|
8
8
|
# skip
|
@@ -54,11 +54,6 @@ class PhoneNumberTest < Minitest::Test
|
|
54
54
|
assert_nil PhoneNumber.clean("123-@:!-7890")
|
55
55
|
end
|
56
56
|
|
57
|
-
def test_invalid_with_right_number_of_digits_but_letters_mixed_in
|
58
|
-
skip
|
59
|
-
assert_nil PhoneNumber.clean("1a2b3c4d5e6f7g8h9i0j")
|
60
|
-
end
|
61
|
-
|
62
57
|
def test_invalid_if_area_code_does_not_start_with_2_9
|
63
58
|
skip
|
64
59
|
assert_nil PhoneNumber.clean("(123) 456-7890")
|
@@ -88,6 +83,6 @@ class PhoneNumberTest < Minitest::Test
|
|
88
83
|
|
89
84
|
def test_bookkeeping
|
90
85
|
skip
|
91
|
-
assert_equal
|
86
|
+
assert_equal 2, BookKeeping::VERSION
|
92
87
|
end
|
93
88
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
1
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'generator/exercise_case'
|
2
|
+
|
3
|
+
class SpaceAgeCase < Generator::ExerciseCase
|
4
|
+
using Generator::Underscore
|
5
|
+
|
6
|
+
def workload
|
7
|
+
indent_lines(["age = SpaceAge.new(#{seconds.underscore})",
|
8
|
+
"assert_in_delta #{expected}, age.on_#{planet.downcase}, DELTA"
|
9
|
+
], 4)
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require_relative '<%= exercise_name %>'
|
4
|
+
|
5
|
+
# Common test data version: <%= canonical_data_version %> <%= abbreviated_commit_hash %>
|
6
|
+
class <%= exercise_name_camel %>Test < Minitest::Test
|
7
|
+
# assert_in_delta will pass if the difference
|
8
|
+
# between the values being compared is less
|
9
|
+
# than the allowed delta
|
10
|
+
DELTA = 0.01
|
11
|
+
|
12
|
+
<% test_cases.each_with_index do |test_case, idx| %>
|
13
|
+
def <%= test_case.name %>
|
14
|
+
<%= test_case.skipped(idx) %>
|
15
|
+
<%= test_case.workload %>
|
16
|
+
end
|
17
|
+
|
18
|
+
<% end %>
|
19
|
+
<%= IO.read(XRUBY_LIB + '/bookkeeping.md') %>
|
20
|
+
|
21
|
+
def test_bookkeeping
|
22
|
+
skip
|
23
|
+
assert_equal <%= version %>, BookKeeping::VERSION
|
24
|
+
end
|
25
|
+
end
|
@@ -2,66 +2,80 @@
|
|
2
2
|
require 'minitest/autorun'
|
3
3
|
require_relative 'space_age'
|
4
4
|
|
5
|
+
# Common test data version: 1.0.0 7c63e40
|
5
6
|
class SpaceAgeTest < Minitest::Test
|
7
|
+
# assert_in_delta will pass if the difference
|
8
|
+
# between the values being compared is less
|
9
|
+
# than the allowed delta
|
6
10
|
DELTA = 0.01
|
7
11
|
|
8
|
-
def
|
9
|
-
|
10
|
-
assert_in_delta 1_000_000, age.seconds, DELTA
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_age_in_earth_years
|
14
|
-
skip
|
12
|
+
def test_age_on_earth
|
13
|
+
# skip
|
15
14
|
age = SpaceAge.new(1_000_000_000)
|
16
15
|
assert_in_delta 31.69, age.on_earth, DELTA
|
17
16
|
end
|
18
17
|
|
19
|
-
def
|
18
|
+
def test_age_on_mercury
|
20
19
|
skip
|
21
20
|
age = SpaceAge.new(2_134_835_688)
|
22
|
-
assert_in_delta 67.65, age.on_earth, DELTA
|
23
21
|
assert_in_delta 280.88, age.on_mercury, DELTA
|
24
22
|
end
|
25
23
|
|
26
|
-
def
|
24
|
+
def test_age_on_venus
|
27
25
|
skip
|
28
26
|
age = SpaceAge.new(189_839_836)
|
29
|
-
assert_in_delta 6.02, age.on_earth, DELTA
|
30
27
|
assert_in_delta 9.78, age.on_venus, DELTA
|
31
28
|
end
|
32
29
|
|
33
30
|
def test_age_on_mars
|
34
31
|
skip
|
35
32
|
age = SpaceAge.new(2_329_871_239)
|
36
|
-
assert_in_delta 73.83, age.on_earth, DELTA
|
37
33
|
assert_in_delta 39.25, age.on_mars, DELTA
|
38
34
|
end
|
39
35
|
|
40
36
|
def test_age_on_jupiter
|
41
37
|
skip
|
42
38
|
age = SpaceAge.new(901_876_382)
|
43
|
-
assert_in_delta 28.58, age.on_earth, DELTA
|
44
39
|
assert_in_delta 2.41, age.on_jupiter, DELTA
|
45
40
|
end
|
46
41
|
|
47
42
|
def test_age_on_saturn
|
48
43
|
skip
|
49
44
|
age = SpaceAge.new(3_000_000_000)
|
50
|
-
assert_in_delta 95.06, age.on_earth, DELTA
|
51
45
|
assert_in_delta 3.23, age.on_saturn, DELTA
|
52
46
|
end
|
53
47
|
|
54
48
|
def test_age_on_uranus
|
55
49
|
skip
|
56
50
|
age = SpaceAge.new(3_210_123_456)
|
57
|
-
assert_in_delta 101.72, age.on_earth, DELTA
|
58
51
|
assert_in_delta 1.21, age.on_uranus, DELTA
|
59
52
|
end
|
60
53
|
|
61
54
|
def test_age_on_neptune
|
62
55
|
skip
|
63
56
|
age = SpaceAge.new(8_210_123_456)
|
64
|
-
assert_in_delta 260.16, age.on_earth, DELTA
|
65
57
|
assert_in_delta 1.58, age.on_neptune, DELTA
|
66
58
|
end
|
59
|
+
|
60
|
+
# Problems in exercism evolve over time, as we find better ways to ask
|
61
|
+
# questions.
|
62
|
+
# The version number refers to the version of the problem you solved,
|
63
|
+
# not your solution.
|
64
|
+
#
|
65
|
+
# Define a constant named VERSION inside of the top level BookKeeping
|
66
|
+
# module, which may be placed near the end of your file.
|
67
|
+
#
|
68
|
+
# In your file, it will look like this:
|
69
|
+
#
|
70
|
+
# module BookKeeping
|
71
|
+
# VERSION = 1 # Where the version number matches the one in the test.
|
72
|
+
# end
|
73
|
+
#
|
74
|
+
# If you are curious, read more about constants on RubyDoc:
|
75
|
+
# http://ruby-doc.org/docs/ruby-doc-bundle/UsersGuide/rg/constants.html
|
76
|
+
|
77
|
+
def test_bookkeeping
|
78
|
+
skip
|
79
|
+
assert_equal 1, BookKeeping::VERSION
|
80
|
+
end
|
67
81
|
end
|
data/tracks/rust/config.json
CHANGED
@@ -9,70 +9,70 @@ describe('Anagram', () => {
|
|
9
9
|
expect(matches).toEqual([])
|
10
10
|
})
|
11
11
|
|
12
|
-
|
12
|
+
xit("detects simple anagram", () => {
|
13
13
|
const subject = new Anagram("ant")
|
14
14
|
const matches = subject.matches(...['tan', 'stand', 'at'])
|
15
15
|
|
16
16
|
expect(matches).toEqual(['tan'])
|
17
17
|
})
|
18
18
|
|
19
|
-
|
19
|
+
xit("does not detect false positives", () => {
|
20
20
|
const subject = new Anagram("galea")
|
21
21
|
const matches = subject.matches(...["eagle"])
|
22
22
|
|
23
23
|
expect(matches).toEqual([])
|
24
24
|
})
|
25
25
|
|
26
|
-
|
26
|
+
xit("detects multiple anagrams", () => {
|
27
27
|
const subject = new Anagram("master")
|
28
28
|
const matches = subject.matches(...['stream', 'pigeon', 'maters'])
|
29
29
|
|
30
30
|
expect(matches).toEqual(['stream', 'maters'])
|
31
31
|
})
|
32
32
|
|
33
|
-
|
33
|
+
xit("does not detect anagram subsets", () => {
|
34
34
|
const subject = new Anagram("good")
|
35
35
|
const matches = subject.matches(...['dog', 'goody'])
|
36
36
|
|
37
37
|
expect(matches).toEqual([])
|
38
38
|
})
|
39
39
|
|
40
|
-
|
40
|
+
xit("detects anagram", () => {
|
41
41
|
const subject = new Anagram("listen")
|
42
42
|
const matches = subject.matches(...['enlists', 'google', 'inlets', 'banana'])
|
43
43
|
|
44
44
|
expect(matches).toEqual(['inlets'])
|
45
45
|
})
|
46
46
|
|
47
|
-
|
47
|
+
xit("detects multiple anagrams", () => {
|
48
48
|
const subject = new Anagram("allergy")
|
49
49
|
const matches = subject.matches(...['gallery', 'ballerina', 'regally', 'clergy', 'largely', 'leading'])
|
50
50
|
|
51
51
|
expect(matches).toEqual(['gallery', 'regally', 'largely'])
|
52
52
|
})
|
53
53
|
|
54
|
-
|
54
|
+
xit("detects anagrams case-insensitively", () => {
|
55
55
|
const subject = new Anagram("Orchestra")
|
56
56
|
const matches = subject.matches(...['cashregister', 'Carthorse', 'radishes'])
|
57
57
|
|
58
58
|
expect(matches).toEqual(['Carthorse'])
|
59
59
|
})
|
60
60
|
|
61
|
-
|
61
|
+
xit("does not detect a word as its own anagram", () => {
|
62
62
|
const subject = new Anagram("banana")
|
63
63
|
const matches = subject.matches(...['Banana'])
|
64
64
|
|
65
65
|
expect(matches).toEqual([])
|
66
66
|
})
|
67
67
|
|
68
|
-
|
68
|
+
xit("matches() accepts string arguments", () => {
|
69
69
|
const subject = new Anagram("ant")
|
70
70
|
const matches = subject.matches("stand", "tan", "at")
|
71
71
|
|
72
72
|
expect(matches).toEqual(["tan"])
|
73
73
|
})
|
74
74
|
|
75
|
-
|
75
|
+
xit("matches() accepts single string argument", () => {
|
76
76
|
const subject = new Anagram("ant")
|
77
77
|
const matches = subject.matches("tan")
|
78
78
|
|
@@ -10,21 +10,21 @@ Take one down and pass it around, 7 bottles of beer on the wall.
|
|
10
10
|
expect(Beer.verse(8)).toEqual(expected)
|
11
11
|
})
|
12
12
|
|
13
|
-
|
13
|
+
xit('handles 1 bottle', () => {
|
14
14
|
const expected = `1 bottle of beer on the wall, 1 bottle of beer.
|
15
15
|
Take it down and pass it around, no more bottles of beer on the wall.
|
16
16
|
`
|
17
17
|
expect(Beer.verse(1)).toEqual(expected)
|
18
18
|
})
|
19
19
|
|
20
|
-
|
20
|
+
xit('handles 0 bottles', () => {
|
21
21
|
const expected = `No more bottles of beer on the wall, no more bottles of beer.
|
22
22
|
Go to the store and buy some more, 99 bottles of beer on the wall.
|
23
23
|
`
|
24
24
|
expect(Beer.verse(0)).toEqual(expected)
|
25
25
|
})
|
26
26
|
|
27
|
-
|
27
|
+
xit('sings several verses', () => {
|
28
28
|
const expected = `8 bottles of beer on the wall, 8 bottles of beer.
|
29
29
|
Take one down and pass it around, 7 bottles of beer on the wall.
|
30
30
|
|
@@ -37,7 +37,7 @@ Take one down and pass it around, 5 bottles of beer on the wall.
|
|
37
37
|
expect(Beer.sing(8, 6)).toEqual(expected)
|
38
38
|
})
|
39
39
|
|
40
|
-
|
40
|
+
xit('sings the rest of the verses', () => {
|
41
41
|
const expected = `3 bottles of beer on the wall, 3 bottles of beer.
|
42
42
|
Take one down and pass it around, 2 bottles of beer on the wall.
|
43
43
|
|
@@ -53,7 +53,7 @@ Go to the store and buy some more, 99 bottles of beer on the wall.
|
|
53
53
|
expect(Beer.sing(3)).toEqual(expected)
|
54
54
|
})
|
55
55
|
|
56
|
-
|
56
|
+
xit('sings all the verses', () => {
|
57
57
|
const song = Beer.sing()
|
58
58
|
expect(song).toEqual(`99 bottles of beer on the wall, 99 bottles of beer.
|
59
59
|
Take one down and pass it around, 98 bottles of beer on the wall.
|
@@ -9,82 +9,82 @@ describe('Bob', () => {
|
|
9
9
|
expect(result).toEqual('Whatever.')
|
10
10
|
})
|
11
11
|
|
12
|
-
|
12
|
+
xit('shouting', () => {
|
13
13
|
const result = bob.hey('WATCH OUT!')
|
14
14
|
expect(result).toEqual('Whoa, chill out!')
|
15
15
|
})
|
16
16
|
|
17
|
-
|
17
|
+
xit('asking a question', () => {
|
18
18
|
const result = bob.hey('Does this cryogenic chamber make me look fat?')
|
19
19
|
expect(result).toEqual('Sure.')
|
20
20
|
})
|
21
21
|
|
22
|
-
|
22
|
+
xit('talking forcefully', () => {
|
23
23
|
const result = bob.hey("Let's go make out behind the gym!")
|
24
24
|
expect(result).toEqual('Whatever.')
|
25
25
|
})
|
26
26
|
|
27
|
-
|
27
|
+
xit('using acronyms in regular speech', () => {
|
28
28
|
const result = bob.hey("It's OK if you don't want to go to the DMV.")
|
29
29
|
expect(result).toEqual('Whatever.')
|
30
30
|
})
|
31
31
|
|
32
|
-
|
32
|
+
xit('forceful questions', () => {
|
33
33
|
const result = bob.hey('WHAT THE HELL WERE YOU THINKING?')
|
34
34
|
expect(result).toEqual('Whoa, chill out!')
|
35
35
|
})
|
36
36
|
|
37
|
-
|
37
|
+
xit('shouting numbers', () => {
|
38
38
|
const result = bob.hey('1, 2, 3 GO!')
|
39
39
|
expect(result).toEqual('Whoa, chill out!')
|
40
40
|
})
|
41
41
|
|
42
|
-
|
42
|
+
xit('only numbers', () => {
|
43
43
|
const result = bob.hey('1, 2, 3')
|
44
44
|
expect(result).toEqual('Whatever.')
|
45
45
|
})
|
46
46
|
|
47
|
-
|
47
|
+
xit('question with only numbers', () => {
|
48
48
|
const result = bob.hey('4?')
|
49
49
|
expect(result).toEqual('Sure.')
|
50
50
|
})
|
51
51
|
|
52
|
-
|
52
|
+
xit('shouting with special characters', () => {
|
53
53
|
const result = bob.hey('ZOMG THE %^*@#$(*^ ZOMBIES ARE COMING!!11!!1!')
|
54
54
|
expect(result).toEqual('Whoa, chill out!')
|
55
55
|
})
|
56
56
|
|
57
|
-
|
57
|
+
xit('shouting with umlauts', () => {
|
58
58
|
const result = bob.hey('\xdcML\xc4\xdcTS!')
|
59
59
|
expect(result).toEqual('Whoa, chill out!')
|
60
60
|
})
|
61
61
|
|
62
|
-
|
62
|
+
xit('calmly speaking about umlauts', () => {
|
63
63
|
const result = bob.hey('\xfcML\xe4\xdcTS')
|
64
64
|
expect(result).toEqual('Whatever.')
|
65
65
|
})
|
66
66
|
|
67
|
-
|
67
|
+
xit('shouting with no exclamation mark', () => {
|
68
68
|
const result = bob.hey('I HATE YOU')
|
69
69
|
expect(result).toEqual('Whoa, chill out!')
|
70
70
|
})
|
71
71
|
|
72
|
-
|
72
|
+
xit('statement containing question mark', () => {
|
73
73
|
const result = bob.hey('Ending with a ? means a question.')
|
74
74
|
expect(result).toEqual('Whatever.')
|
75
75
|
})
|
76
76
|
|
77
|
-
|
77
|
+
xit('prattling on', () => {
|
78
78
|
const result = bob.hey('Wait! Hang on. Are you going to be OK?')
|
79
79
|
expect(result).toEqual('Sure.')
|
80
80
|
})
|
81
81
|
|
82
|
-
|
82
|
+
xit('silence', () => {
|
83
83
|
const result = bob.hey('')
|
84
84
|
expect(result).toEqual('Fine. Be that way!')
|
85
85
|
})
|
86
86
|
|
87
|
-
|
87
|
+
xit('prolonged silence', () => {
|
88
88
|
const result = bob.hey(' ')
|
89
89
|
expect(result).toEqual('Fine. Be that way!')
|
90
90
|
})
|
@@ -9,21 +9,21 @@ describe('Transform', () => {
|
|
9
9
|
expect(transform(old)).toEqual(expected)
|
10
10
|
})
|
11
11
|
|
12
|
-
|
12
|
+
xit('transforms more values', () => {
|
13
13
|
const old = { 1: [ 'A', 'E', 'I', 'O', 'U' ] }
|
14
14
|
const expected = { a: 1, e: 1, i: 1, o: 1, u: 1 }
|
15
15
|
|
16
16
|
expect(transform(old)).toEqual(expected)
|
17
17
|
})
|
18
18
|
|
19
|
-
|
19
|
+
xit('transforms more keys', () => {
|
20
20
|
const old = { 1: [ 'A', 'E' ], 2: [ 'D', 'G' ] }
|
21
21
|
const expected = { a: 1, e: 1, d: 2, g: 2 }
|
22
22
|
|
23
23
|
expect(transform(old)).toEqual(expected)
|
24
24
|
})
|
25
25
|
|
26
|
-
|
26
|
+
xit('transforms a full dataset', () => {
|
27
27
|
const old = {
|
28
28
|
1: [ 'A', 'E', 'I', 'O', 'U', 'L', 'N', 'R', 'S', 'T' ],
|
29
29
|
2: [ 'D', 'G' ],
|
@@ -9,7 +9,7 @@ I don't know why she swallowed the fly. Perhaps she'll die.
|
|
9
9
|
expect(FoodChain.verse(1)).toEqual(expected)
|
10
10
|
})
|
11
11
|
|
12
|
-
|
12
|
+
xit('spider', () => {
|
13
13
|
const expected = `I know an old lady who swallowed a spider.
|
14
14
|
It wriggled and jiggled and tickled inside her.
|
15
15
|
She swallowed the spider to catch the fly.
|
@@ -19,7 +19,7 @@ I don't know why she swallowed the fly. Perhaps she'll die.
|
|
19
19
|
expect(FoodChain.verse(2)).toEqual(expected)
|
20
20
|
})
|
21
21
|
|
22
|
-
|
22
|
+
xit('bird', () => {
|
23
23
|
const expected = `I know an old lady who swallowed a bird.
|
24
24
|
How absurd to swallow a bird!
|
25
25
|
She swallowed the bird to catch the spider that wriggled and jiggled and tickled inside her.
|
@@ -30,7 +30,7 @@ I don't know why she swallowed the fly. Perhaps she'll die.
|
|
30
30
|
expect(FoodChain.verse(3)).toEqual(expected)
|
31
31
|
})
|
32
32
|
|
33
|
-
|
33
|
+
xit('cat', () => {
|
34
34
|
const expected = `I know an old lady who swallowed a cat.
|
35
35
|
Imagine that, to swallow a cat!
|
36
36
|
She swallowed the cat to catch the bird.
|
@@ -42,7 +42,7 @@ I don't know why she swallowed the fly. Perhaps she'll die.
|
|
42
42
|
expect(FoodChain.verse(4)).toEqual(expected)
|
43
43
|
})
|
44
44
|
|
45
|
-
|
45
|
+
xit('dog', () => {
|
46
46
|
const expected = `I know an old lady who swallowed a dog.
|
47
47
|
What a hog, to swallow a dog!
|
48
48
|
She swallowed the dog to catch the cat.
|
@@ -55,7 +55,7 @@ I don't know why she swallowed the fly. Perhaps she'll die.
|
|
55
55
|
expect(FoodChain.verse(5)).toEqual(expected)
|
56
56
|
})
|
57
57
|
|
58
|
-
|
58
|
+
xit('goat', () => {
|
59
59
|
const expected = `I know an old lady who swallowed a goat.
|
60
60
|
Just opened her throat and swallowed a goat!
|
61
61
|
She swallowed the goat to catch the dog.
|
@@ -69,7 +69,7 @@ I don't know why she swallowed the fly. Perhaps she'll die.
|
|
69
69
|
expect(FoodChain.verse(6)).toEqual(expected)
|
70
70
|
})
|
71
71
|
|
72
|
-
|
72
|
+
xit('cow', () => {
|
73
73
|
const expected = `I know an old lady who swallowed a cow.
|
74
74
|
I don't know how she swallowed a cow!
|
75
75
|
She swallowed the cow to catch the goat.
|
@@ -84,7 +84,7 @@ I don't know why she swallowed the fly. Perhaps she'll die.
|
|
84
84
|
expect(FoodChain.verse(7)).toEqual(expected)
|
85
85
|
})
|
86
86
|
|
87
|
-
|
87
|
+
xit('horse', () => {
|
88
88
|
const expected = `I know an old lady who swallowed a horse.
|
89
89
|
She's dead, of course!
|
90
90
|
`
|
@@ -92,7 +92,7 @@ She's dead, of course!
|
|
92
92
|
expect(FoodChain.verse(8)).toEqual(expected)
|
93
93
|
})
|
94
94
|
|
95
|
-
|
95
|
+
xit('multiple verses', () => {
|
96
96
|
const expected = `I know an old lady who swallowed a fly.
|
97
97
|
I don't know why she swallowed the fly. Perhaps she'll die.
|
98
98
|
|
@@ -105,7 +105,7 @@ I don't know why she swallowed the fly. Perhaps she'll die.
|
|
105
105
|
expect(FoodChain.verses(1, 2)).toEqual(expected)
|
106
106
|
})
|
107
107
|
|
108
|
-
|
108
|
+
xit('the whole song', () => {
|
109
109
|
const expected = `I know an old lady who swallowed a fly.
|
110
110
|
I don't know why she swallowed the fly. Perhaps she'll die.
|
111
111
|
|
@@ -8,19 +8,19 @@ describe('Gigasecond', () => {
|
|
8
8
|
expect(gs.date()).toEqual(expectedDate)
|
9
9
|
})
|
10
10
|
|
11
|
-
|
11
|
+
xit('tells the anniversary is next day when you are born at night', () => {
|
12
12
|
const gs = new Gigasecond(new Date(Date.UTC(2015, 8, 14, 23, 59, 59)))
|
13
13
|
const expectedDate = new Date(Date.UTC(2047, 4, 24, 1, 46, 39))
|
14
14
|
expect(gs.date()).toEqual(expectedDate)
|
15
15
|
})
|
16
16
|
|
17
|
-
|
17
|
+
xit('even works before 1970 (beginning of Unix epoch )', () => {
|
18
18
|
const gs = new Gigasecond(new Date(Date.UTC(1959, 6, 19, 5, 13, 45)))
|
19
19
|
const expectedDate = new Date(Date.UTC(1991, 2, 27, 7, 0, 25))
|
20
20
|
expect(gs.date()).toEqual(expectedDate)
|
21
21
|
})
|
22
22
|
|
23
|
-
|
23
|
+
xit('make sure calling "date" doesn\'t mutate value', () => {
|
24
24
|
const gs = new Gigasecond(new Date(Date.UTC(1959, 6, 19, 5, 13, 45)))
|
25
25
|
const expectedDate = new Date(Date.UTC(1991, 2, 27, 7, 0, 25))
|
26
26
|
gs.date()
|