an atproto pds written in F# (.NET 9) 馃
pds fsharp giraffe dotnet atproto
at main 1.6 kB view raw
1module BlockStoreTests 2 3open Xunit 4open PDSharp.Core 5open PDSharp.Core.BlockStore 6 7[<Fact>] 8let ``MemoryBlockStore Put and Get roundtrip`` () = 9 let store = MemoryBlockStore() :> IBlockStore 10 let data = System.Text.Encoding.UTF8.GetBytes("hello world") 11 12 let cid = store.Put(data) |> Async.RunSynchronously 13 let retrieved = store.Get(cid) |> Async.RunSynchronously 14 15 Assert.True(Option.isSome retrieved) 16 Assert.Equal<byte[]>(data, Option.get retrieved) 17 18[<Fact>] 19let ``MemoryBlockStore Has returns true for existing`` () = 20 let store = MemoryBlockStore() :> IBlockStore 21 let data = System.Text.Encoding.UTF8.GetBytes("test data") 22 23 let cid = store.Put(data) |> Async.RunSynchronously 24 let exists = store.Has(cid) |> Async.RunSynchronously 25 26 Assert.True(exists) 27 28[<Fact>] 29let ``MemoryBlockStore Has returns false for missing`` () = 30 let store = MemoryBlockStore() :> IBlockStore 31 let fakeCid = Cid.FromHash(Crypto.sha256Str "nonexistent") 32 33 let exists = store.Has(fakeCid) |> Async.RunSynchronously 34 35 Assert.False(exists) 36 37[<Fact>] 38let ``MemoryBlockStore Get returns None for missing`` () = 39 let store = MemoryBlockStore() :> IBlockStore 40 let fakeCid = Cid.FromHash(Crypto.sha256Str "nonexistent") 41 42 let result = store.Get(fakeCid) |> Async.RunSynchronously 43 44 Assert.True(Option.isNone result) 45 46[<Fact>] 47let ``MemoryBlockStore CID is content-addressed`` () = 48 let store = MemoryBlockStore() :> IBlockStore 49 let data = System.Text.Encoding.UTF8.GetBytes("same content") 50 let cid1 = store.Put data |> Async.RunSynchronously 51 let cid2 = store.Put data |> Async.RunSynchronously 52 Assert.Equal<byte[]>(cid1.Bytes, cid2.Bytes)