Skip to content

Commit f4c3403

Browse files
authored
State store PoCs
1 parent 0cdab18 commit f4c3403

30 files changed

Lines changed: 3052 additions & 35 deletions

File tree

.claude/settings.local.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
"Bash(git diff:*)",
1313
"Bash(dotnet test:*)",
1414
"Bash(docker compose:*)",
15-
"Bash(dotnet run:*)"
15+
"Bash(dotnet run:*)",
16+
"Bash(pg_isready -h localhost -p 5432)"
1617
],
1718
"deny": [],
1819
"ask": []

Core/Cleipnir.ResilientFunctions.Tests/UtilsTests/BinaryPackerTests.cs

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public void TwoSimpleByteArraysCanBeCombinedAndSplitAgain()
1616
var arr2 = new byte[] { 201, 202, 203 };
1717

1818
var packedArray = BinaryPacker.Pack(arr1, arr2);
19-
var reconstructed = BinaryPacker.Split(packedArray, pieces: 2);
19+
var reconstructed = BinaryPacker.Split(packedArray, expectedPieces: 2);
2020
reconstructed.Count.ShouldBe(2);
2121
reconstructed[0].ShouldBe(arr1);
2222
reconstructed[1].ShouldBe(arr2);
@@ -32,7 +32,7 @@ public void MultipleStringsCanBeMarshalledAndReconstructed()
3232
const string str5 = "|";
3333

3434
var packedArray = BinaryPacker.Pack(str1.ToUtf8Bytes(), str2.ToUtf8Bytes(), str3.ToUtf8Bytes(), str4.ToUtf8Bytes(), str5.ToUtf8Bytes());
35-
var reconstructed = BinaryPacker.Split(packedArray, pieces: 5);
35+
var reconstructed = BinaryPacker.Split(packedArray, expectedPieces: 5);
3636
reconstructed.Count.ShouldBe(5);
3737
reconstructed[0]!.ToStringFromUtf8Bytes().ShouldBe(str1);
3838
reconstructed[1]!.ToStringFromUtf8Bytes().ShouldBe(str2);
@@ -47,7 +47,7 @@ public void EmptyStringCanBeMarshalledAndReconstructed()
4747
var empty = Array.Empty<byte>();
4848
var combined = BinaryPacker.Pack(empty);
4949
combined.Length.ShouldNotBe(0);
50-
var split = BinaryPacker.Split(combined, pieces: 1)[0];
50+
var split = BinaryPacker.Split(combined, expectedPieces: 1)[0];
5151
split.ShouldBe(empty);
5252
}
5353

@@ -58,9 +58,48 @@ public void NullCanBeMarshalledAndReconstructed()
5858
var last = new byte[] { 200, 201 };
5959
var combined = BinaryPacker.Pack(first, null, last);
6060

61-
var split = BinaryPacker.Split(combined, pieces: 3);
61+
var split = BinaryPacker.Split(combined, expectedPieces: 3);
6262
split[0].ShouldBe(first);
6363
split[1].ShouldBeNull();
6464
split[2].ShouldBe(last);
6565
}
66+
67+
[TestMethod]
68+
public void MultipleStringsCanBeAppendedToSourceAndAllReconstructed()
69+
{
70+
const string str1 = "hello world";
71+
const string str2 = "hello universe";
72+
73+
var sourceArray = BinaryPacker.Pack(str1.ToUtf8Bytes(), str2.ToUtf8Bytes());
74+
75+
const string str3 = "testing tester";
76+
const string str4 = "";
77+
const string str5 = "|";
78+
79+
var appended = BinaryPacker.Append(sourceArray, str3.ToUtf8Bytes(), str4.ToUtf8Bytes(), str5.ToUtf8Bytes());
80+
81+
var reconstructed = BinaryPacker.Split(appended, expectedPieces: 5);
82+
reconstructed.Count.ShouldBe(5);
83+
reconstructed[0]!.ToStringFromUtf8Bytes().ShouldBe(str1);
84+
reconstructed[1]!.ToStringFromUtf8Bytes().ShouldBe(str2);
85+
reconstructed[2]!.ToStringFromUtf8Bytes().ShouldBe(str3);
86+
reconstructed[3]!.ToStringFromUtf8Bytes().ShouldBe(str4);
87+
reconstructed[4]!.ToStringFromUtf8Bytes().ShouldBe(str5);
88+
}
89+
90+
[TestMethod]
91+
public void NullCanBeAppendedToSourceAndAllReconstructed()
92+
{
93+
const string str1 = "hello world";
94+
const string str2 = "hello universe";
95+
96+
var sourceArray = BinaryPacker.Pack(str1.ToUtf8Bytes(), str2.ToUtf8Bytes());
97+
var appended = BinaryPacker.Append(sourceArray, [null]);
98+
99+
var reconstructed = BinaryPacker.Split(appended, expectedPieces: 5);
100+
reconstructed.Count.ShouldBe(3);
101+
reconstructed[0]!.ToStringFromUtf8Bytes().ShouldBe(str1);
102+
reconstructed[1]!.ToStringFromUtf8Bytes().ShouldBe(str2);
103+
reconstructed[2].ShouldBeNull();
104+
}
66105
}

0 commit comments

Comments
 (0)