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.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/complex-numbers/canonical-data.json +47 -47
  4. data/problem-specifications/exercises/custom-set/canonical-data.json +13 -7
  5. data/tracks/delphi/exercises/phone-number/uPhoneNumberTests.pas +1 -1
  6. data/tracks/elixir/exercises/protein-translation/protein_translation_test.exs +5 -0
  7. data/tracks/fsharp/config.json +10 -0
  8. data/tracks/fsharp/exercises/Exercises.sln +6 -0
  9. data/tracks/fsharp/exercises/accumulate/AccumulateTest.fs +2 -0
  10. data/tracks/fsharp/exercises/bank-account/BankAccountTest.fs +2 -0
  11. data/tracks/fsharp/exercises/binary-search-tree/BinarySearchTreeTest.fs +2 -0
  12. data/tracks/fsharp/exercises/binary/BinaryTest.fs +2 -0
  13. data/tracks/fsharp/exercises/circular-buffer/CircularBufferTest.fs +121 -117
  14. data/tracks/fsharp/exercises/complex-numbers/ComplexNumbers.fs +21 -0
  15. data/tracks/fsharp/exercises/complex-numbers/ComplexNumbers.fsproj +23 -0
  16. data/tracks/fsharp/exercises/complex-numbers/ComplexNumbersTest.fs +168 -0
  17. data/tracks/fsharp/exercises/complex-numbers/Example.fs +27 -0
  18. data/tracks/fsharp/exercises/complex-numbers/Program.fs +1 -0
  19. data/tracks/fsharp/exercises/complex-numbers/README.md +35 -0
  20. data/tracks/fsharp/exercises/diamond/DiamondTest.fs +2 -0
  21. data/tracks/fsharp/exercises/diffie-hellman/DiffieHellmanTest.fs +2 -0
  22. data/tracks/fsharp/exercises/dot-dsl/DotDslTest.fs +2 -0
  23. data/tracks/fsharp/exercises/error-handling/ErrorHandlingTest.fs +2 -0
  24. data/tracks/fsharp/exercises/go-counting/GoCountingTest.fs +2 -0
  25. data/tracks/fsharp/exercises/grade-school/GradeSchoolTest.fs +2 -0
  26. data/tracks/fsharp/exercises/hangman/HangmanTest.fs +2 -0
  27. data/tracks/fsharp/exercises/hexadecimal/HexadecimalTest.fs +2 -0
  28. data/tracks/fsharp/exercises/ledger/LedgerTest.fs +2 -0
  29. data/tracks/fsharp/exercises/lens-person/LensPersonTest.fs +2 -0
  30. data/tracks/fsharp/exercises/linked-list/LinkedListTest.fs +2 -0
  31. data/tracks/fsharp/exercises/matrix/MatrixTest.fs +2 -0
  32. data/tracks/fsharp/exercises/octal/OctalTest.fs +2 -0
  33. data/tracks/fsharp/exercises/parallel-letter-frequency/ParallelLetterFrequencyTest.fs +2 -0
  34. data/tracks/fsharp/exercises/pov/PovTest.fs +2 -0
  35. data/tracks/fsharp/exercises/protein-translation/ProteinTranslationTest.fs +2 -0
  36. data/tracks/fsharp/exercises/pythagorean-triplet/PythagoreanTripletTest.fs +2 -0
  37. data/tracks/fsharp/exercises/robot-name/RobotNameTest.fs +2 -0
  38. data/tracks/fsharp/exercises/saddle-points/SaddlePointsTest.fs +2 -0
  39. data/tracks/fsharp/exercises/say/SayTest.fs +2 -0
  40. data/tracks/fsharp/exercises/scale-generator/ScaleGeneratorTest.fs +2 -0
  41. data/tracks/fsharp/exercises/secret-handshake/SecretHandshakeTest.fs +2 -0
  42. data/tracks/fsharp/exercises/series/SeriesTest.fs +2 -0
  43. data/tracks/fsharp/exercises/sgf-parsing/SgfParsingTest.fs +2 -0
  44. data/tracks/fsharp/exercises/sieve/SieveTest.fs +2 -0
  45. data/tracks/fsharp/exercises/simple-cipher/SimpleCipherTest.fs +2 -0
  46. data/tracks/fsharp/exercises/simple-linked-list/SimpleLinkedListTest.fs +2 -0
  47. data/tracks/fsharp/exercises/space-age/SpaceAgeTest.fs +2 -0
  48. data/tracks/fsharp/exercises/strain/StrainTest.fs +2 -0
  49. data/tracks/fsharp/exercises/sublist/SublistTest.fs +2 -0
  50. data/tracks/fsharp/exercises/sum-of-multiples/SumOfMultiplesTest.fs +2 -0
  51. data/tracks/fsharp/exercises/tournament/TournamentTest.fs +2 -0
  52. data/tracks/fsharp/exercises/transpose/TransposeTest.fs +2 -0
  53. data/tracks/fsharp/exercises/transpose/TrinaryTest.fs +3 -1
  54. data/tracks/fsharp/exercises/tree-building/TreeBuildingTest.fs +2 -0
  55. data/tracks/fsharp/exercises/triangle/TriangleTest.fs +2 -0
  56. data/tracks/fsharp/exercises/trinary/TrinaryTest.fs +2 -0
  57. data/tracks/fsharp/exercises/two-bucket/TwoBucketTest.fs +2 -0
  58. data/tracks/fsharp/exercises/variable-length-quantity/VariableLengthQuantityTest.fs +2 -0
  59. data/tracks/fsharp/exercises/word-count/WordCountTest.fs +2 -0
  60. data/tracks/fsharp/exercises/word-search/WordSearchTest.fs +2 -0
  61. data/tracks/fsharp/exercises/wordy/WordyTest.fs +2 -0
  62. data/tracks/fsharp/exercises/zebra-puzzle/ZebraPuzzleTest.fs +2 -0
  63. data/tracks/fsharp/exercises/zipper/ZipperTest.fs +2 -0
  64. data/tracks/fsharp/generators/CanonicalData.fs +1 -1
  65. data/tracks/fsharp/generators/Generators.fs +89 -0
  66. data/tracks/go/config.json +16 -0
  67. data/tracks/go/exercises/rail-fence-cipher/.meta/gen.go +82 -0
  68. data/tracks/go/exercises/rail-fence-cipher/README.md +83 -0
  69. data/tracks/go/exercises/rail-fence-cipher/cases_test.go +50 -0
  70. data/tracks/go/exercises/rail-fence-cipher/example.go +58 -0
  71. data/tracks/go/exercises/rail-fence-cipher/rail_fence_cipher_test.go +15 -0
  72. data/tracks/go/exercises/say/.meta/gen.go +5 -3
  73. data/tracks/go/exercises/say/cases_test.go +2 -2
  74. data/tracks/go/exercises/scrabble-score/.meta/gen.go +5 -3
  75. data/tracks/go/exercises/scrabble-score/cases_test.go +2 -2
  76. data/tracks/go/exercises/secret-handshake/.meta/gen.go +5 -3
  77. data/tracks/go/exercises/secret-handshake/cases_test.go +2 -2
  78. data/tracks/go/exercises/transpose/.meta/gen.go +5 -3
  79. data/tracks/go/exercises/transpose/cases_test.go +30 -76
  80. data/tracks/go/exercises/word-count/.meta/gen.go +5 -3
  81. data/tracks/go/exercises/word-count/cases_test.go +2 -2
  82. data/tracks/go/exercises/wordy/.meta/gen.go +5 -3
  83. data/tracks/go/exercises/wordy/cases_test.go +2 -2
  84. data/tracks/java/exercises/largest-series-product/.meta/src/reference/java/LargestSeriesProductCalculator.java +1 -3
  85. data/tracks/java/exercises/largest-series-product/.meta/version +1 -0
  86. data/tracks/java/exercises/largest-series-product/src/test/java/LargestSeriesProductCalculatorTest.java +9 -44
  87. data/tracks/ocaml/exercises/grade-school/.meta/description.md +21 -0
  88. data/tracks/ocaml/exercises/palindrome-products/.meta/description.md +35 -0
  89. data/tracks/ocaml/exercises/palindrome-products/README.md +13 -9
  90. metadata +16 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 61557d8c8f53297686afbfb79d34fd4bb855673b
4
- data.tar.gz: 0e787d40634a430d4019195d58f4fdff356f82ae
3
+ metadata.gz: 8a4f6ff506d46fc8e5cd2158613f444181e5a9f4
4
+ data.tar.gz: 8248291e3689c6087c3e8d6c82de286eb754c6d3
5
5
  SHA512:
6
- metadata.gz: bfd3d1d4c263d6dc3bc615d67eb273808855a2c2bfee91201963dcc168350f1b30c8fe8efe04a145d20900976a824d52a6e6540f686c42c1a81cdbf5c3108a54
7
- data.tar.gz: a203c0f9128acfb983935569b854b134213a3da2aa254fc3a6e94565c2b3b22df296fc3027783cce311c64c22eb9415cb926c8c1e402db33f6cdcef96c52263f
6
+ metadata.gz: 19d9955f95e594ff280c3ceaf97cbb0a7583860bc892e01380953f95cd4861150bb8c00a9c0a222e18f3f31601f296f4e7bfa659c05e59a9a3943e5ac16a3033
7
+ data.tar.gz: 6804eab9031cad8febe3ab5fe3e49d03eb4eb95eaf50ad0401791d79b4c23bcf3dab914ef6023dac7ea5b364c22b0bfea717c6887404bc3d02c62a7b9eeaa1a2
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.2.1.98"
2
+ VERSION = "2.2.1.99"
3
3
  end
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "exercise": "complex-numbers",
3
- "version": "1.0.0",
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.2.0",
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
- "set": [],
243
- "element": 3,
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
- "set": [1, 2, 4],
250
- "element": 3,
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
- "set": [1, 2, 3],
257
- "element": 3,
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.ToString);
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" }
@@ -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,3 +1,5 @@
1
+ // This file was created manually and its version is 1.0.0
2
+
1
3
  module AccumulateTest
2
4
 
3
5
  open System
@@ -1,3 +1,5 @@
1
+ // This file was created manually and its version is 1.0.0.
2
+
1
3
  module BankAccountTest
2
4
 
3
5
  open Xunit
@@ -1,3 +1,5 @@
1
+ // This file was created manually and its version is 1.0.0.
2
+
1
3
  module BinarySearchTreeTest
2
4
 
3
5
  open Xunit
@@ -1,3 +1,5 @@
1
+ // This file was created manually and its version is 1.0.0.
2
+
1
3
  module BinaryTest
2
4
 
3
5
  open FsUnit.Xunit
@@ -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 ``Write and read back one item`` () =
11
- let buffer1 = mkCircularBuffer 1 |> write '1'
12
- let (val2, buffer2) = read buffer1
13
-
14
- val2 |> should equal '1'
15
- (fun () -> read buffer2 |> ignore) |> should throw typeof<Exception>
16
-
17
- [<Fact(Skip = "Remove to run test")>]
18
- let ``Write and read back multiple items`` () =
19
- let buffer1 =
20
- mkCircularBuffer 2
21
- |> write '1'
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
- val2 |> should equal '1'
28
- val3 |> should equal '2'
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
- [<Fact(Skip = "Remove to run test")>]
32
- let ``Clearing buffer`` () =
33
- let buffer1 = mkCircularBuffer 3
34
- let buffer2 = List.fold (fun buffer value -> write value buffer) buffer1 ['1'..'3']
35
- let buffer3 = clear buffer2
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
- let (val5, buffer5) = read buffer4
43
- let buffer6 = buffer5 |> write '3'
44
- let (val7, _) = read buffer6
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
- (fun () -> read buffer3 |> ignore) |> should throw typeof<Exception>
47
- val5 |> should equal '1'
48
- val7 |> should equal '2'
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
- let buffer4 = buffer3 |> write '2'
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
- val3 |> should equal '1'
59
- val5 |> should equal '2'
60
-
61
- [<Fact(Skip = "Remove to run test")>]
62
- let ``Reads back oldest item`` () =
63
- let buffer1 =
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
- let (val5, _) = read buffer4
72
- val4 |> should equal '2'
73
- val5 |> should equal '3'
74
-
75
- [<Fact(Skip = "Remove to run test")>]
76
- let ``Writing to a full buffer throws an exception`` () =
77
- let buffer =
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
- val2 |> should equal '2'
96
- val3 |> should equal 'A'
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
- val2 |> should equal '1'
110
- val3 |> should equal '2'
111
- (fun () -> read buffer3 |> ignore) |> should throw typeof<Exception>
112
-
113
- [<Fact(Skip = "Remove to run test")>]
114
- let ``Alternate read and write into buffer overflow`` () =
115
- let buffer1 = mkCircularBuffer 5
116
- let buffer2 = List.fold (fun buffer value -> write value buffer) buffer1 ['1'..'3']
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
- let (val9, buffer9) = read buffer8
136
- let (val10, buffer10) = read buffer9
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
- val9 |> should equal 'A'
139
- val10 |> should equal 'B'
140
- (fun () -> read buffer10 |> ignore) |> should throw typeof<Exception>
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
+