28 lines
1.6 KiB
Go
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)
|
|
}
|
|
}
|