dart-exercism/beer-song/test/beer_song_test.dart
2024-10-14 11:37:17 +02:00

403 lines
21 KiB
Dart

import 'package:beer_song/beer_song.dart';
import 'package:test/test.dart';
void main() {
final beerSong = BeerSong();
group('BeerSong', () {
group('verse', () {
group('single verse', () {
test('first generic verse', () {
final result = beerSong.recite(99, 1);
expect(
result,
equals(<String>[
'99 bottles of beer on the wall, 99 bottles of beer.',
'Take one down and pass it around, 98 bottles of beer on the wall.'
]));
}, skip: false);
test('last generic verse', () {
final result = beerSong.recite(3, 1);
expect(
result,
equals(<String>[
'3 bottles of beer on the wall, 3 bottles of beer.',
'Take one down and pass it around, 2 bottles of beer on the wall.'
]));
}, skip: true);
test('verse with 2 bottles', () {
final result = beerSong.recite(2, 1);
expect(
result,
equals(<String>[
'2 bottles of beer on the wall, 2 bottles of beer.',
'Take one down and pass it around, 1 bottle of beer on the wall.'
]));
}, skip: true);
test('verse with 1 bottle', () {
final result = beerSong.recite(1, 1);
expect(
result,
equals(<String>[
'1 bottle of beer on the wall, 1 bottle of beer.',
'Take it down and pass it around, no more bottles of beer on the wall.'
]));
}, skip: true);
test('verse with 0 bottles', () {
final result = beerSong.recite(0, 1);
expect(
result,
equals(<String>[
'No more bottles of beer on the wall, no more bottles of beer.',
'Go to the store and buy some more, 99 bottles of beer on the wall.'
]));
}, skip: true);
});
});
group('lyrics', () {
group('multiple verses', () {
test('first two verses', () {
final result = beerSong.recite(99, 2);
expect(
result,
equals(<String>[
'99 bottles of beer on the wall, 99 bottles of beer.',
'Take one down and pass it around, 98 bottles of beer on the wall.',
'',
'98 bottles of beer on the wall, 98 bottles of beer.',
'Take one down and pass it around, 97 bottles of beer on the wall.'
]));
}, skip: true);
test('last three verses', () {
final result = beerSong.recite(2, 3);
expect(
result,
equals(<String>[
'2 bottles of beer on the wall, 2 bottles of beer.',
'Take one down and pass it around, 1 bottle of beer on the wall.',
'',
'1 bottle of beer on the wall, 1 bottle of beer.',
'Take it down and pass it around, no more bottles of beer on the wall.',
'',
'No more bottles of beer on the wall, no more bottles of beer.',
'Go to the store and buy some more, 99 bottles of beer on the wall.'
]));
}, skip: true);
test('all verses', () {
final result = beerSong.recite(99, 100);
expect(
result,
equals(<String>[
'99 bottles of beer on the wall, 99 bottles of beer.',
'Take one down and pass it around, 98 bottles of beer on the wall.',
'',
'98 bottles of beer on the wall, 98 bottles of beer.',
'Take one down and pass it around, 97 bottles of beer on the wall.',
'',
'97 bottles of beer on the wall, 97 bottles of beer.',
'Take one down and pass it around, 96 bottles of beer on the wall.',
'',
'96 bottles of beer on the wall, 96 bottles of beer.',
'Take one down and pass it around, 95 bottles of beer on the wall.',
'',
'95 bottles of beer on the wall, 95 bottles of beer.',
'Take one down and pass it around, 94 bottles of beer on the wall.',
'',
'94 bottles of beer on the wall, 94 bottles of beer.',
'Take one down and pass it around, 93 bottles of beer on the wall.',
'',
'93 bottles of beer on the wall, 93 bottles of beer.',
'Take one down and pass it around, 92 bottles of beer on the wall.',
'',
'92 bottles of beer on the wall, 92 bottles of beer.',
'Take one down and pass it around, 91 bottles of beer on the wall.',
'',
'91 bottles of beer on the wall, 91 bottles of beer.',
'Take one down and pass it around, 90 bottles of beer on the wall.',
'',
'90 bottles of beer on the wall, 90 bottles of beer.',
'Take one down and pass it around, 89 bottles of beer on the wall.',
'',
'89 bottles of beer on the wall, 89 bottles of beer.',
'Take one down and pass it around, 88 bottles of beer on the wall.',
'',
'88 bottles of beer on the wall, 88 bottles of beer.',
'Take one down and pass it around, 87 bottles of beer on the wall.',
'',
'87 bottles of beer on the wall, 87 bottles of beer.',
'Take one down and pass it around, 86 bottles of beer on the wall.',
'',
'86 bottles of beer on the wall, 86 bottles of beer.',
'Take one down and pass it around, 85 bottles of beer on the wall.',
'',
'85 bottles of beer on the wall, 85 bottles of beer.',
'Take one down and pass it around, 84 bottles of beer on the wall.',
'',
'84 bottles of beer on the wall, 84 bottles of beer.',
'Take one down and pass it around, 83 bottles of beer on the wall.',
'',
'83 bottles of beer on the wall, 83 bottles of beer.',
'Take one down and pass it around, 82 bottles of beer on the wall.',
'',
'82 bottles of beer on the wall, 82 bottles of beer.',
'Take one down and pass it around, 81 bottles of beer on the wall.',
'',
'81 bottles of beer on the wall, 81 bottles of beer.',
'Take one down and pass it around, 80 bottles of beer on the wall.',
'',
'80 bottles of beer on the wall, 80 bottles of beer.',
'Take one down and pass it around, 79 bottles of beer on the wall.',
'',
'79 bottles of beer on the wall, 79 bottles of beer.',
'Take one down and pass it around, 78 bottles of beer on the wall.',
'',
'78 bottles of beer on the wall, 78 bottles of beer.',
'Take one down and pass it around, 77 bottles of beer on the wall.',
'',
'77 bottles of beer on the wall, 77 bottles of beer.',
'Take one down and pass it around, 76 bottles of beer on the wall.',
'',
'76 bottles of beer on the wall, 76 bottles of beer.',
'Take one down and pass it around, 75 bottles of beer on the wall.',
'',
'75 bottles of beer on the wall, 75 bottles of beer.',
'Take one down and pass it around, 74 bottles of beer on the wall.',
'',
'74 bottles of beer on the wall, 74 bottles of beer.',
'Take one down and pass it around, 73 bottles of beer on the wall.',
'',
'73 bottles of beer on the wall, 73 bottles of beer.',
'Take one down and pass it around, 72 bottles of beer on the wall.',
'',
'72 bottles of beer on the wall, 72 bottles of beer.',
'Take one down and pass it around, 71 bottles of beer on the wall.',
'',
'71 bottles of beer on the wall, 71 bottles of beer.',
'Take one down and pass it around, 70 bottles of beer on the wall.',
'',
'70 bottles of beer on the wall, 70 bottles of beer.',
'Take one down and pass it around, 69 bottles of beer on the wall.',
'',
'69 bottles of beer on the wall, 69 bottles of beer.',
'Take one down and pass it around, 68 bottles of beer on the wall.',
'',
'68 bottles of beer on the wall, 68 bottles of beer.',
'Take one down and pass it around, 67 bottles of beer on the wall.',
'',
'67 bottles of beer on the wall, 67 bottles of beer.',
'Take one down and pass it around, 66 bottles of beer on the wall.',
'',
'66 bottles of beer on the wall, 66 bottles of beer.',
'Take one down and pass it around, 65 bottles of beer on the wall.',
'',
'65 bottles of beer on the wall, 65 bottles of beer.',
'Take one down and pass it around, 64 bottles of beer on the wall.',
'',
'64 bottles of beer on the wall, 64 bottles of beer.',
'Take one down and pass it around, 63 bottles of beer on the wall.',
'',
'63 bottles of beer on the wall, 63 bottles of beer.',
'Take one down and pass it around, 62 bottles of beer on the wall.',
'',
'62 bottles of beer on the wall, 62 bottles of beer.',
'Take one down and pass it around, 61 bottles of beer on the wall.',
'',
'61 bottles of beer on the wall, 61 bottles of beer.',
'Take one down and pass it around, 60 bottles of beer on the wall.',
'',
'60 bottles of beer on the wall, 60 bottles of beer.',
'Take one down and pass it around, 59 bottles of beer on the wall.',
'',
'59 bottles of beer on the wall, 59 bottles of beer.',
'Take one down and pass it around, 58 bottles of beer on the wall.',
'',
'58 bottles of beer on the wall, 58 bottles of beer.',
'Take one down and pass it around, 57 bottles of beer on the wall.',
'',
'57 bottles of beer on the wall, 57 bottles of beer.',
'Take one down and pass it around, 56 bottles of beer on the wall.',
'',
'56 bottles of beer on the wall, 56 bottles of beer.',
'Take one down and pass it around, 55 bottles of beer on the wall.',
'',
'55 bottles of beer on the wall, 55 bottles of beer.',
'Take one down and pass it around, 54 bottles of beer on the wall.',
'',
'54 bottles of beer on the wall, 54 bottles of beer.',
'Take one down and pass it around, 53 bottles of beer on the wall.',
'',
'53 bottles of beer on the wall, 53 bottles of beer.',
'Take one down and pass it around, 52 bottles of beer on the wall.',
'',
'52 bottles of beer on the wall, 52 bottles of beer.',
'Take one down and pass it around, 51 bottles of beer on the wall.',
'',
'51 bottles of beer on the wall, 51 bottles of beer.',
'Take one down and pass it around, 50 bottles of beer on the wall.',
'',
'50 bottles of beer on the wall, 50 bottles of beer.',
'Take one down and pass it around, 49 bottles of beer on the wall.',
'',
'49 bottles of beer on the wall, 49 bottles of beer.',
'Take one down and pass it around, 48 bottles of beer on the wall.',
'',
'48 bottles of beer on the wall, 48 bottles of beer.',
'Take one down and pass it around, 47 bottles of beer on the wall.',
'',
'47 bottles of beer on the wall, 47 bottles of beer.',
'Take one down and pass it around, 46 bottles of beer on the wall.',
'',
'46 bottles of beer on the wall, 46 bottles of beer.',
'Take one down and pass it around, 45 bottles of beer on the wall.',
'',
'45 bottles of beer on the wall, 45 bottles of beer.',
'Take one down and pass it around, 44 bottles of beer on the wall.',
'',
'44 bottles of beer on the wall, 44 bottles of beer.',
'Take one down and pass it around, 43 bottles of beer on the wall.',
'',
'43 bottles of beer on the wall, 43 bottles of beer.',
'Take one down and pass it around, 42 bottles of beer on the wall.',
'',
'42 bottles of beer on the wall, 42 bottles of beer.',
'Take one down and pass it around, 41 bottles of beer on the wall.',
'',
'41 bottles of beer on the wall, 41 bottles of beer.',
'Take one down and pass it around, 40 bottles of beer on the wall.',
'',
'40 bottles of beer on the wall, 40 bottles of beer.',
'Take one down and pass it around, 39 bottles of beer on the wall.',
'',
'39 bottles of beer on the wall, 39 bottles of beer.',
'Take one down and pass it around, 38 bottles of beer on the wall.',
'',
'38 bottles of beer on the wall, 38 bottles of beer.',
'Take one down and pass it around, 37 bottles of beer on the wall.',
'',
'37 bottles of beer on the wall, 37 bottles of beer.',
'Take one down and pass it around, 36 bottles of beer on the wall.',
'',
'36 bottles of beer on the wall, 36 bottles of beer.',
'Take one down and pass it around, 35 bottles of beer on the wall.',
'',
'35 bottles of beer on the wall, 35 bottles of beer.',
'Take one down and pass it around, 34 bottles of beer on the wall.',
'',
'34 bottles of beer on the wall, 34 bottles of beer.',
'Take one down and pass it around, 33 bottles of beer on the wall.',
'',
'33 bottles of beer on the wall, 33 bottles of beer.',
'Take one down and pass it around, 32 bottles of beer on the wall.',
'',
'32 bottles of beer on the wall, 32 bottles of beer.',
'Take one down and pass it around, 31 bottles of beer on the wall.',
'',
'31 bottles of beer on the wall, 31 bottles of beer.',
'Take one down and pass it around, 30 bottles of beer on the wall.',
'',
'30 bottles of beer on the wall, 30 bottles of beer.',
'Take one down and pass it around, 29 bottles of beer on the wall.',
'',
'29 bottles of beer on the wall, 29 bottles of beer.',
'Take one down and pass it around, 28 bottles of beer on the wall.',
'',
'28 bottles of beer on the wall, 28 bottles of beer.',
'Take one down and pass it around, 27 bottles of beer on the wall.',
'',
'27 bottles of beer on the wall, 27 bottles of beer.',
'Take one down and pass it around, 26 bottles of beer on the wall.',
'',
'26 bottles of beer on the wall, 26 bottles of beer.',
'Take one down and pass it around, 25 bottles of beer on the wall.',
'',
'25 bottles of beer on the wall, 25 bottles of beer.',
'Take one down and pass it around, 24 bottles of beer on the wall.',
'',
'24 bottles of beer on the wall, 24 bottles of beer.',
'Take one down and pass it around, 23 bottles of beer on the wall.',
'',
'23 bottles of beer on the wall, 23 bottles of beer.',
'Take one down and pass it around, 22 bottles of beer on the wall.',
'',
'22 bottles of beer on the wall, 22 bottles of beer.',
'Take one down and pass it around, 21 bottles of beer on the wall.',
'',
'21 bottles of beer on the wall, 21 bottles of beer.',
'Take one down and pass it around, 20 bottles of beer on the wall.',
'',
'20 bottles of beer on the wall, 20 bottles of beer.',
'Take one down and pass it around, 19 bottles of beer on the wall.',
'',
'19 bottles of beer on the wall, 19 bottles of beer.',
'Take one down and pass it around, 18 bottles of beer on the wall.',
'',
'18 bottles of beer on the wall, 18 bottles of beer.',
'Take one down and pass it around, 17 bottles of beer on the wall.',
'',
'17 bottles of beer on the wall, 17 bottles of beer.',
'Take one down and pass it around, 16 bottles of beer on the wall.',
'',
'16 bottles of beer on the wall, 16 bottles of beer.',
'Take one down and pass it around, 15 bottles of beer on the wall.',
'',
'15 bottles of beer on the wall, 15 bottles of beer.',
'Take one down and pass it around, 14 bottles of beer on the wall.',
'',
'14 bottles of beer on the wall, 14 bottles of beer.',
'Take one down and pass it around, 13 bottles of beer on the wall.',
'',
'13 bottles of beer on the wall, 13 bottles of beer.',
'Take one down and pass it around, 12 bottles of beer on the wall.',
'',
'12 bottles of beer on the wall, 12 bottles of beer.',
'Take one down and pass it around, 11 bottles of beer on the wall.',
'',
'11 bottles of beer on the wall, 11 bottles of beer.',
'Take one down and pass it around, 10 bottles of beer on the wall.',
'',
'10 bottles of beer on the wall, 10 bottles of beer.',
'Take one down and pass it around, 9 bottles of beer on the wall.',
'',
'9 bottles of beer on the wall, 9 bottles of beer.',
'Take one down and pass it around, 8 bottles of beer on the wall.',
'',
'8 bottles of beer on the wall, 8 bottles of beer.',
'Take one down and pass it around, 7 bottles of beer on the wall.',
'',
'7 bottles of beer on the wall, 7 bottles of beer.',
'Take one down and pass it around, 6 bottles of beer on the wall.',
'',
'6 bottles of beer on the wall, 6 bottles of beer.',
'Take one down and pass it around, 5 bottles of beer on the wall.',
'',
'5 bottles of beer on the wall, 5 bottles of beer.',
'Take one down and pass it around, 4 bottles of beer on the wall.',
'',
'4 bottles of beer on the wall, 4 bottles of beer.',
'Take one down and pass it around, 3 bottles of beer on the wall.',
'',
'3 bottles of beer on the wall, 3 bottles of beer.',
'Take one down and pass it around, 2 bottles of beer on the wall.',
'',
'2 bottles of beer on the wall, 2 bottles of beer.',
'Take one down and pass it around, 1 bottle of beer on the wall.',
'',
'1 bottle of beer on the wall, 1 bottle of beer.',
'Take it down and pass it around, no more bottles of beer on the wall.',
'',
'No more bottles of beer on the wall, no more bottles of beer.',
'Go to the store and buy some more, 99 bottles of beer on the wall.'
]));
}, skip: true);
});
});
});
}