This commit is contained in:
2025-12-07 13:44:51 +09:00
parent 30c84a48ac
commit d3fca333cb
29 changed files with 1437 additions and 137 deletions
+2
View File
@@ -3,11 +3,13 @@ import 'package:game_test/providers/battle_provider.dart';
import 'package:game_test/game/data/enemy_table.dart';
import 'package:game_test/game/data/item_table.dart';
import 'package:game_test/game/enums.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
setUpAll(() async {
SharedPreferences.setMockInitialValues({});
await ItemTable.load();
await EnemyTable.load();
});
+49
View File
@@ -0,0 +1,49 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:game_test/game/data/item_table.dart';
import 'package:game_test/game/enums.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
test('ItemTable.getRandomItem returns items correctly', () async {
await ItemTable.load();
// Test 1: Get Tier 1 item (Common/Rare/etc logic applies, but we just check if it returns *something* valid)
final item = ItemTable.getRandomItem(tier: ItemTier.tier1);
expect(item, isNotNull);
expect(item!.tier, equals(ItemTier.tier1));
print("Random Tier 1 Item: ${item.name} (${item.rarity.name})");
// Test 2: Get Tier 3 item
final item3 = ItemTable.getRandomItem(tier: ItemTier.tier3);
expect(item3, isNotNull);
expect(item3!.tier, equals(ItemTier.tier3));
print("Random Tier 3 Item: ${item3.name} (${item3.rarity.name})");
// Test 3: Get specific slot (Shield) from Tier 1
// We know 'pot_lid' and 'wooden_shield' are Tier 1 shields
final shield = ItemTable.getRandomItem(tier: ItemTier.tier1, slot: EquipmentSlot.shield);
expect(shield, isNotNull);
expect(shield!.slot, equals(EquipmentSlot.shield));
expect(shield.tier, equals(ItemTier.tier1));
// Test 4: Verify Rarity weights (Statistical test)
// We'll run 1000 times and expect roughly correct distribution.
// Tier 1 has Common and Rare items mostly.
int magicCount = 0;
int rareCount = 0;
for (int i = 0; i < 1000; i++) {
// Tier 1 items:
// Magic: Rusty Dagger, Torn Tunic, Pot Lid, Wooden Shield, Old Ring, Copper Ring
// Rare: Jagged Dagger
// So both exist.
final randItem = ItemTable.getRandomItem(tier: ItemTier.tier1);
if (randItem!.rarity == ItemRarity.magic) magicCount++;
if (randItem.rarity == ItemRarity.rare) rareCount++;
}
print("Tier 1 Stats (1000 runs): Magic=$magicCount, Rare=$rareCount");
expect(magicCount, greaterThan(rareCount)); // Should be significantly more magic items
});
}
+29
View File
@@ -0,0 +1,29 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:game_test/game/data/item_table.dart';
import 'package:game_test/game/enums.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
test('ItemTable loads rarity and tier correctly', () async {
await ItemTable.load();
// Check Rusty Dagger (Common, Tier 1)
final rustyDagger = ItemTable.get('rusty_dagger');
expect(rustyDagger, isNotNull);
expect(rustyDagger!.rarity, equals(ItemRarity.magic));
expect(rustyDagger.tier, equals(ItemTier.tier1));
// Check Sunderer Axe (Epic, Tier 3)
final sundererAxe = ItemTable.get('sunderer_axe');
expect(sundererAxe, isNotNull);
expect(sundererAxe!.rarity, equals(ItemRarity.legendary));
expect(sundererAxe.tier, equals(ItemTier.tier3));
// Check Lucky Charm (Legendary, Tier 3)
final luckyCharm = ItemTable.get('lucky_charm');
expect(luckyCharm, isNotNull);
expect(luckyCharm!.rarity, equals(ItemRarity.unique));
expect(luckyCharm.tier, equals(ItemTier.tier3));
});
}