trackler 2.2.1.98 → 2.2.1.99
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/complex-numbers/canonical-data.json +47 -47
- data/problem-specifications/exercises/custom-set/canonical-data.json +13 -7
- data/tracks/delphi/exercises/phone-number/uPhoneNumberTests.pas +1 -1
- data/tracks/elixir/exercises/protein-translation/protein_translation_test.exs +5 -0
- data/tracks/fsharp/config.json +10 -0
- data/tracks/fsharp/exercises/Exercises.sln +6 -0
- data/tracks/fsharp/exercises/accumulate/AccumulateTest.fs +2 -0
- data/tracks/fsharp/exercises/bank-account/BankAccountTest.fs +2 -0
- data/tracks/fsharp/exercises/binary-search-tree/BinarySearchTreeTest.fs +2 -0
- data/tracks/fsharp/exercises/binary/BinaryTest.fs +2 -0
- data/tracks/fsharp/exercises/circular-buffer/CircularBufferTest.fs +121 -117
- data/tracks/fsharp/exercises/complex-numbers/ComplexNumbers.fs +21 -0
- data/tracks/fsharp/exercises/complex-numbers/ComplexNumbers.fsproj +23 -0
- data/tracks/fsharp/exercises/complex-numbers/ComplexNumbersTest.fs +168 -0
- data/tracks/fsharp/exercises/complex-numbers/Example.fs +27 -0
- data/tracks/fsharp/exercises/complex-numbers/Program.fs +1 -0
- data/tracks/fsharp/exercises/complex-numbers/README.md +35 -0
- data/tracks/fsharp/exercises/diamond/DiamondTest.fs +2 -0
- data/tracks/fsharp/exercises/diffie-hellman/DiffieHellmanTest.fs +2 -0
- data/tracks/fsharp/exercises/dot-dsl/DotDslTest.fs +2 -0
- data/tracks/fsharp/exercises/error-handling/ErrorHandlingTest.fs +2 -0
- data/tracks/fsharp/exercises/go-counting/GoCountingTest.fs +2 -0
- data/tracks/fsharp/exercises/grade-school/GradeSchoolTest.fs +2 -0
- data/tracks/fsharp/exercises/hangman/HangmanTest.fs +2 -0
- data/tracks/fsharp/exercises/hexadecimal/HexadecimalTest.fs +2 -0
- data/tracks/fsharp/exercises/ledger/LedgerTest.fs +2 -0
- data/tracks/fsharp/exercises/lens-person/LensPersonTest.fs +2 -0
- data/tracks/fsharp/exercises/linked-list/LinkedListTest.fs +2 -0
- data/tracks/fsharp/exercises/matrix/MatrixTest.fs +2 -0
- data/tracks/fsharp/exercises/octal/OctalTest.fs +2 -0
- data/tracks/fsharp/exercises/parallel-letter-frequency/ParallelLetterFrequencyTest.fs +2 -0
- data/tracks/fsharp/exercises/pov/PovTest.fs +2 -0
- data/tracks/fsharp/exercises/protein-translation/ProteinTranslationTest.fs +2 -0
- data/tracks/fsharp/exercises/pythagorean-triplet/PythagoreanTripletTest.fs +2 -0
- data/tracks/fsharp/exercises/robot-name/RobotNameTest.fs +2 -0
- data/tracks/fsharp/exercises/saddle-points/SaddlePointsTest.fs +2 -0
- data/tracks/fsharp/exercises/say/SayTest.fs +2 -0
- data/tracks/fsharp/exercises/scale-generator/ScaleGeneratorTest.fs +2 -0
- data/tracks/fsharp/exercises/secret-handshake/SecretHandshakeTest.fs +2 -0
- data/tracks/fsharp/exercises/series/SeriesTest.fs +2 -0
- data/tracks/fsharp/exercises/sgf-parsing/SgfParsingTest.fs +2 -0
- data/tracks/fsharp/exercises/sieve/SieveTest.fs +2 -0
- data/tracks/fsharp/exercises/simple-cipher/SimpleCipherTest.fs +2 -0
- data/tracks/fsharp/exercises/simple-linked-list/SimpleLinkedListTest.fs +2 -0
- data/tracks/fsharp/exercises/space-age/SpaceAgeTest.fs +2 -0
- data/tracks/fsharp/exercises/strain/StrainTest.fs +2 -0
- data/tracks/fsharp/exercises/sublist/SublistTest.fs +2 -0
- data/tracks/fsharp/exercises/sum-of-multiples/SumOfMultiplesTest.fs +2 -0
- data/tracks/fsharp/exercises/tournament/TournamentTest.fs +2 -0
- data/tracks/fsharp/exercises/transpose/TransposeTest.fs +2 -0
- data/tracks/fsharp/exercises/transpose/TrinaryTest.fs +3 -1
- data/tracks/fsharp/exercises/tree-building/TreeBuildingTest.fs +2 -0
- data/tracks/fsharp/exercises/triangle/TriangleTest.fs +2 -0
- data/tracks/fsharp/exercises/trinary/TrinaryTest.fs +2 -0
- data/tracks/fsharp/exercises/two-bucket/TwoBucketTest.fs +2 -0
- data/tracks/fsharp/exercises/variable-length-quantity/VariableLengthQuantityTest.fs +2 -0
- data/tracks/fsharp/exercises/word-count/WordCountTest.fs +2 -0
- data/tracks/fsharp/exercises/word-search/WordSearchTest.fs +2 -0
- data/tracks/fsharp/exercises/wordy/WordyTest.fs +2 -0
- data/tracks/fsharp/exercises/zebra-puzzle/ZebraPuzzleTest.fs +2 -0
- data/tracks/fsharp/exercises/zipper/ZipperTest.fs +2 -0
- data/tracks/fsharp/generators/CanonicalData.fs +1 -1
- data/tracks/fsharp/generators/Generators.fs +89 -0
- data/tracks/go/config.json +16 -0
- data/tracks/go/exercises/rail-fence-cipher/.meta/gen.go +82 -0
- data/tracks/go/exercises/rail-fence-cipher/README.md +83 -0
- data/tracks/go/exercises/rail-fence-cipher/cases_test.go +50 -0
- data/tracks/go/exercises/rail-fence-cipher/example.go +58 -0
- data/tracks/go/exercises/rail-fence-cipher/rail_fence_cipher_test.go +15 -0
- data/tracks/go/exercises/say/.meta/gen.go +5 -3
- data/tracks/go/exercises/say/cases_test.go +2 -2
- data/tracks/go/exercises/scrabble-score/.meta/gen.go +5 -3
- data/tracks/go/exercises/scrabble-score/cases_test.go +2 -2
- data/tracks/go/exercises/secret-handshake/.meta/gen.go +5 -3
- data/tracks/go/exercises/secret-handshake/cases_test.go +2 -2
- data/tracks/go/exercises/transpose/.meta/gen.go +5 -3
- data/tracks/go/exercises/transpose/cases_test.go +30 -76
- data/tracks/go/exercises/word-count/.meta/gen.go +5 -3
- data/tracks/go/exercises/word-count/cases_test.go +2 -2
- data/tracks/go/exercises/wordy/.meta/gen.go +5 -3
- data/tracks/go/exercises/wordy/cases_test.go +2 -2
- data/tracks/java/exercises/largest-series-product/.meta/src/reference/java/LargestSeriesProductCalculator.java +1 -3
- data/tracks/java/exercises/largest-series-product/.meta/version +1 -0
- data/tracks/java/exercises/largest-series-product/src/test/java/LargestSeriesProductCalculatorTest.java +9 -44
- data/tracks/ocaml/exercises/grade-school/.meta/description.md +21 -0
- data/tracks/ocaml/exercises/palindrome-products/.meta/description.md +35 -0
- data/tracks/ocaml/exercises/palindrome-products/README.md +13 -9
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a4f6ff506d46fc8e5cd2158613f444181e5a9f4
|
4
|
+
data.tar.gz: 8248291e3689c6087c3e8d6c82de286eb754c6d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19d9955f95e594ff280c3ceaf97cbb0a7583860bc892e01380953f95cd4861150bb8c00a9c0a222e18f3f31601f296f4e7bfa659c05e59a9a3943e5ac16a3033
|
7
|
+
data.tar.gz: 6804eab9031cad8febe3ab5fe3e49d03eb4eb95eaf50ad0401791d79b4c23bcf3dab914ef6023dac7ea5b364c22b0bfea717c6887404bc3d02c62a7b9eeaa1a2
|
data/lib/trackler/version.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"exercise": "complex-numbers",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.1.0",
|
4
4
|
"comments": [
|
5
5
|
" The canonical data assumes mathematically correct real ",
|
6
6
|
" numbers. The testsuites should consider rounding errors ",
|
@@ -12,6 +12,52 @@
|
|
12
12
|
" represented as \"e\". "
|
13
13
|
],
|
14
14
|
"cases": [
|
15
|
+
{
|
16
|
+
"description": "Real part",
|
17
|
+
"cases": [
|
18
|
+
{
|
19
|
+
"description": "Real part of a purely real number",
|
20
|
+
"property": "real",
|
21
|
+
"input": [1, 0],
|
22
|
+
"expected": 1
|
23
|
+
},
|
24
|
+
{
|
25
|
+
"description": "Real part of a purely imaginary number",
|
26
|
+
"property": "real",
|
27
|
+
"input": [0, 1],
|
28
|
+
"expected": 0
|
29
|
+
},
|
30
|
+
{
|
31
|
+
"description": "Real part of a number with real and imaginary part",
|
32
|
+
"property": "real",
|
33
|
+
"input": [1, 2],
|
34
|
+
"expected": 1
|
35
|
+
}
|
36
|
+
]
|
37
|
+
},
|
38
|
+
{
|
39
|
+
"description": "Imaginary part",
|
40
|
+
"cases": [
|
41
|
+
{
|
42
|
+
"description": "Imaginary part of a purely real number",
|
43
|
+
"property": "imaginary",
|
44
|
+
"input": [1, 0],
|
45
|
+
"expected": 0
|
46
|
+
},
|
47
|
+
{
|
48
|
+
"description": "Imaginary part of a purely imaginary number",
|
49
|
+
"property": "imaginary",
|
50
|
+
"input": [0, 1],
|
51
|
+
"expected": 1
|
52
|
+
},
|
53
|
+
{
|
54
|
+
"description": "Imaginary part of a number with real and imaginary part",
|
55
|
+
"property": "imaginary",
|
56
|
+
"input": [1, 2],
|
57
|
+
"expected": 2
|
58
|
+
}
|
59
|
+
]
|
60
|
+
},
|
15
61
|
{
|
16
62
|
"description": "Imaginary unit",
|
17
63
|
"property": "mul",
|
@@ -186,52 +232,6 @@
|
|
186
232
|
}
|
187
233
|
]
|
188
234
|
},
|
189
|
-
{
|
190
|
-
"description": "Real part",
|
191
|
-
"cases": [
|
192
|
-
{
|
193
|
-
"description": "Real part of a purely real number",
|
194
|
-
"property": "real",
|
195
|
-
"input": [1, 0],
|
196
|
-
"expected": 1
|
197
|
-
},
|
198
|
-
{
|
199
|
-
"description": "Real part of a purely imaginary number",
|
200
|
-
"property": "real",
|
201
|
-
"input": [0, 1],
|
202
|
-
"expected": 0
|
203
|
-
},
|
204
|
-
{
|
205
|
-
"description": "Real part of a number with real and imaginary part",
|
206
|
-
"property": "real",
|
207
|
-
"input": [1, 2],
|
208
|
-
"expected": 1
|
209
|
-
}
|
210
|
-
]
|
211
|
-
},
|
212
|
-
{
|
213
|
-
"description": "Imaginary part",
|
214
|
-
"cases": [
|
215
|
-
{
|
216
|
-
"description": "Imaginary part of a purely real number",
|
217
|
-
"property": "imaginary",
|
218
|
-
"input": [1, 0],
|
219
|
-
"expected": 0
|
220
|
-
},
|
221
|
-
{
|
222
|
-
"description": "Imaginary part of a purely imaginary number",
|
223
|
-
"property": "imaginary",
|
224
|
-
"input": [0, 1],
|
225
|
-
"expected": 1
|
226
|
-
},
|
227
|
-
{
|
228
|
-
"description": "Imaginary part of a number with real and imaginary part",
|
229
|
-
"property": "imaginary",
|
230
|
-
"input": [1, 2],
|
231
|
-
"expected": 2
|
232
|
-
}
|
233
|
-
]
|
234
|
-
},
|
235
235
|
{
|
236
236
|
"description": "Complex exponential function",
|
237
237
|
"comments": [
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"exercise": "custom-set",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.3.0",
|
4
4
|
"comments": [
|
5
5
|
"These tests cover the core components of a set data structure: checking",
|
6
6
|
"presence, adding, comparing and basic set operations. Other features",
|
@@ -239,22 +239,28 @@
|
|
239
239
|
{
|
240
240
|
"description": "add to empty set",
|
241
241
|
"property": "add",
|
242
|
-
"
|
243
|
-
|
242
|
+
"input": {
|
243
|
+
"set": [],
|
244
|
+
"element": 3
|
245
|
+
},
|
244
246
|
"expected": [3]
|
245
247
|
},
|
246
248
|
{
|
247
249
|
"description": "add to non-empty set",
|
248
250
|
"property": "add",
|
249
|
-
"
|
250
|
-
|
251
|
+
"input": {
|
252
|
+
"set": [1, 2, 4],
|
253
|
+
"element": 3
|
254
|
+
},
|
251
255
|
"expected": [1, 2, 3, 4]
|
252
256
|
},
|
253
257
|
{
|
254
258
|
"description": "adding an existing element does not change the set",
|
255
259
|
"property": "add",
|
256
|
-
"
|
257
|
-
|
260
|
+
"input": {
|
261
|
+
"set": [1, 2, 3],
|
262
|
+
"element": 3
|
263
|
+
},
|
258
264
|
"expected": [1, 2, 3]
|
259
265
|
}
|
260
266
|
]
|
@@ -206,7 +206,7 @@ procedure PhoneNumberTests.Formats_a_number;
|
|
206
206
|
var phone: IPhoneNumber;
|
207
207
|
begin
|
208
208
|
phone := NewPhoneNumber('2234567890');
|
209
|
-
assert.AreEqual('(223) 456-7890', phone.
|
209
|
+
assert.AreEqual('(223) 456-7890', phone.Formatted);
|
210
210
|
end;
|
211
211
|
|
212
212
|
initialization
|
@@ -80,6 +80,11 @@ defmodule ProteinTranslationTest do
|
|
80
80
|
assert ProteinTranslation.of_rna("CARROT") == { :error, "invalid RNA" }
|
81
81
|
end
|
82
82
|
|
83
|
+
@tag :pending
|
84
|
+
test "invalid codon at end of RNA" do
|
85
|
+
assert ProteinTranslation.of_rna("UUUROT") == { :error, "invalid RNA" }
|
86
|
+
end
|
87
|
+
|
83
88
|
@tag :pending
|
84
89
|
test "invalid codon" do
|
85
90
|
assert ProteinTranslation.of_codon("INVALID") == { :error, "invalid codon" }
|
data/tracks/fsharp/config.json
CHANGED
@@ -954,6 +954,16 @@
|
|
954
954
|
"unlocked_by": "queen-attack",
|
955
955
|
"uuid": "471c89f9-8b27-4898-8e98-58e4b2921616"
|
956
956
|
},
|
957
|
+
{
|
958
|
+
"core": false,
|
959
|
+
"difficulty": 6,
|
960
|
+
"slug": "complex-numbers",
|
961
|
+
"topics": [
|
962
|
+
"mathematics"
|
963
|
+
],
|
964
|
+
"unlocked_by": "leap",
|
965
|
+
"uuid": "d993508d-b4d2-4f3f-a46d-35b753bf90a9"
|
966
|
+
},
|
957
967
|
{
|
958
968
|
"core": false,
|
959
969
|
"difficulty": 6,
|
@@ -224,6 +224,8 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "SpiralMatrix", "spiral-matr
|
|
224
224
|
EndProject
|
225
225
|
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "ArmstrongNumbers", "armstrong-numbers\ArmstrongNumbers.fsproj", "{48345F81-5B0F-4C2C-9403-84CBF918714C}"
|
226
226
|
EndProject
|
227
|
+
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "ComplexNumbers", "complex-numbers\ComplexNumbers.fsproj", "{79DD3BB0-7693-4DE3-98AD-E28A7DD91758}"
|
228
|
+
EndProject
|
227
229
|
Global
|
228
230
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
229
231
|
Debug|Any CPU = Debug|Any CPU
|
@@ -674,6 +676,10 @@ Global
|
|
674
676
|
{48345F81-5B0F-4C2C-9403-84CBF918714C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
675
677
|
{48345F81-5B0F-4C2C-9403-84CBF918714C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
676
678
|
{48345F81-5B0F-4C2C-9403-84CBF918714C}.Release|Any CPU.Build.0 = Release|Any CPU
|
679
|
+
{79DD3BB0-7693-4DE3-98AD-E28A7DD91758}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
680
|
+
{79DD3BB0-7693-4DE3-98AD-E28A7DD91758}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
681
|
+
{79DD3BB0-7693-4DE3-98AD-E28A7DD91758}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
682
|
+
{79DD3BB0-7693-4DE3-98AD-E28A7DD91758}.Release|Any CPU.Build.0 = Release|Any CPU
|
677
683
|
EndGlobalSection
|
678
684
|
GlobalSection(SolutionProperties) = preSolution
|
679
685
|
HideSolutionNode = FALSE
|
@@ -1,140 +1,144 @@
|
|
1
|
+
// This file was auto-generated based on version 1.0.1 of the canonical data.
|
2
|
+
|
1
3
|
module CircularBufferTest
|
2
4
|
|
3
|
-
open Xunit
|
4
5
|
open FsUnit.Xunit
|
6
|
+
open Xunit
|
5
7
|
open System
|
6
8
|
|
7
9
|
open CircularBuffer
|
8
10
|
|
9
11
|
[<Fact>]
|
10
|
-
let ``
|
11
|
-
let buffer1 = mkCircularBuffer 1
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
let
|
19
|
-
let
|
20
|
-
|
21
|
-
|
22
|
-
|> write '2'
|
23
|
-
|
24
|
-
let (val2, buffer2) = read buffer1
|
25
|
-
let (val3, buffer3) = read buffer2
|
12
|
+
let ``Reading empty buffer should fail`` () =
|
13
|
+
let buffer1 = mkCircularBuffer 1
|
14
|
+
(fun () -> read buffer1 |> ignore) |> should throw typeof<Exception>
|
15
|
+
|
16
|
+
|
17
|
+
[<Fact(Skip = "Remove to run test")>]
|
18
|
+
let ``Can read an item just written`` () =
|
19
|
+
let buffer1 = mkCircularBuffer 1
|
20
|
+
let buffer2 = write 1 buffer1
|
21
|
+
let (val3, _) = read buffer2
|
22
|
+
val3 |> should equal 1
|
23
|
+
|
26
24
|
|
27
|
-
|
28
|
-
|
25
|
+
[<Fact(Skip = "Remove to run test")>]
|
26
|
+
let ``Each item may only be read once`` () =
|
27
|
+
let buffer1 = mkCircularBuffer 1
|
28
|
+
let buffer2 = write 1 buffer1
|
29
|
+
let (val3, buffer3) = read buffer2
|
30
|
+
val3 |> should equal 1
|
29
31
|
(fun () -> read buffer3 |> ignore) |> should throw typeof<Exception>
|
30
32
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
let
|
35
|
-
let
|
33
|
+
|
34
|
+
[<Fact(Skip = "Remove to run test")>]
|
35
|
+
let ``Items are read in the order they are written`` () =
|
36
|
+
let buffer1 = mkCircularBuffer 2
|
37
|
+
let buffer2 = write 1 buffer1
|
38
|
+
let buffer3 = write 2 buffer2
|
39
|
+
let (val4, buffer4) = read buffer3
|
40
|
+
val4 |> should equal 1
|
41
|
+
let (val5, _) = read buffer4
|
42
|
+
val5 |> should equal 2
|
36
43
|
|
37
|
-
let buffer4 =
|
38
|
-
buffer3
|
39
|
-
|> write '1'
|
40
|
-
|> write '2'
|
41
44
|
|
42
|
-
|
43
|
-
|
44
|
-
let
|
45
|
+
[<Fact(Skip = "Remove to run test")>]
|
46
|
+
let ``Full buffer can't be written to`` () =
|
47
|
+
let buffer1 = mkCircularBuffer 1
|
48
|
+
let buffer2 = write 1 buffer1
|
49
|
+
(fun () -> write 2 buffer2 |> ignore) |> should throw typeof<Exception>
|
50
|
+
|
45
51
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
[<Fact(Skip = "Remove to run test")>]
|
51
|
-
let ``Alternate write and read`` () =
|
52
|
-
let buffer1 = mkCircularBuffer 2
|
53
|
-
let buffer2 = buffer1 |> write '1'
|
52
|
+
[<Fact(Skip = "Remove to run test")>]
|
53
|
+
let ``A read frees up capacity for another write`` () =
|
54
|
+
let buffer1 = mkCircularBuffer 1
|
55
|
+
let buffer2 = write 1 buffer1
|
54
56
|
let (val3, buffer3) = read buffer2
|
55
|
-
|
57
|
+
val3 |> should equal 1
|
58
|
+
let buffer4 = write 2 buffer3
|
56
59
|
let (val5, _) = read buffer4
|
60
|
+
val5 |> should equal 2
|
57
61
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
let
|
63
|
-
let
|
64
|
-
mkCircularBuffer 3
|
65
|
-
|> write '1'
|
66
|
-
|> write '2'
|
67
|
-
|
68
|
-
let (_, buffer2) = read buffer1
|
69
|
-
let buffer3 = buffer2 |> write '3'
|
62
|
+
|
63
|
+
[<Fact(Skip = "Remove to run test")>]
|
64
|
+
let ``Read position is maintained even across multiple writes`` () =
|
65
|
+
let buffer1 = mkCircularBuffer 3
|
66
|
+
let buffer2 = write 1 buffer1
|
67
|
+
let buffer3 = write 2 buffer2
|
70
68
|
let (val4, buffer4) = read buffer3
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
mkCircularBuffer 2
|
79
|
-
|> write '1'
|
80
|
-
|> write '2'
|
81
|
-
|
82
|
-
(fun () -> buffer |> write 'A' |> ignore) |> should throw typeof<Exception>
|
83
|
-
|
84
|
-
[<Fact(Skip = "Remove to run test")>]
|
85
|
-
let ``Overwriting oldest item in a full buffer`` () =
|
86
|
-
let buffer1 =
|
87
|
-
mkCircularBuffer 2
|
88
|
-
|> write '1'
|
89
|
-
|> write '2'
|
90
|
-
|> forceWrite 'A'
|
91
|
-
|
92
|
-
let (val2, buffer2) = read buffer1
|
93
|
-
let (val3, buffer3) = read buffer2
|
69
|
+
val4 |> should equal 1
|
70
|
+
let buffer5 = write 3 buffer4
|
71
|
+
let (val6, buffer6) = read buffer5
|
72
|
+
val6 |> should equal 2
|
73
|
+
let (val7, _) = read buffer6
|
74
|
+
val7 |> should equal 3
|
75
|
+
|
94
76
|
|
95
|
-
|
96
|
-
|
77
|
+
[<Fact(Skip = "Remove to run test")>]
|
78
|
+
let ``Items cleared out of buffer can't be read`` () =
|
79
|
+
let buffer1 = mkCircularBuffer 1
|
80
|
+
let buffer2 = write 1 buffer1
|
81
|
+
let buffer3 = clear buffer2
|
97
82
|
(fun () -> read buffer3 |> ignore) |> should throw typeof<Exception>
|
98
|
-
|
99
|
-
[<Fact(Skip = "Remove to run test")>]
|
100
|
-
let ``Forced writes to non full buffer should behave like writes`` () =
|
101
|
-
let buffer1 =
|
102
|
-
mkCircularBuffer 2
|
103
|
-
|> write '1'
|
104
|
-
|> forceWrite '2'
|
105
|
-
|
106
|
-
let (val2, buffer2) = read buffer1
|
107
|
-
let (val3, buffer3) = read buffer2
|
83
|
+
|
108
84
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
let
|
115
|
-
let
|
116
|
-
|
117
|
-
|
118
|
-
let (_, buffer3) = read buffer2
|
119
|
-
let (_, buffer4) = read buffer3
|
120
|
-
let buffer5 = buffer4 |> write '4'
|
121
|
-
let (_, buffer6) = read buffer5
|
122
|
-
|
123
|
-
let buffer7 =
|
124
|
-
List.fold (fun buffer value -> write value buffer) buffer6 ['5'..'8']
|
125
|
-
|> forceWrite 'A'
|
126
|
-
|> forceWrite 'B'
|
127
|
-
|
128
|
-
let folder buffer value =
|
129
|
-
let (val', buffer') = read buffer
|
130
|
-
val' |> should equal value |> ignore
|
131
|
-
buffer'
|
132
|
-
|
133
|
-
let buffer8 = List.fold folder buffer7 ['6'..'8']
|
85
|
+
[<Fact(Skip = "Remove to run test")>]
|
86
|
+
let ``Clear frees up capacity for another write`` () =
|
87
|
+
let buffer1 = mkCircularBuffer 1
|
88
|
+
let buffer2 = write 1 buffer1
|
89
|
+
let buffer3 = clear buffer2
|
90
|
+
let buffer4 = write 2 buffer3
|
91
|
+
let (val5, _) = read buffer4
|
92
|
+
val5 |> should equal 2
|
134
93
|
|
135
|
-
|
136
|
-
|
94
|
+
|
95
|
+
[<Fact(Skip = "Remove to run test")>]
|
96
|
+
let ``Clear does nothing on empty buffer`` () =
|
97
|
+
let buffer1 = mkCircularBuffer 1
|
98
|
+
let buffer2 = clear buffer1
|
99
|
+
let buffer3 = write 1 buffer2
|
100
|
+
let (val4, _) = read buffer3
|
101
|
+
val4 |> should equal 1
|
137
102
|
|
138
|
-
|
139
|
-
|
140
|
-
|
103
|
+
|
104
|
+
[<Fact(Skip = "Remove to run test")>]
|
105
|
+
let ``Overwrite acts like write on non-full buffer`` () =
|
106
|
+
let buffer1 = mkCircularBuffer 2
|
107
|
+
let buffer2 = write 1 buffer1
|
108
|
+
let buffer3 = forceWrite 2 buffer2
|
109
|
+
let (val4, buffer4) = read buffer3
|
110
|
+
val4 |> should equal 1
|
111
|
+
let (val5, _) = read buffer4
|
112
|
+
val5 |> should equal 2
|
113
|
+
|
114
|
+
|
115
|
+
[<Fact(Skip = "Remove to run test")>]
|
116
|
+
let ``Overwrite replaces the oldest item on full buffer`` () =
|
117
|
+
let buffer1 = mkCircularBuffer 2
|
118
|
+
let buffer2 = write 1 buffer1
|
119
|
+
let buffer3 = write 2 buffer2
|
120
|
+
let buffer4 = forceWrite 3 buffer3
|
121
|
+
let (val5, buffer5) = read buffer4
|
122
|
+
val5 |> should equal 2
|
123
|
+
let (val6, _) = read buffer5
|
124
|
+
val6 |> should equal 3
|
125
|
+
|
126
|
+
|
127
|
+
[<Fact(Skip = "Remove to run test")>]
|
128
|
+
let ``Overwrite replaces the oldest item remaining in buffer following a read`` () =
|
129
|
+
let buffer1 = mkCircularBuffer 3
|
130
|
+
let buffer2 = write 1 buffer1
|
131
|
+
let buffer3 = write 2 buffer2
|
132
|
+
let buffer4 = write 3 buffer3
|
133
|
+
let (val5, buffer5) = read buffer4
|
134
|
+
val5 |> should equal 1
|
135
|
+
let buffer6 = write 4 buffer5
|
136
|
+
let buffer7 = forceWrite 5 buffer6
|
137
|
+
let (val8, buffer8) = read buffer7
|
138
|
+
val8 |> should equal 3
|
139
|
+
let (val9, buffer9) = read buffer8
|
140
|
+
val9 |> should equal 4
|
141
|
+
let (val10, _) = read buffer9
|
142
|
+
val10 |> should equal 5
|
143
|
+
|
144
|
+
|