#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Test the random and statistics libraries"""

from pathlib import Path
import sys

ROOT_DIR = Path(__file__).resolve().parents[1]
LIB_DIR = ROOT_DIR / "libs"
if str(LIB_DIR) not in sys.path:
    sys.path.insert(0, str(LIB_DIR))

import สุ่ม
import สถิติ

พิมพ์ = print

print("=== Testing สุ่ม (Random) Library ===\n")

# Basic random
print("=== Basic Random ===")
พิมพ์(f"สุ่มทศนิยม (0-1): {สุ่ม.สุ่ม():.4f}")
พิมพ์(f"สุ่มจำนวนเต็ม (1-100): {สุ่ม.จำนวนเต็ม(1, 100)}")
พิมพ์(f"สุ่มทศนิยม (10-20): {สุ่ม.ทศนิยม(10, 20):.2f}")
พิมพ์(f"สุ่มแบบเกาส์ (μ=100, σ=15): {สุ่ม.เกาส์(100, 15):.2f}\n")

# Selection
print("=== Selection ===")
รายการ = ['แมว', 'หมา', 'นก', 'ปลา', 'กระต่าย']
พิมพ์(f"เลือกสัตว์สุ่ม: {สุ่ม.เลือกจากรายการ(รายการ)}")
พิมพ์(f"เลือก 2 ตัวไม่ซ้ำ: {สุ่ม.เลือกหลายตัว(รายการ, 2)}")
พิมพ์(f"สลับลำดับ [1,2,3,4,5]: {สุ่ม.สลับลำดับ([1, 2, 3, 4, 5])}\n")

# Games
print("=== Games ===")
พิมพ์(f"โยนเหรียญ: {'หัว' if สุ่ม.เหรียญ() else 'ก้อย'}")
พิมพ์(f"โยนลูกเต๋า 1 ลูก: {สุ่ม.ลูกเต๋า()}")
พิมพ์(f"โยนลูกเต๋า 3 ลูก: {สุ่ม.โยนลูกเต๋าหลายตัว(3)}\n")

# Weighted
print("=== Weighted Selection ===")
ฝัน = ['มะมี่', 'ด้ำ', 'เขียว']
น้ำหนัก = [0.7, 0.2, 0.1]
พิมพ์(f"เลือกสิ่งที่ไม่รู้ (70% ม่วง, 20% ด้ำ, 10% เขียว):")
สีที่เลือก = [สุ่ม.เลือกโดยน้ำหนัก(ฝัน, น้ำหนัก)[0] for _ in range(5)]
พิมพ์(f"  ผลลัพธ์ 5 ครั้ง: {สีที่เลือก}\n")

print("=" * 50)
print("\n=== Testing สถิติ (Statistics) Library ===\n")

# Create sample data
ข้อมูล = [23, 25, 24, 28, 25, 27, 26, 25, 24, 23, 26, 27]

print(f"ข้อมูล: {ข้อมูล}\n")

# Central tendency
print("=== Central Tendency ===")
พิมพ์(f"ค่าเฉลี่ย: {สถิติ.เฉลี่ย(ข้อมูล):.2f}")
พิมพ์(f"มัธยฐาน: {สถิติ.มัธยฐาน(ข้อมูล):.2f}")
พิมพ์(f"โหมด (ค่าบ่อยสุด): {สถิติ.โหมด(ข้อมูล)}")
พิมพ์(f"โหมดทั้งหมด: {สถิติ.โหมดหลายตัว(ข้อมูล)}\n")

# Dispersion
print("=== Dispersion (Spread) ===")
พิมพ์(f"ส่วนเบี่ยงเบนมาตรฐาน: {สถิติ.ส่วนเบี่ยงเบน(ข้อมูล):.4f}")
พิมพ์(f"ความแปรปรวน: {สถิติ.ความแปรปรวน(ข้อมูล):.4f}")
พิมพ์(f"พิสัย (max - min): {สถิติ.พิสัย(ข้อมูล)}\n")

# Quantiles
print("=== Quantiles ===")
ควอ = สถิติ.ควอนไทล์(ข้อมูล, 4)
พิมพ์(f"ควอร์ไทล์: {[f'{q:.2f}' for q in ควอ]}\n")

# Summary
print("=== Summary Statistics ===")
สรุปข้อมูล = สถิติ.สรุป(ข้อมูล)
for คีย์, ค่า in สรุปข้อมูล.items():
    if isinstance(ค่า, float):
        พิมพ์(f"{คีย์}: {ค่า:.4f}")
    else:
        พิมพ์(f"{คีย์}: {ค่า}")

print("\n✓ All random and statistics functions working correctly!")
