File size: 1,320 Bytes
6e204a5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
"""
Unit tests for FloorGen Evaluation Harness (Stage 5).
"""

import pytest
import numpy as np
from floorgen.data.scripts.generate_sample_data import generate_single_plan
from floorgen.eval.fid_kid import compute_distribution_metrics
from floorgen.eval.graph_edit_distance import evaluate_batch_compatibility
from floorgen.eval.llm_judge import evaluate_structural_realism, generate_llm_judge_prompt


def test_fid_kid_metrics():
    plans_a = [generate_single_plan(plan_id=i, archetype_idx=0) for i in range(10)]
    plans_b = [generate_single_plan(plan_id=i+10, archetype_idx=0) for i in range(10)]

    metrics = compute_distribution_metrics(plans_a, plans_b)
    assert "FID" in metrics
    assert "KID" in metrics
    assert metrics["FID"] >= 0.0


def test_graph_edit_distance():
    plan = generate_single_plan(plan_id=1, archetype_idx=0)
    res = evaluate_batch_compatibility([plan], [plan])
    assert res["mean_GED"] == 0.0
    assert res["compatibility_score"] == 1.0


def test_llm_judge():
    plan = generate_single_plan(plan_id=1, archetype_idx=0)
    stats = evaluate_structural_realism(plan)
    assert "overall_realism" in stats
    assert stats["overall_realism"] > 50.0

    prompt = generate_llm_judge_prompt(plan, plan, plan)
    assert "Candidate A" in prompt
    assert "Candidate B" in prompt