| Filename | Latest commit message | Latest commit date |
|---|---|---|
A record's HoldsIds was decided by its admission and trusted afterwards, so a document changed after it was committed, or loaded and changed in place, flushed under the header its admission-time content needed (Soul P7, P10). HoldsIds now has one owner, the record's stored form, read when asked: - a plain record: CultElementIds.Holds over its document, a scan that reads and refuses nothing; - a variant: the same scan over each override value, decoded with the codec the record was built with (the cache's, or the attached cache's at load); - a variant built with no codec (a store that loaded it with no cache) cannot see its values and counts as holding an id, so a store never writes an unmarked header over ids it could not see. Cut: the admission path that set HoldsIds on plain records, on variants from their resolved copies, and on flattened records; the internal setter and its backing flag; IdPlan.HeldIds and IdPlan.HoldsIds. The Mesh typed write reads Holds off the document it writes. Admission keeps its own id counting (IdPlan.Count) for IdsInMemoryOnly. Tests: an id added to a committed or loaded deck after admission marks a PushAll v3, and taking it away unmarks it; a variant read without a codec counts as holding ids while the same record read with one does not. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
| .. | ||
| Fixtures | ||
| AssemblyInfo.cs | ||
| BackingStoreTests.cs | ||
| ConditionalCommitTests.cs | ||
| CultAssetGuidKeyTests.cs | ||
| CultCacheJournalTests.cs | ||
| CultCacheObserverTests.cs | ||
| CultCacheProjectionTests.cs | ||
| CultDocumentRegistryTests.cs | ||
| CultDocumentSelectionSurfaceTests.cs | ||
| CultInspectorModelTests.cs | ||
| CultMathJsonTests.cs | ||
| CultMathSerializationTests.cs | ||
| DirectoryStoreDurabilityTests.cs | ||
| DocumentShapeTests.cs | ||
| ElementIdEngineTests.cs | ||
| ElementIdTests.cs | ||
| GameCult.Caching.Tests.csproj | ||
| PreCut2FixtureDocuments.cs | ||
| PreCut2StoreFormatTests.cs | ||
| README.md | ||
| SerializationOptionsTests.cs | ||
| StoreRoutingTests.cs | ||
| VariantTests.cs | ||
GameCult.Caching.Tests
GameCult.Caching.Tests contains NUnit tests for the caching library and its
MessagePack persistence stores.
Scope
The tests currently cover:
SingleFileMessagePackBackingStoreround-trips, external pulls, and the dirty-pull guardDirectoryMessagePackBackingStorewith thecultcache.store.v4.directory-content-addressed-pagesmanifest: page writes, clean flushes, concurrent writers under the commit lease, external deltas, unflushed local keys, orphaned pages, and observers running after the lease is releasedCultCacheMessagePack.OpenAsync, persisted globals, dirty state, and flush on dispose- cache lookups (
Get,GetAll, runtime-type upserts) CultCache.Commitbatches on a directory store: visibility after the store commits, abandoned stages, sealed batches, observers committing again- Cult document payloads, registry shape rejections, canonical schema fixtures, and schema drift reports
- hand-written MessagePack snapshot and record serialization
StoreRoutingTests: the store-composition contract (routing, attachment is hydration, read-only stores, global singletons, assignable lookups, batches, all-or-nothing loads)ConditionalCommitTests:Expect,ExpectUnchanged,TryCommit, the single-file lock, strictly increasingstoredAt, and the same conditions on a directory storeDirectoryStoreDurabilityTests: failed manifest replace, content-addressed pages, the commit lease, orphan pages and tampered pages, with faults from real file locksPreCut2StoreFormatTests: stores written before Cut 2 still open
Selective hydration, the directory store's stage probes, pre-v4 directory
formats, and the SoA table are no longer in the tree; the SoA table is parked
at parked/cultcache-soa (docs/parked-features.md).
Run
dotnet test tests\GameCult.Caching.Tests\GameCult.Caching.Tests.csproj