an atproto pds written in F# (.NET 9) 馃
pds
fsharp
giraffe
dotnet
atproto
1module Firehose.Tests
2
3open Xunit
4open PDSharp.Core
5open PDSharp.Core.Firehose
6open PDSharp.Core.Crypto
7
8[<Fact>]
9let ``nextSeq monotonically increases`` () =
10 resetSeq ()
11 let seq1 = nextSeq ()
12 let seq2 = nextSeq ()
13 let seq3 = nextSeq ()
14
15 Assert.Equal(1L, seq1)
16 Assert.Equal(2L, seq2)
17 Assert.Equal(3L, seq3)
18
19[<Fact>]
20let ``currentSeq returns without incrementing`` () =
21 resetSeq ()
22 let _ = nextSeq () // 1
23 let _ = nextSeq () // 2
24 let current = currentSeq ()
25 let next = nextSeq ()
26
27 Assert.Equal(2L, current)
28 Assert.Equal(3L, next)
29
30[<Fact>]
31let ``createCommitEvent has correct fields`` () =
32 resetSeq ()
33 let hash = sha256Str "test"
34 let cid = Cid.FromHash hash
35 let carBytes = [| 0x01uy; 0x02uy |]
36
37 let event = createCommitEvent "did:web:test" "rev123" cid carBytes
38
39 Assert.Equal(1L, event.Seq)
40 Assert.Equal("did:web:test", event.Did)
41 Assert.Equal("rev123", event.Rev)
42 Assert.Equal<byte[]>(cid.Bytes, event.Commit.Bytes)
43 Assert.Equal<byte[]>(carBytes, event.Blocks)
44
45[<Fact>]
46let ``encodeEvent produces valid CBOR`` () =
47 resetSeq ()
48 let hash = sha256Str "test"
49 let cid = Cid.FromHash hash
50 let carBytes = [| 0x01uy; 0x02uy |]
51 let event = createCommitEvent "did:web:test" "rev123" cid carBytes
52 let encoded = encodeEvent event
53
54 Assert.True(encoded.Length > 0)
55 Assert.True(encoded.[0] >= 0xa0uy, "Should encode as CBOR map")