trackler 2.2.1.98 → 2.2.1.99
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/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
|
+
|