Files

69 lines
2.4 KiB
Python

import sys, os
sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
import numpy as np
from vision import caption_image, detect_qwen_models, _rule_based_caption, determine_variant
def test_rule_based_caption_dark_image():
img = np.zeros((1, 64, 64, 3), dtype=np.float32)
c = _rule_based_caption(img)
assert "dark" in c.lower()
def test_rule_based_caption_bright_image():
img = np.ones((1, 64, 64, 3), dtype=np.float32)
c = _rule_based_caption(img)
assert "bright" in c.lower() or "light" in c.lower()
def test_caption_image_with_none_model_returns_fallback():
img = np.zeros((1, 64, 64, 3), dtype=np.float32)
c = caption_image(img, "none (rule-based)")
assert len(c) > 0
def test_detect_qwen_models_returns_list():
models = detect_qwen_models()
assert isinstance(models, list)
assert "none (rule-based)" in models
def test_determine_variant_no_model_returns_blob():
v, p = determine_variant(["a cat", "a dog"], "none (rule-based)")
assert v == "blob"
assert p == ""
def test_determine_variant_empty_captions_returns_blob():
v, p = determine_variant([], "none (rule-based)")
assert v == "blob"
def test_determine_variant_keywords_dog():
captions = [
"A golden retriever sits happily on a park lawn.",
"A golden retriever puppy on grass.",
"A dog with a joyful expression sits outdoors.",
] * 4
v, p = determine_variant(captions, "none (rule-based)")
assert v == "dog"
def test_determine_variant_keywords_cat():
captions = ["A fluffy orange tabby cat sits on a blanket."] * 10
v, p = determine_variant(captions, "none (rule-based)")
assert v == "cat"
def test_determine_variant_keywords_robot():
captions = ["A robot with glowing eyes in a cyber city."] * 10
v, p = determine_variant(captions, "none (rule-based)")
assert v == "robot"
def test_determine_variant_keywords_bunny():
captions = ["A cute bunny rabbit in a garden."] * 10
v, p = determine_variant(captions, "none (rule-based)")
assert v == "bunny"
def test_determine_variant_keywords_dragon():
captions = ["A dragon with green scales and wings."] * 10
v, p = determine_variant(captions, "none (rule-based)")
assert v == "dragon"
def test_determine_variant_personality_nature():
captions = ["A dog in a forest with trees and grass."] * 10
v, p = determine_variant(captions, "none (rule-based)")
assert v == "dog"
assert "nature" in p