class_name TestCardData extends RefCounted ## Factory for creating test CardData objects without CardDatabase autoload ## Use these methods in unit tests to create cards with specific properties static func create_forward( id: String = "test-forward-001", card_name: String = "Test Forward", element: Enums.Element = Enums.Element.FIRE, cost: int = 3, power: int = 5000, is_generic: bool = false, abilities: Array[CardDatabase.AbilityData] = [] ) -> CardDatabase.CardData: var card = CardDatabase.CardData.new() card.id = id card.name = card_name card.type = Enums.CardType.FORWARD card.elements.append(element) card.cost = cost card.power = power card.is_generic = is_generic card.abilities = abilities return card static func create_backup( id: String = "test-backup-001", card_name: String = "Test Backup", element: Enums.Element = Enums.Element.FIRE, cost: int = 2, is_generic: bool = false ) -> CardDatabase.CardData: var card = CardDatabase.CardData.new() card.id = id card.name = card_name card.type = Enums.CardType.BACKUP card.elements.append(element) card.cost = cost card.power = 0 card.is_generic = is_generic return card static func create_summon( id: String = "test-summon-001", card_name: String = "Test Summon", element: Enums.Element = Enums.Element.FIRE, cost: int = 2, has_ex_burst: bool = false ) -> CardDatabase.CardData: var card = CardDatabase.CardData.new() card.id = id card.name = card_name card.type = Enums.CardType.SUMMON card.elements.append(element) card.cost = cost card.has_ex_burst = has_ex_burst return card static func create_light_forward( id: String = "test-light-001", card_name: String = "Light Forward", cost: int = 5, power: int = 9000 ) -> CardDatabase.CardData: var card = CardDatabase.CardData.new() card.id = id card.name = card_name card.type = Enums.CardType.FORWARD card.elements.append(Enums.Element.LIGHT) card.cost = cost card.power = power return card static func create_dark_forward( id: String = "test-dark-001", card_name: String = "Dark Forward", cost: int = 5, power: int = 9000 ) -> CardDatabase.CardData: var card = CardDatabase.CardData.new() card.id = id card.name = card_name card.type = Enums.CardType.FORWARD card.elements.append(Enums.Element.DARK) card.cost = cost card.power = power return card static func create_multi_element_forward( id: String = "test-multi-001", card_name: String = "Multi Element Forward", elements: Array[Enums.Element] = [Enums.Element.FIRE, Enums.Element.ICE], cost: int = 4, power: int = 7000 ) -> CardDatabase.CardData: var card = CardDatabase.CardData.new() card.id = id card.name = card_name card.type = Enums.CardType.FORWARD for elem in elements: card.elements.append(elem) card.cost = cost card.power = power return card static func create_haste_forward( id: String = "test-haste-001", card_name: String = "Haste Forward", element: Enums.Element = Enums.Element.FIRE, cost: int = 3, power: int = 5000 ) -> CardDatabase.CardData: var card = CardDatabase.CardData.new() card.id = id card.name = card_name card.type = Enums.CardType.FORWARD card.elements.append(element) card.cost = cost card.power = power var haste_ability = CardDatabase.AbilityData.new() haste_ability.type = Enums.AbilityType.FIELD haste_ability.effect = "Haste" card.abilities.append(haste_ability) return card static func create_brave_forward( id: String = "test-brave-001", card_name: String = "Brave Forward", element: Enums.Element = Enums.Element.WIND, cost: int = 4, power: int = 6000 ) -> CardDatabase.CardData: var card = CardDatabase.CardData.new() card.id = id card.name = card_name card.type = Enums.CardType.FORWARD card.elements.append(element) card.cost = cost card.power = power var brave_ability = CardDatabase.AbilityData.new() brave_ability.type = Enums.AbilityType.FIELD brave_ability.effect = "Brave" card.abilities.append(brave_ability) return card static func create_first_strike_forward( id: String = "test-first-strike-001", card_name: String = "First Strike Forward", element: Enums.Element = Enums.Element.LIGHTNING, cost: int = 3, power: int = 4000 ) -> CardDatabase.CardData: var card = CardDatabase.CardData.new() card.id = id card.name = card_name card.type = Enums.CardType.FORWARD card.elements.append(element) card.cost = cost card.power = power var first_strike_ability = CardDatabase.AbilityData.new() first_strike_ability.type = Enums.AbilityType.FIELD first_strike_ability.effect = "First Strike" card.abilities.append(first_strike_ability) return card