LambdaHack-0.10.3.0: test/ItemKindUnitTests.hs
module ItemKindUnitTests (itemKindUnitTests) where
import Prelude ()
import Game.LambdaHack.Core.Prelude
import Test.Tasty
import Test.Tasty.HUnit
import Game.LambdaHack.Content.ItemKind
import qualified Game.LambdaHack.Content.RuleKind as RK
import Game.LambdaHack.Core.Dice
import qualified Game.LambdaHack.Definition.Ability as Ability
import Game.LambdaHack.Definition.Color
import Game.LambdaHack.Definition.Flavour
import qualified Content.RuleKind
itemKindUnitTests :: TestTree
itemKindUnitTests = testGroup "itemKindUnitTests" $
let standardSymbols = RK.ritemSymbols Content.RuleKind.standardRules
customSymbols = emptyItemSymbolsUsedInEngine {rsymbolNecklace = '*'}
testItemKind = ItemKind
{ isymbol = 'x'
, iname = "12345678901234567890123"
, ifreq = [ (UNREPORTED_INVENTORY, 1) ]
, iflavour = zipPlain [Green]
, icount = 1 + 1 `d` 2
, irarity = [(1, 50), (10, 1)]
, iverbHit = "hit"
, iweight = 300
, idamage = 1 `d` 1
, iaspects = [ AddSkill Ability.SkHurtMelee $ -16 * 5
, SetFlag Ability.Fragile
, toVelocity 70 ]
, ieffects = []
, idesc = "A really cool test item."
, ikit = []
}
in
[ testCase "overlonginame_validateSingle_errs" $
validateSingle standardSymbols
testItemKind { iname = "123456789012345678901234" }
@?= ["iname longer than 23"]
, testCase "shortEnoughiname_validateSingle_noErr" $
validateSingle standardSymbols
testItemKind
@?= []
, testCase "equipableNoSlotxSymbol_validateSingle_errs" $
validateSingle standardSymbols
testItemKind { iaspects = [ SetFlag Ability.Equipable ] }
@?= ["EqpSlot not specified but Equipable or Meleeable and not a likely organ or necklace or template"]
, testCase "equipableNoSlot,Symbol_validateSingle_noErr" $
validateSingle standardSymbols
testItemKind { isymbol = ','
, iaspects = [ SetFlag Ability.Equipable ] }
@?= []
, testCase "equipableNoSlot\"Symbol_validateSingle_noErr" $
validateSingle standardSymbols
testItemKind { isymbol = '"'
, iaspects = [ SetFlag Ability.Equipable ] }
@?= []
, testCase "equipableNoSlot/Symbol_validateSingle_noErr" $
validateSingle standardSymbols
testItemKind { isymbol = '/'
, iaspects = [ SetFlag Ability.Equipable ] }
@?= []
, testCase "equipableNoSlot*CustomRules_validateSingle_noErr" $
validateSingle customSymbols
testItemKind { isymbol = '*'
, iaspects = [ SetFlag Ability.Equipable ] }
@?= []
, testCase "equipableNoSlot\"CustomRules_validateSingle_errs" $
validateSingle customSymbols
testItemKind { isymbol = '"'
, iaspects = [ SetFlag Ability.Equipable ] }
@?= ["EqpSlot not specified but Equipable or Meleeable and not a likely organ or necklace or template"]
]