# ============================================================
# 综合测试脚本：CRUD + 边界 + 数据范围 + 崩溃检测
# ============================================================

# 1. 基础 Patient CRUD
echo "=== 1. PATIENT BASIC CRUD ==="
patient add p001 zhangsan 30 male 1234567890
patient add p002 lisi 40 female 0987654321
patient list
echo ""

# 2. Patient Update - 基本更新（不改状态）
echo "=== 2. PATIENT UPDATE BASIC ==="
patient update p001 zhangsan_updated 31 male 1234567890
patient list
echo ""

# 3. Patient Update - 修改到 Inpatient（这是刚修复的功能）
echo "=== 3. PATIENT UPDATE STATUS -> INPATIENT ==="
patient update p001 zhangsan_v2 32 male 1234567890 Inpatient
patient list
echo ""

# 4. Patient Update - 修改状态到 Discharged
echo "=== 4. PATIENT UPDATE STATUS -> DISCHARGED ==="
patient update p002 lisi_discharge 41 female 0987654321 Discharged
patient list
echo ""

# 5. Patient Update - 无效状态（应错）
echo "=== 5. PATIENT UPDATE INVALID STATUS (EXPECT ERROR) ==="
patient update p001 test 30 male phone InvalidStatus
echo ""

# 6. Patient 边界测试：负数年龄
echo "=== 6. PATIENT ADD NEGATIVE AGE (EXPECT ERROR) ==="
patient add p999 test -5 male phone
echo ""

# 7. Patient 边界测试：0 岁
echo "=== 7. PATIENT ADD AGE 0 (EXPECT OK) ==="
patient add p_age0 baby 0 male phone
patient list
echo ""

# 8. Patient 边界测试：非常大的年龄
echo "=== 8. PATIENT ADD VERY OLD AGE ==="
patient add p_age_max testold 150 male phone
patient list
echo ""

# 9. Patient 边界测试：特殊字符名字
echo "=== 9. PATIENT ADD SPECIAL CHARS IN NAME ==="
patient add p_special "zhang@san#123" 25 male "123-456-7890"
patient list
echo ""

# 10. Patient 边界测试：空联系方式
echo "=== 10. PATIENT ADD EMPTY CONTACT ==="
patient add p_nocont student 20 male ""
patient list
echo ""

# 11. Patient Remove - 正常删除（非住院）
echo "=== 11. PATIENT REMOVE OUTPATIENT ==="
patient rm p999
echo ""

# 12. Patient Remove - 尝试删除不存在的患者（应错）
echo "=== 12. PATIENT REMOVE NON-EXISTENT (EXPECT ERROR) ==="
patient rm p_not_exist
echo ""

# 13. Medicine CRUD 基础
echo "=== 13. MEDICINE BASIC CRUD ==="
medicine add m001 aspirin Aspirin dep1 100 1.5
medicine add m002 paracetamol Paracetamol dep1 50 2.0
medicine add m003 ibuprofen Ibuprofen dep2 0 3.5
medicine list
echo ""

# 14. Medicine Update（已支持）- 如果实现了
echo "=== 14. MEDICINE UPDATE TEST ==="
# 暂时跳过，看是否有 update 命令
echo ""

# 15. Medicine 库存操作：增加
echo "=== 15. MEDICINE STOCK INCREASE ==="
medicine stock inc m001 50
medicine list
echo ""

# 16. Medicine 库存操作：减少
echo "=== 16. MEDICINE STOCK DECREASE ==="
medicine stock dec m001 20
medicine list
echo ""

# 17. Medicine 库存边界：减少超过库存（应失败）
echo "=== 17. MEDICINE STOCK DEC OVER LIMIT (EXPECT ERROR) ==="
medicine stock dec m001 1000
echo ""

# 18. Medicine 库存边界：减为 0
echo "=== 18. MEDICINE STOCK DEC TO ZERO ==="
medicine stock dec m001 130
medicine list
echo ""

# 19. Medicine 库存：0 库存时再减（应失败）
echo "=== 19. MEDICINE STOCK DEC FROM ZERO (EXPECT ERROR) ==="
medicine stock dec m001 1
echo ""

# 20. Medicine 库存：负数增加（应失败或无效）
echo "=== 20. MEDICINE STOCK INC NEGATIVE (EXPECT ERROR) ==="
medicine stock inc m002 -10
echo ""

# 21. Medicine 价格边界：0 价格
echo "=== 21. MEDICINE ADD ZERO PRICE ==="
medicine add m_free free_sample FreeVersion dep3 10 0
medicine list
echo ""

# 22. Medicine 价格边界：非常高的价格
echo "=== 22. MEDICINE ADD VERY HIGH PRICE ==="
medicine add m_expensive expensive_drug Gold dep3 5 999999.99
medicine list
echo ""

# 23. Medicine 搜索：通用名
echo "=== 23. MEDICINE SEARCH GENERIC NAME ==="
medicine find aspirin
echo ""

# 24. Medicine 搜索：商品名
echo "=== 24. MEDICINE SEARCH BRAND NAME ==="
medicine find Aspirin
echo ""

# 25. Medicine 搜索：不存在的药
echo "=== 25. MEDICINE SEARCH NON-EXISTENT ==="
medicine find xyz_not_found
echo ""

# 26. Doctor CRUD
echo "=== 26. DOCTOR BASIC CRUD ==="
doctor add d001 wangdoctor Cardiology Chief "Mon AM"
doctor add d002 liudoctor Neurology Attending "Tue PM"
doctor list
echo ""

# 27. Doctor 特殊字符
echo "=== 27. DOCTOR ADD SPECIAL CHARS ==="
doctor add d_special "dr.@wang!" Dept Chief "Any"
doctor list
echo ""

# 28. Doctor 无效职称
echo "=== 28. DOCTOR ADD INVALID TITLE (EXPECT ERROR) ==="
doctor add d_bad testdoc dep InvalidTitle "Mon"
echo ""

# 29. Ward 基础
echo "=== 29. WARD BASIC CRUD ==="
ward add w001 Dept1 Normal 10
ward bed add w001 b001
ward bed add w001 b002
ward list
echo ""

# 30. Ward 床位操作
echo "=== 30. WARD BED OPERATIONS ==="
ward list
echo ""

# 31. Ward 超大床位数
echo "=== 31. WARD ADD MAX BEDS ==="
ward add w_big Dept2 ICU 1000
ward list
echo ""

# 32. Ward 0 床位数（应失败或处理）
echo "=== 32. WARD ADD ZERO BEDS (CHECK BEHAVIOR) ==="
ward add w_zero Dept3 Normal 0
echo ""

# 33. 交互测试：患者入院
echo "=== 33. PATIENT ADMIT TO WARD ==="
patient admit w001 p001
patient list
echo ""

# 34. 查看 Ward 状态
echo "=== 34. WARD STATUS ==="
ward list
echo ""

# 35. 保存所有数据
echo "=== 35. SAVE ALL DATA ==="
doctor save
patient save
medicine save
ward save
echo ""

# 36. 清空并重新加载
echo "=== 36. LOAD ALL DATA ==="
doctor load
patient load
medicine load
ward load
echo ""

# 37. 重新查询验证数据完整性
echo "=== 37. VERIFY RELOADED DATA ==="
patient list
medicine list
echo ""

# 38. 长字符串测试
echo "=== 38. VERY LONG STRING TEST ==="
patient add p_long "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" 25 male "phone"
echo ""

# 39. 特殊 Unicode 字符（如果支持）
echo "=== 39. UNICODE TEST ==="
patient add p_unicode 张龙 30 男 "1234567890"
patient find 张
echo ""

# 40. 结束
echo "=== 40. END TEST ==="
exit
