knowledge/test_fact_validation.cpp¶
Unit tests for FactValidation — claim verification against grounding facts. More...
Functions¶
| Name | |
|---|---|
| TEST(FactValidation , EmptyFactsPasses ) | |
| TEST(FactValidation , MatchingFactPasses ) | |
| TEST(FactValidation , NoRelevantFactsPasses ) | |
| TEST(FactValidation , IsAvailable ) | |
| TEST(KnowledgeRetrieval , LoadEmptyPathDoesNotCrash ) | |
| TEST(KnowledgeRetrieval , NotLoadedReturnsEmpty ) |
Detailed Description¶
Unit tests for FactValidation — claim verification against grounding facts.
Date: 2026-05-28
Functions Documentation¶
function TEST¶
function TEST¶
function TEST¶
function TEST¶
function TEST¶
function TEST¶
Source code¶
#include "common/types.hpp"
#include "knowledge/fact_validation.hpp"
#include "knowledge/knowledge_retrieval.hpp"
#include <gtest/gtest.h>
#include <memory>
using namespace sgns::neoswarm;
using namespace sgns::neoswarm::knowledge;
namespace
{
KnowledgeFact MakeFact( const std::string& source, const std::string& content )
{
KnowledgeFact f;
f.m_source = source;
f.m_content = content;
return f;
}
std::shared_ptr<KnowledgeRetrieval> MakeRetrieval()
{
KnowledgeRetrieval::Config cfg;
cfg.m_factsPath = "";
auto ret = std::make_shared<KnowledgeRetrieval>( cfg );
ret->Load();
return ret;
}
} // namespace
TEST( FactValidation, EmptyFactsPasses )
{
auto retrieval = MakeRetrieval();
FactValidation validator( retrieval );
std::vector<KnowledgeFact> facts;
auto result = validator.Validate( "Anything goes", facts );
EXPECT_TRUE( result.passed_ );
}
TEST( FactValidation, MatchingFactPasses )
{
auto retrieval = MakeRetrieval();
FactValidation validator( retrieval );
std::vector<KnowledgeFact> facts = { MakeFact( "physics", "speed of light: 299792 km/s" ) };
auto result = validator.Validate( "The speed of light is approximately 299792 km per second", facts );
EXPECT_TRUE( result.passed_ );
}
TEST( FactValidation, NoRelevantFactsPasses )
{
auto retrieval = MakeRetrieval();
FactValidation validator( retrieval );
std::vector<KnowledgeFact> facts = { MakeFact( "geography", "Earth radius is 6371 km" ),
MakeFact( "chemistry", "Water boils at 100 degrees Celsius at sea level" ) };
auto result = validator.Validate( "The speed of light is very fast", facts );
EXPECT_TRUE( result.passed_ );
}
TEST( FactValidation, IsAvailable )
{
auto retrieval = MakeRetrieval();
FactValidation validator( retrieval );
// May or may not be available depending on what was loaded
bool available = validator.IsAvailable();
// Just verify it doesn't crash — either state is valid
SUCCEED();
}
TEST( KnowledgeRetrieval, LoadEmptyPathDoesNotCrash )
{
KnowledgeRetrieval::Config cfg;
cfg.m_factsPath = "";
KnowledgeRetrieval retriever( cfg );
retriever.Load();
// Retrieve should handle empty facts gracefully
auto result = retriever.Retrieve( "What is gravity?" );
EXPECT_TRUE( !result.has_value() || result.has_value() );
}
TEST( KnowledgeRetrieval, NotLoadedReturnsEmpty )
{
KnowledgeRetrieval::Config cfg;
cfg.m_factsPath = "/nonexistent/path/facts.csv";
KnowledgeRetrieval retriever( cfg );
retriever.Load();
EXPECT_FALSE( retriever.IsLoaded() );
auto result = retriever.Retrieve( "test query" );
EXPECT_FALSE( result.has_value() );
}
Updated on 2026-07-25 at 22:56:57 +0000