trackler 2.0.6.18 → 2.0.6.19
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/tracks/fsharp/exercises/linked-list/Example.fs +4 -4
- data/tracks/fsharp/exercises/linked-list/LinkedListTest.fs +19 -35
- data/tracks/go/config.json +5 -1
- data/tracks/java/exercises/settings.gradle +7 -7
- data/tracks/pascal/SETUP.md +10 -0
- data/tracks/pascal/exercises/book-store/uBookStoreTests.pas +247 -26
- data/tracks/pascal/exercises/phone-number/uPhoneNumberTests.pas +7 -1
- data/tracks/scala/config.json +18 -0
- data/tracks/scala/exercises/accumulate/build.sbt +2 -2
- data/tracks/scala/exercises/difference-of-squares/build.sbt +2 -2
- data/tracks/scala/exercises/etl/build.sbt +2 -2
- data/tracks/scala/exercises/grains/build.sbt +2 -2
- data/tracks/scala/exercises/leap/build.sbt +2 -2
- data/tracks/scala/exercises/robot-name/build.sbt +2 -2
- data/tracks/scala/exercises/scrabble-score/build.sbt +2 -2
- data/tracks/scala/exercises/scrabble-score/example.scala +1 -1
- data/tracks/scala/exercises/scrabble-score/src/test/scala/ScrabbleScoreTest.scala +7 -7
- data/tracks/scala/exercises/space-age/build.sbt +2 -2
- data/tracks/scala/exercises/space-age/src/test/scala/SpaceAgeTest.scala +1 -1
- data/tracks/swift/exercises/accumulate/Sources/{deleteme.swift → Accumulate.swift} +0 -0
- data/tracks/swift/exercises/acronym/Sources/{deleteme.swift → Acronym.swift} +0 -0
- data/tracks/swift/exercises/all-your-base/Sources/{deleteme.swift → AllYourBase.swift} +0 -0
- data/tracks/swift/exercises/allergies/Sources/{deleteme.swift → Allergies.swift} +0 -0
- data/tracks/swift/exercises/anagram/Sources/{deleteme.swift → Anagram.swift} +0 -0
- data/tracks/swift/exercises/atbash-cipher/Sources/{deleteme.swift → Atbash.swift} +0 -0
- data/tracks/swift/exercises/beer-song/Sources/{deleteme.swift → BeerSong.swift} +0 -0
- data/tracks/swift/exercises/binary-search-tree/Sources/{deleteme.swift → BinarySearchTree.swift} +0 -0
- data/tracks/swift/exercises/binary-search/Sources/{deleteme.swift → BinarySearch.swift} +0 -0
- data/tracks/swift/exercises/binary/Sources/{deleteme.swift → Binary.swift} +0 -0
- data/tracks/swift/exercises/bob/Sources/{deleteme.swift → Bob.swift} +0 -0
- data/tracks/swift/exercises/bowling/Sources/{deleteme.swift → Bowling.swift} +0 -0
- data/tracks/swift/exercises/bracket-push/Sources/{deleteme.swift → BracketPush.swift} +0 -0
- data/tracks/swift/exercises/clock/Sources/{deleteme.swift → Clock.swift} +0 -0
- data/tracks/swift/exercises/crypto-square/Sources/{deleteme.swift → CryptoSquare.swift} +0 -0
- data/tracks/swift/exercises/custom-set/Sources/{deleteme.swift → CustomSet.swift} +0 -0
- data/tracks/swift/exercises/difference-of-squares/Sources/{deleteme.swift → DifferenceOfSquares.swift} +0 -0
- data/tracks/swift/exercises/dominoes/Sources/{deleteme.swift → Dominoes.swift} +0 -0
- data/tracks/swift/exercises/etl/Sources/{deleteme.swift → Etl.swift} +0 -0
- data/tracks/swift/exercises/flatten-array/Sources/{deleteme.swift → FlattenArray.swift} +0 -0
- data/tracks/swift/exercises/food-chain/Sources/{deleteme.swift → FoodChain.swift} +0 -0
- data/tracks/swift/exercises/gigasecond/Sources/{deleteme.swift → Gigasecond.swift} +0 -0
- data/tracks/swift/exercises/grade-school/Sources/{deleteme.swift → GradeSchool.swift} +0 -0
- data/tracks/swift/exercises/grains/Sources/{deleteme.swift → Grains.swift} +0 -0
- data/tracks/swift/exercises/hamming/Sources/{deleteme.swift → Hamming.swift} +0 -0
- data/tracks/swift/exercises/hexadecimal/Sources/{deleteme.swift → Hexadecimal.swift} +0 -0
- data/tracks/swift/exercises/house/Sources/{deleteme.swift → House.swift} +0 -0
- data/tracks/swift/exercises/isogram/Sources/{deleteme.swift → Isogram.swift} +0 -0
- data/tracks/swift/exercises/kindergarten-garden/Sources/{deleteme.swift → KingergartenGarden.swift} +0 -0
- data/tracks/swift/exercises/largest-series-product/Sources/{deleteme.swift → LargestSeriesProduct.swift} +0 -0
- data/tracks/swift/exercises/leap/Sources/{deleteme.swift → Leap.swift} +0 -0
- data/tracks/swift/exercises/linked-list/Sources/{deleteme.swift → LinkedList.swift} +0 -0
- data/tracks/swift/exercises/luhn/Sources/{deleteme.swift → Luhn.swift} +0 -0
- data/tracks/swift/exercises/matrix/Sources/{deleteme.swift → Matrix.swift} +0 -0
- data/tracks/swift/exercises/meetup/Sources/{deleteme.swift → Meetup.swift} +0 -0
- data/tracks/swift/exercises/minesweeper/Sources/{deleteme.swift → Minesweeper.swift} +0 -0
- data/tracks/swift/exercises/nth-prime/Sources/{deleteme.swift → NthPrime.swift} +0 -0
- data/tracks/swift/exercises/nucleotide-count/Sources/{deleteme.swift → NucleotideCount.swift} +0 -0
- data/tracks/swift/exercises/ocr-numbers/Sources/{deleteme.swift → OcrNumbers.swift} +0 -0
- data/tracks/swift/exercises/octal/Sources/{deleteme.swift → Octal.swift} +0 -0
- data/tracks/swift/exercises/palindrome-products/Sources/{deleteme.swift → PalindromeProducts.swift} +0 -0
- data/tracks/swift/exercises/pangram/Sources/{deleteme.swift → Pangram.swift} +0 -0
- data/tracks/swift/exercises/pascals-triangle/Sources/{deleteme.swift → PascalsTriangle.swift} +0 -0
- data/tracks/swift/exercises/perfect-numbers/Sources/{deleteme.swift → PerfectNumbers.swift} +0 -0
- data/tracks/swift/exercises/phone-number/Sources/{deleteme.swift → PhoneNumber.swift} +0 -0
- data/tracks/swift/exercises/pig-latin/Sources/{deleteme.swift → PigLatin.swift} +0 -0
- data/tracks/swift/exercises/poker/Sources/{deleteme.swift → Poker.swift} +0 -0
- data/tracks/swift/exercises/prime-factors/Sources/{deleteme.swift → PrimeFactors.swift} +0 -0
- data/tracks/swift/exercises/pythagorean-triplet/Sources/{deleteme.swift → PythagoreanTriplet.swift} +0 -0
- data/tracks/swift/exercises/queen-attack/Sources/{deleteme.swift → QueenAttack.swift} +0 -0
- data/tracks/swift/exercises/raindrops/Sources/{deleteme.swift → Raindrops.swift} +0 -0
- data/tracks/swift/exercises/rna-transcription/Sources/{deleteme.swift → RnaTranscription.swift} +0 -0
- data/tracks/swift/exercises/robot-name/Sources/{deleteme.swift → RobotName.swift} +0 -0
- data/tracks/swift/exercises/robot-simulator/Sources/{deleteme.swift → RobotSimulator.swift} +0 -0
- data/tracks/swift/exercises/roman-numerals/Sources/{deleteme.swift → RomanNumerals.swift} +0 -0
- data/tracks/swift/exercises/run-length-encoding/Sources/{deleteme.swift → RunLengthEncoding.swift} +0 -0
- data/tracks/swift/exercises/saddle-points/Sources/{deleteme.swift → SaddlePoints.swift} +0 -0
- data/tracks/swift/exercises/scrabble-score/Sources/{deleteme.swift → ScrabbleScore.swift} +0 -0
- data/tracks/swift/exercises/secret-handshake/Sources/{deleteme.swift → SecretHandshake.swift} +0 -0
- data/tracks/swift/exercises/series/Sources/{deleteme.swift → Series.swift} +0 -0
- data/tracks/swift/exercises/sieve/Sources/{deleteme.swift → Sieve.swift} +0 -0
- data/tracks/swift/exercises/simple-cipher/Sources/{deleteme.swift → SimpleCipher.swift} +0 -0
- data/tracks/swift/exercises/simple-linked-list/Sources/{deleteme.swift → SimpleLinkedList.swift} +0 -0
- data/tracks/swift/exercises/space-age/Sources/{deleteme.swift → SpaceAge.swift} +0 -0
- data/tracks/swift/exercises/strain/Sources/{deleteme.swift → Strain.swift} +0 -0
- data/tracks/swift/exercises/sublist/Sources/{deleteme.swift → Sublist.swift} +0 -0
- data/tracks/swift/exercises/sum-of-multiples/Sources/{deleteme.swift → SumOfMultiples.swift} +0 -0
- data/tracks/swift/exercises/tournament/Sources/{deleteme.swift → Tournament.swift} +0 -0
- data/tracks/swift/exercises/transpose/Sources/{deleteme.swift → Transpose.swift} +0 -0
- data/tracks/swift/exercises/triangle/Sources/{deleteme.swift → Triangle.swift} +0 -0
- data/tracks/swift/exercises/trinary/Sources/{deleteme.swift → Trinary.swift} +0 -0
- data/tracks/swift/exercises/twelve-days/Sources/{deleteme.swift → TwelveDays.swift} +0 -0
- data/tracks/swift/exercises/word-count/Sources/{deleteme.swift → WordCount.swift} +0 -0
- data/tracks/swift/exercises/wordy/Sources/{deleteme.swift → Wordy.swift} +0 -0
- metadata +76 -76
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8623ef341a6390932eb5e0f88373f12e87dddd8e
|
4
|
+
data.tar.gz: 14daf2f37b0190a64c8edf17ffa28cf39a25d961
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a01f8a0581847e5513dcd1f48ab9766b70753042174c717b97269da1af841184dbeb4ced3be2053ec2dae9376741a6e2c176bee7848160028f535b591941b8c2
|
7
|
+
data.tar.gz: be768c3c71174ab29c6922f2f31c5fdf754616b0d58b69ae94b0ea7c6a92837c130184d41d72c5c5f842491f4d17b99eeaef4a42c2e633f57a2235143117b9c5
|
data/lib/trackler/version.rb
CHANGED
@@ -12,19 +12,19 @@ let addToEmpty newValue linkedList =
|
|
12
12
|
|
13
13
|
let pop linkedList =
|
14
14
|
match linkedList.last with
|
15
|
-
| None ->
|
15
|
+
| None -> failwith "Cannot pop from empty list"
|
16
16
|
| Some oldLast ->
|
17
17
|
linkedList.last <- oldLast.prev
|
18
18
|
linkedList.last |> Option.iter (fun el -> el.next <- None)
|
19
|
-
|
19
|
+
oldLast.value
|
20
20
|
|
21
21
|
let shift linkedList =
|
22
22
|
match linkedList.first with
|
23
|
-
| None ->
|
23
|
+
| None -> failwith "Cannot shift from empty list"
|
24
24
|
| Some oldFirst ->
|
25
25
|
linkedList.first <- oldFirst.next
|
26
26
|
linkedList.first |> Option.iter (fun el -> el.prev <- None)
|
27
|
-
|
27
|
+
oldFirst.value
|
28
28
|
|
29
29
|
let push newValue linkedList =
|
30
30
|
match linkedList.last with
|
@@ -4,14 +4,6 @@ open NUnit.Framework
|
|
4
4
|
open LinkedList
|
5
5
|
|
6
6
|
[<Test>]
|
7
|
-
let ``Pop returns None if the list is empty`` () =
|
8
|
-
let linkedList = mkLinkedList ()
|
9
|
-
let value = pop linkedList
|
10
|
-
|
11
|
-
Assert.That(value, Is.EqualTo(None))
|
12
|
-
|
13
|
-
[<Test>]
|
14
|
-
[<Ignore("Remove to run test")>]
|
15
7
|
let ``Push and pop are first in last out order`` () =
|
16
8
|
let linkedList = mkLinkedList ()
|
17
9
|
linkedList |> push 10
|
@@ -20,16 +12,8 @@ let ``Push and pop are first in last out order`` () =
|
|
20
12
|
let val1 = pop linkedList
|
21
13
|
let val2 = pop linkedList
|
22
14
|
|
23
|
-
Assert.That(val1, Is.EqualTo(
|
24
|
-
Assert.That(val2, Is.EqualTo(
|
25
|
-
|
26
|
-
[<Test>]
|
27
|
-
[<Ignore("Remove to run test")>]
|
28
|
-
let ``Shift returns None if the list is empty`` () =
|
29
|
-
let linkedList = mkLinkedList ()
|
30
|
-
let value = shift linkedList
|
31
|
-
|
32
|
-
Assert.That(value, Is.EqualTo(None))
|
15
|
+
Assert.That(val1, Is.EqualTo(20))
|
16
|
+
Assert.That(val2, Is.EqualTo(10))
|
33
17
|
|
34
18
|
[<Test>]
|
35
19
|
[<Ignore("Remove to run test")>]
|
@@ -41,8 +25,8 @@ let ``Push and shift are first in first out order`` () =
|
|
41
25
|
let val1 = shift linkedList
|
42
26
|
let val2 = shift linkedList
|
43
27
|
|
44
|
-
Assert.That(val1, Is.EqualTo(
|
45
|
-
Assert.That(val2, Is.EqualTo(
|
28
|
+
Assert.That(val1, Is.EqualTo(10))
|
29
|
+
Assert.That(val2, Is.EqualTo(20))
|
46
30
|
|
47
31
|
[<Test>]
|
48
32
|
[<Ignore("Remove to run test")>]
|
@@ -54,8 +38,8 @@ let ``Unshift and shift are last in first out order`` () =
|
|
54
38
|
let val1 = shift linkedList
|
55
39
|
let val2 = shift linkedList
|
56
40
|
|
57
|
-
Assert.That(val1, Is.EqualTo(
|
58
|
-
Assert.That(val2, Is.EqualTo(
|
41
|
+
Assert.That(val1, Is.EqualTo(20))
|
42
|
+
Assert.That(val2, Is.EqualTo(10))
|
59
43
|
|
60
44
|
[<Test>]
|
61
45
|
[<Ignore("Remove to run test")>]
|
@@ -67,8 +51,8 @@ let ``Unshift and pop are last in last out order`` () =
|
|
67
51
|
let val1 = pop linkedList
|
68
52
|
let val2 = pop linkedList
|
69
53
|
|
70
|
-
Assert.That(val1, Is.EqualTo(
|
71
|
-
Assert.That(val2, Is.EqualTo(
|
54
|
+
Assert.That(val1, Is.EqualTo(10))
|
55
|
+
Assert.That(val2, Is.EqualTo(20))
|
72
56
|
|
73
57
|
[<Test>]
|
74
58
|
[<Ignore("Remove to run test")>]
|
@@ -82,9 +66,9 @@ let ``Push and pop can handle multiple values`` () =
|
|
82
66
|
let val2 = pop linkedList
|
83
67
|
let val3 = pop linkedList
|
84
68
|
|
85
|
-
Assert.That(val1, Is.EqualTo(
|
86
|
-
Assert.That(val2, Is.EqualTo(
|
87
|
-
Assert.That(val3, Is.EqualTo(
|
69
|
+
Assert.That(val1, Is.EqualTo(30))
|
70
|
+
Assert.That(val2, Is.EqualTo(20))
|
71
|
+
Assert.That(val3, Is.EqualTo(10))
|
88
72
|
|
89
73
|
[<Test>]
|
90
74
|
[<Ignore("Remove to run test")>]
|
@@ -98,9 +82,9 @@ let ``Unshift and shift can handle multiple values`` () =
|
|
98
82
|
let val2 = shift linkedList
|
99
83
|
let val3 = shift linkedList
|
100
84
|
|
101
|
-
Assert.That(val1, Is.EqualTo(
|
102
|
-
Assert.That(val2, Is.EqualTo(
|
103
|
-
Assert.That(val3, Is.EqualTo(
|
85
|
+
Assert.That(val1, Is.EqualTo(30))
|
86
|
+
Assert.That(val2, Is.EqualTo(20))
|
87
|
+
Assert.That(val3, Is.EqualTo(10))
|
104
88
|
|
105
89
|
[<Test>]
|
106
90
|
[<Ignore("Remove to run test")>]
|
@@ -111,12 +95,12 @@ let ``All methods of manipulating the linkedList can be used together`` () =
|
|
111
95
|
|
112
96
|
let val1 = pop linkedList
|
113
97
|
|
114
|
-
Assert.That(val1, Is.EqualTo(
|
98
|
+
Assert.That(val1, Is.EqualTo(20))
|
115
99
|
|
116
100
|
linkedList |> push 30
|
117
101
|
let val2 = shift linkedList
|
118
102
|
|
119
|
-
Assert.That(val2, Is.EqualTo(
|
103
|
+
Assert.That(val2, Is.EqualTo(10))
|
120
104
|
|
121
105
|
linkedList |> unshift 40
|
122
106
|
linkedList |> push 50
|
@@ -125,6 +109,6 @@ let ``All methods of manipulating the linkedList can be used together`` () =
|
|
125
109
|
let val4 = pop linkedList
|
126
110
|
let val5 = shift linkedList
|
127
111
|
|
128
|
-
Assert.That(val3, Is.EqualTo(
|
129
|
-
Assert.That(val4, Is.EqualTo(
|
130
|
-
Assert.That(val5, Is.EqualTo(
|
112
|
+
Assert.That(val3, Is.EqualTo(40))
|
113
|
+
Assert.That(val4, Is.EqualTo(50))
|
114
|
+
Assert.That(val5, Is.EqualTo(30))
|
data/tracks/go/config.json
CHANGED
@@ -22,8 +22,9 @@ include 'hello-world'
|
|
22
22
|
include 'largest-series-product'
|
23
23
|
include 'linked-list'
|
24
24
|
include 'luhn'
|
25
|
-
include '
|
25
|
+
include 'matrix'
|
26
26
|
include 'meetup'
|
27
|
+
include 'minesweeper'
|
27
28
|
include 'nth-prime'
|
28
29
|
include 'nucleotide-count'
|
29
30
|
include 'octal'
|
@@ -32,6 +33,8 @@ include 'pangram'
|
|
32
33
|
include 'pascals-triangle'
|
33
34
|
include 'phone-number'
|
34
35
|
include 'pig-latin'
|
36
|
+
include 'prime-factors'
|
37
|
+
include 'pythagorean-triplet'
|
35
38
|
include 'queen-attack'
|
36
39
|
include 'raindrops'
|
37
40
|
include 'rectangles'
|
@@ -39,20 +42,17 @@ include 'rna-transcription'
|
|
39
42
|
include 'robot-name'
|
40
43
|
include 'robot-simulator'
|
41
44
|
include 'roman-numerals'
|
42
|
-
include 'prime-factors'
|
43
|
-
include 'pythagorean-triplet'
|
44
45
|
include 'scrabble-score'
|
45
46
|
include 'series'
|
46
47
|
include 'sieve'
|
47
48
|
include 'simple-cipher'
|
48
49
|
include 'simple-linked-list'
|
49
|
-
include 'sublist'
|
50
|
-
include 'sum-of-multiples'
|
51
50
|
include 'space-age'
|
52
51
|
include 'strain'
|
52
|
+
include 'sublist'
|
53
|
+
include 'sum-of-multiples'
|
53
54
|
include 'triangle'
|
54
55
|
include 'trinary'
|
56
|
+
include 'twelve-days'
|
55
57
|
include 'word-count'
|
56
58
|
include 'wordy'
|
57
|
-
include 'twelve-days'
|
58
|
-
include 'matrix'
|
data/tracks/pascal/SETUP.md
CHANGED
@@ -0,0 +1,10 @@
|
|
1
|
+
# Testing
|
2
|
+
|
3
|
+
In order to run the tests for this track, you will need to install
|
4
|
+
DUnitX. Please see [INSTALLATION.md](link here) for more information.
|
5
|
+
|
6
|
+
### Submitting Exercises
|
7
|
+
|
8
|
+
Note that, when trying to submit an exercise, make sure the exercise file you're submitting is in the `exercism/pascal/<exerciseName>` directory.
|
9
|
+
|
10
|
+
For example, if you're submitting `ubob.pas` for the Bob exercise, the submit command would be something like `exercism submit <path_to_exercism_dir>/pascal/bob/ubob.pas`.
|
@@ -7,23 +7,53 @@ uses
|
|
7
7
|
type
|
8
8
|
[TestFixture]
|
9
9
|
hpTests = class(TObject)
|
10
|
-
private
|
11
|
-
class function ConvertStrToIntArray(aString: string): TArray<Integer>; static;
|
12
10
|
public
|
13
11
|
[Test]
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
procedure
|
12
|
+
procedure A_basket_containing_only_a_single_book;
|
13
|
+
|
14
|
+
[Test]
|
15
|
+
[Ignore('Comment this line to run this test')]
|
16
|
+
procedure A_basket_containing_only_two_of_the_same_book;
|
17
|
+
|
18
|
+
[Test]
|
19
|
+
[Ignore('Comment this line to run this test')]
|
20
|
+
procedure No_charge_to_carry_around_an_empty_basket;
|
21
|
+
|
22
|
+
[Test]
|
23
|
+
[Ignore('Comment this line to run this test')]
|
24
|
+
procedure A_basket_containing_only_two_different_books;
|
25
|
+
|
26
|
+
[Test]
|
27
|
+
[Ignore('Comment this line to run this test')]
|
28
|
+
procedure A_basket_with_three_different_books;
|
29
|
+
|
30
|
+
[Test]
|
31
|
+
[Ignore('Comment this line to run this test')]
|
32
|
+
procedure A_basket_with_four_different_books;
|
33
|
+
|
34
|
+
[Test]
|
35
|
+
[Ignore('Comment this line to run this test')]
|
36
|
+
procedure A_basket_with_five_different_books;
|
37
|
+
|
38
|
+
[Test]
|
39
|
+
[Ignore('Comment this line to run this test')]
|
40
|
+
procedure A_basket_containing_eight_books_consisting_of_a_pair_each_of_the_first_three_books_plus_one_copy_each_of_the_last_two_books;
|
41
|
+
|
42
|
+
[Test]
|
43
|
+
[Ignore('Comment this line to run this test')]
|
44
|
+
procedure A_basket_containing_nine_books_consisting_of_a_pair_each_of_the_first_four_books_plus_one_of_the_last_book;
|
45
|
+
|
46
|
+
[Test]
|
47
|
+
[Ignore('Comment this line to run this test')]
|
48
|
+
procedure A_basket_containing_ten_books_consisting_of_two_copies_of_each_book_in_the_series;
|
49
|
+
|
50
|
+
[Test]
|
51
|
+
[Ignore('Comment this line to run this test')]
|
52
|
+
procedure A_basket_containing_eleven_books_consisting_of_three_copies_of_the_first_book_plus_two_each_of_the_remaing_four_bookes_in_the_series;
|
53
|
+
|
54
|
+
[Test]
|
55
|
+
[Ignore('Comment this line to run this test')]
|
56
|
+
procedure A_basket_containing_twelve_books_consisting_of_three_copies_of_the_first_two_books_plus_two_each_of_the_remaining_three_books_in_the_series;
|
27
57
|
end;
|
28
58
|
|
29
59
|
implementation
|
@@ -31,24 +61,215 @@ uses System.SysUtils, uBookStore;
|
|
31
61
|
|
32
62
|
const MinDelta = 0.005; //cents
|
33
63
|
|
34
|
-
|
35
|
-
var
|
36
|
-
|
64
|
+
procedure hpTests.A_basket_containing_only_a_single_book;
|
65
|
+
var Basket: TArray<integer>;
|
66
|
+
fBasket: IBasket;
|
67
|
+
Expected: double;
|
37
68
|
begin
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
69
|
+
SetLength(Basket, 1);
|
70
|
+
Basket[0] := 1;
|
71
|
+
Expected := 8.0;
|
72
|
+
|
73
|
+
fBasket := NewBasket(Basket);
|
74
|
+
assert.AreEqual(Expected, fBasket.Total, MinDelta, format('Total should be %0.2f',[Expected]));
|
75
|
+
end;
|
76
|
+
|
77
|
+
procedure hpTests.A_basket_containing_only_two_of_the_same_book;
|
78
|
+
var Basket: TArray<integer>;
|
79
|
+
fBasket: IBasket;
|
80
|
+
Expected: double;
|
81
|
+
begin
|
82
|
+
SetLength(Basket, 2);
|
83
|
+
Basket[0] := 2;
|
84
|
+
Basket[1] := 2;
|
85
|
+
Expected := 16.0;
|
86
|
+
|
87
|
+
fBasket := NewBasket(Basket);
|
88
|
+
assert.AreEqual(Expected, fBasket.Total, MinDelta, format('Total should be %0.2f',[Expected]));
|
89
|
+
end;
|
90
|
+
|
91
|
+
procedure hpTests.No_charge_to_carry_around_an_empty_basket;
|
92
|
+
var Basket: TArray<integer>;
|
93
|
+
fBasket: IBasket;
|
94
|
+
Expected: double;
|
95
|
+
begin
|
96
|
+
SetLength(Basket, 0);
|
97
|
+
Expected := 0.0;
|
98
|
+
|
99
|
+
fBasket := NewBasket(Basket);
|
100
|
+
assert.AreEqual(Expected, fBasket.Total, MinDelta, format('Total should be %0.2f',[Expected]));
|
101
|
+
end;
|
102
|
+
|
103
|
+
procedure hpTests.A_basket_containing_only_two_different_books;
|
104
|
+
var Basket: TArray<integer>;
|
105
|
+
fBasket: IBasket;
|
106
|
+
Expected: double;
|
107
|
+
begin
|
108
|
+
SetLength(Basket, 2);
|
109
|
+
Basket[0] := 1;
|
110
|
+
Basket[1] := 2;
|
111
|
+
Expected := 15.2;
|
112
|
+
|
113
|
+
fBasket := NewBasket(Basket);
|
114
|
+
assert.AreEqual(Expected, fBasket.Total, MinDelta, format('Total should be %0.2f',[Expected]));
|
43
115
|
end;
|
44
116
|
|
45
|
-
procedure hpTests.
|
117
|
+
procedure hpTests.A_basket_with_three_different_books;
|
46
118
|
var Basket: TArray<integer>;
|
47
119
|
fBasket: IBasket;
|
120
|
+
Expected: double;
|
48
121
|
begin
|
49
|
-
Basket
|
122
|
+
SetLength(Basket, 3);
|
123
|
+
Basket[0] := 1;
|
124
|
+
Basket[1] := 2;
|
125
|
+
Basket[2] := 3;
|
126
|
+
Expected := 21.6;
|
127
|
+
|
128
|
+
fBasket := NewBasket(Basket);
|
129
|
+
assert.AreEqual(Expected, fBasket.Total, MinDelta, format('Total should be %0.2f',[Expected]));
|
130
|
+
end;
|
131
|
+
|
132
|
+
procedure hpTests.A_basket_with_four_different_books;
|
133
|
+
var Basket: TArray<integer>;
|
134
|
+
fBasket: IBasket;
|
135
|
+
Expected: double;
|
136
|
+
begin
|
137
|
+
SetLength(Basket, 4);
|
138
|
+
Basket[0] := 1;
|
139
|
+
Basket[1] := 2;
|
140
|
+
Basket[2] := 3;
|
141
|
+
Basket[3] := 4;
|
142
|
+
Expected := 25.6;
|
143
|
+
|
144
|
+
fBasket := NewBasket(Basket);
|
145
|
+
assert.AreEqual(Expected, fBasket.Total, MinDelta, format('Total should be %0.2f',[Expected]));
|
146
|
+
end;
|
147
|
+
|
148
|
+
procedure hpTests.A_basket_with_five_different_books;
|
149
|
+
var Basket: TArray<integer>;
|
150
|
+
fBasket: IBasket;
|
151
|
+
Expected: double;
|
152
|
+
begin
|
153
|
+
SetLength(Basket, 5);
|
154
|
+
Basket[0] := 1;
|
155
|
+
Basket[1] := 2;
|
156
|
+
Basket[2] := 3;
|
157
|
+
Basket[3] := 4;
|
158
|
+
Basket[4] := 5;
|
159
|
+
Expected := 30.0;
|
160
|
+
|
161
|
+
fBasket := NewBasket(Basket);
|
162
|
+
assert.AreEqual(Expected, fBasket.Total, MinDelta, format('Total should be %0.2f',[Expected]));
|
163
|
+
end;
|
164
|
+
|
165
|
+
procedure hpTests.A_basket_containing_eight_books_consisting_of_a_pair_each_of_the_first_three_books_plus_one_copy_each_of_the_last_two_books;
|
166
|
+
var Basket: TArray<integer>;
|
167
|
+
fBasket: IBasket;
|
168
|
+
Expected: double;
|
169
|
+
begin
|
170
|
+
SetLength(Basket, 8);
|
171
|
+
Basket[0] := 1;
|
172
|
+
Basket[1] := 1;
|
173
|
+
Basket[2] := 2;
|
174
|
+
Basket[3] := 2;
|
175
|
+
Basket[4] := 3;
|
176
|
+
Basket[5] := 3;
|
177
|
+
Basket[6] := 4;
|
178
|
+
Basket[7] := 5;
|
179
|
+
Expected := 51.20;
|
180
|
+
|
181
|
+
fBasket := NewBasket(Basket);
|
182
|
+
assert.AreEqual(Expected, fBasket.Total, MinDelta, format('Total should be %0.2f',[Expected]));
|
183
|
+
end;
|
184
|
+
|
185
|
+
procedure hpTests.A_basket_containing_nine_books_consisting_of_a_pair_each_of_the_first_four_books_plus_one_of_the_last_book;
|
186
|
+
var Basket: TArray<integer>;
|
187
|
+
fBasket: IBasket;
|
188
|
+
Expected: double;
|
189
|
+
begin
|
190
|
+
SetLength(Basket, 9);
|
191
|
+
Basket[0] := 1;
|
192
|
+
Basket[1] := 1;
|
193
|
+
Basket[2] := 2;
|
194
|
+
Basket[3] := 2;
|
195
|
+
Basket[4] := 3;
|
196
|
+
Basket[5] := 3;
|
197
|
+
Basket[6] := 4;
|
198
|
+
Basket[7] := 4;
|
199
|
+
Basket[8] := 5;
|
200
|
+
Expected := 55.60;
|
201
|
+
|
202
|
+
fBasket := NewBasket(Basket);
|
203
|
+
assert.AreEqual(Expected, fBasket.Total, MinDelta, format('Total should be %0.2f',[Expected]));
|
204
|
+
end;
|
205
|
+
|
206
|
+
procedure hpTests.A_basket_containing_ten_books_consisting_of_two_copies_of_each_book_in_the_series;
|
207
|
+
var Basket: TArray<integer>;
|
208
|
+
fBasket: IBasket;
|
209
|
+
Expected: double;
|
210
|
+
begin
|
211
|
+
SetLength(Basket, 10);
|
212
|
+
Basket[0] := 1;
|
213
|
+
Basket[1] := 1;
|
214
|
+
Basket[2] := 2;
|
215
|
+
Basket[3] := 2;
|
216
|
+
Basket[4] := 3;
|
217
|
+
Basket[5] := 3;
|
218
|
+
Basket[6] := 4;
|
219
|
+
Basket[7] := 4;
|
220
|
+
Basket[8] := 5;
|
221
|
+
Basket[9] := 5;
|
222
|
+
Expected := 60.00;
|
223
|
+
|
224
|
+
fBasket := NewBasket(Basket);
|
225
|
+
assert.AreEqual(Expected, fBasket.Total, MinDelta, format('Total should be %0.2f',[Expected]));
|
226
|
+
end;
|
227
|
+
|
228
|
+
procedure hpTests.A_basket_containing_eleven_books_consisting_of_three_copies_of_the_first_book_plus_two_each_of_the_remaing_four_bookes_in_the_series;
|
229
|
+
var Basket: TArray<integer>;
|
230
|
+
fBasket: IBasket;
|
231
|
+
Expected: double;
|
232
|
+
begin
|
233
|
+
SetLength(Basket, 11);
|
234
|
+
Basket[0] := 1;
|
235
|
+
Basket[1] := 1;
|
236
|
+
Basket[2] := 2;
|
237
|
+
Basket[3] := 2;
|
238
|
+
Basket[4] := 3;
|
239
|
+
Basket[5] := 3;
|
240
|
+
Basket[6] := 4;
|
241
|
+
Basket[7] := 4;
|
242
|
+
Basket[8] := 5;
|
243
|
+
Basket[9] := 5;
|
244
|
+
Basket[10] := 1;
|
245
|
+
Expected := 68.00;
|
246
|
+
|
247
|
+
fBasket := NewBasket(Basket);
|
248
|
+
assert.AreEqual(Expected, fBasket.Total, MinDelta, format('Total should be %0.2f',[Expected]));
|
249
|
+
end;
|
250
|
+
|
251
|
+
procedure hpTests.A_basket_containing_twelve_books_consisting_of_three_copies_of_the_first_two_books_plus_two_each_of_the_remaining_three_books_in_the_series;
|
252
|
+
var Basket: TArray<integer>;
|
253
|
+
fBasket: IBasket;
|
254
|
+
Expected: double;
|
255
|
+
begin
|
256
|
+
SetLength(Basket, 12);
|
257
|
+
Basket[0] := 1;
|
258
|
+
Basket[1] := 1;
|
259
|
+
Basket[2] := 2;
|
260
|
+
Basket[3] := 2;
|
261
|
+
Basket[4] := 3;
|
262
|
+
Basket[5] := 3;
|
263
|
+
Basket[6] := 4;
|
264
|
+
Basket[7] := 4;
|
265
|
+
Basket[8] := 5;
|
266
|
+
Basket[9] := 5;
|
267
|
+
Basket[10] := 1;
|
268
|
+
Basket[11] := 2;
|
269
|
+
Expected := 75.20;
|
270
|
+
|
50
271
|
fBasket := NewBasket(Basket);
|
51
|
-
assert.AreEqual(Expected,
|
272
|
+
assert.AreEqual(Expected, fBasket.Total, MinDelta, format('Total should be %0.2f',[Expected]));
|
52
273
|
end;
|
53
274
|
|
54
275
|
initialization
|