Files
Assistant/tests/research_contracts/truth_bundle_test.go
2026-08-22 13:37:22 +03:00

28 lines
1.6 KiB
Go

package research_contracts_test
import (
"testing"
"git.cin.su/m/Assistant/contracts/epistemics"
episdomain "git.cin.su/m/Assistant/modules/epistemics/domain"
)
func TestCompileObservedClaimPreservesEvidenceChainAndConflict(t *testing.T) {
source := epistemics.Source{ID: "source-1", Locator: "https://example.test/source"}
snapshot := epistemics.SourceSnapshot{ID: "snapshot-1", SourceID: source.ID, ContentDigest: "sha256:test", CapturedAtUnixMillis: 100, Freshness: epistemics.FreshnessCurrent}
excerpt := epistemics.SourceExcerpt{ID: "excerpt-1", SnapshotID: snapshot.ID, Text: "exact observation", Start: 0, End: 17}
bundle, err := episdomain.CompileObservedClaim(source, snapshot, excerpt, "The observed fact is true", 200, epistemics.ConflictPresent)
if err != nil || bundle.Claim.ObservationID != bundle.Observation.ID || bundle.Belief.State != epistemics.BeliefConflicted || bundle.Citation.Evidence != epistemics.EvidenceObserved {
t.Fatalf("invalid truth bundle: %#v %v", bundle, err)
}
}
func TestCompileObservedClaimRejectsBrokenSourceChain(t *testing.T) {
source := epistemics.Source{ID: "source-1", Locator: "https://example.test/source"}
snapshot := epistemics.SourceSnapshot{ID: "snapshot-1", SourceID: "other-source", ContentDigest: "sha256:test", CapturedAtUnixMillis: 100, Freshness: epistemics.FreshnessCurrent}
excerpt := epistemics.SourceExcerpt{ID: "excerpt-1", SnapshotID: snapshot.ID, Text: "exact observation", Start: 0, End: 17}
if _, err := episdomain.CompileObservedClaim(source, snapshot, excerpt, "statement", 200, epistemics.ConflictNone); err != episdomain.ErrInvalidTruthBundle {
t.Fatalf("broken chain was accepted: %v", err)
}
}