#!/usr/bin/env python3
"""
Тест пересчета калорий при изменении порции
"""

import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

from database import DatabaseManager

def test_calorie_recalculation():
    """Тест пересчета калорий"""
    print("🧪 Тестирование логики пересчета калорий...")
    
    # Тестируем логику пересчета калорий
    print("\n📝 Тест 1: Увеличение порции в 2 раза")
    old_amount = 100
    new_amount = 200
    old_calories = 200.0
    
    new_calories = (old_calories * new_amount) / old_amount
    print(f"   {old_amount}г ({old_calories} ккал) -> {new_amount}г ({new_calories} ккал)")
    if new_calories == 400.0:
        print("✅ Пересчет работает правильно")
    else:
        print("❌ Пересчет работает неправильно")
    
    print("\n📝 Тест 2: Уменьшение порции в 2 раза")
    old_amount = 200
    new_amount = 100
    old_calories = 400.0
    
    new_calories = (old_calories * new_amount) / old_amount
    print(f"   {old_amount}г ({old_calories} ккал) -> {new_amount}г ({new_calories} ккал)")
    if new_calories == 200.0:
        print("✅ Пересчет работает правильно")
    else:
        print("❌ Пересчет работает неправильно")
    
    print("\n📝 Тест 3: Изменение с граммов на стаканы")
    old_amount = 100
    new_amount = 2
    old_calories = 200.0
    
    new_calories = (old_calories * new_amount) / old_amount
    print(f"   {old_amount}г ({old_calories} ккал) -> {new_amount} стакана ({new_calories} ккал)")
    if new_calories == 4.0:
        print("✅ Пересчет работает правильно")
    else:
        print("❌ Пересчет работает неправильно")
    
    print("\n📝 Тест 4: Дробные значения")
    old_amount = 150
    new_amount = 250
    old_calories = 300.0
    
    new_calories = (old_calories * new_amount) / old_amount
    print(f"   {old_amount}г ({old_calories} ккал) -> {new_amount}г ({new_calories} ккал)")
    expected = 500.0
    if abs(new_calories - expected) < 0.1:
        print("✅ Пересчет работает правильно")
    else:
        print("❌ Пересчет работает неправильно")
    
    print("\n🎯 Тест логики пересчета завершен!")
    print("\n📝 Теперь в боте:")
    print("   • При изменении количества калории пересчитываются автоматически")
    print("   • Формула: новые_калории = (старые_калории × новое_количество) / старое_количество")
    print("   • Если пользователь явно указывает калории, они не пересчитываются")

if __name__ == "__main__":
    test_calorie_recalculation()
