public void ParseConfigWithMultipleEffectsAndMixedParameterStyle_Test() { string json = @"{ 123: [ { IncreaseAttack: {amount: 10} }, 'IncreaseMaxHealth', { IncreaseFishingBarByCaughtFish: {} }, { IncreaseDefense: {} } ]}"; CustomEffectConfigurationParser parser = new CustomEffectConfigurationParser(); using (var mStream = new MemoryStream(Encoding.UTF8.GetBytes(json))) { var definitions = parser.Parse(mStream); Assert.AreEqual(1, definitions.Count); Assert.AreEqual("123", definitions[0].ItemIdentifier); Assert.IsInstanceOfType(definitions[0].Effect, typeof(EffectSet)); var effects = new List <IEffect>(((EffectSet)definitions[0].Effect).Effects); Assert.AreEqual(4, effects.Count); Assert.IsInstanceOfType(effects[0], typeof(IncreaseAttack)); Assert.AreEqual(10, ((IncreaseAttack)effects[0]).Parameters.Amount); Assert.IsInstanceOfType(effects[1], typeof(IncreaseMaxHealth)); Assert.AreEqual(1, ((IncreaseMaxHealth)effects[1]).Parameters.Amount); Assert.IsInstanceOfType(effects[2], typeof(IncreaseFishingBarByCaughtFish)); Assert.IsInstanceOfType(effects[3], typeof(IncreaseDefense)); Assert.AreEqual(1, ((IncreaseDefense)effects[3]).Parameters.Amount); } }
public void ParseConfigWithMultipleNestedEffects_Test() { string json = @"{ 123: { Locational: { location: 'DesertPlaces', effect: [ 'IncreaseAttack', { IncreaseDefense: {amount: 5} } ] }}}"; CustomEffectConfigurationParser parser = new CustomEffectConfigurationParser(); using (var mStream = new MemoryStream(Encoding.UTF8.GetBytes(json))) { var definitions = parser.Parse(mStream); Assert.AreEqual(1, definitions.Count); Assert.AreEqual("123", definitions[0].ItemIdentifier); Assert.IsInstanceOfType(definitions[0].Effect, typeof(LocationalEffect)); Assert.AreEqual(LocationGroup.DesertPlaces, ((LocationalEffect)definitions[0].Effect).Parameters.Location); Assert.IsInstanceOfType(((LocationalEffect)definitions[0].Effect).Parameters.Effect, typeof(EffectSet)); var effects = ((EffectSet)((LocationalEffect)definitions[0].Effect).Parameters.Effect).Effects; Assert.AreEqual(2, effects.Length); Assert.IsInstanceOfType(effects[0], typeof(IncreaseAttack)); Assert.IsInstanceOfType(effects[1], typeof(IncreaseDefense)); Assert.AreEqual(5, ((IncreaseDefense)effects[1]).Parameters.Amount); } }
public void ParseIdentifiers_Test() { string json = @"{ 123: 'Foo', SailorShirt: 'Bar' }"; CustomEffectConfigurationParser parser = new CustomEffectConfigurationParser(); using (var mStream = new MemoryStream(Encoding.UTF8.GetBytes(json))) { var definitions = parser.Parse(mStream); Assert.AreEqual(2, definitions.Count); Assert.AreEqual("123", definitions[0].ItemIdentifier); Assert.AreEqual("SailorShirt", definitions[1].ItemIdentifier); } }
public void ParseConfigWithSingleEffectAndCustomParameters_Test() { string json = @"{ 123: { IncreaseAttack: { amount: 5 }}}"; CustomEffectConfigurationParser parser = new CustomEffectConfigurationParser(); using (var mStream = new MemoryStream(Encoding.UTF8.GetBytes(json))) { var definitions = parser.Parse(mStream); Assert.AreEqual(1, definitions.Count); Assert.AreEqual("123", definitions[0].ItemIdentifier); Assert.IsInstanceOfType(definitions[0].Effect, typeof(IncreaseAttack)); Assert.AreEqual(5, ((IncreaseAttack)definitions[0].Effect).Parameters.Amount); } }
public void ParseConfigWithSingleEffectAndDefaultParameters_Test() { string json = @"{ 123: 'IncreaseAttack', SailorShirt: 'IncreaseMaxHealth' }"; CustomEffectConfigurationParser parser = new CustomEffectConfigurationParser(); using (var mStream = new MemoryStream(Encoding.UTF8.GetBytes(json))) { var definitions = parser.Parse(mStream); Assert.AreEqual(2, definitions.Count); Assert.AreEqual("123", definitions[0].ItemIdentifier); Assert.IsInstanceOfType(definitions[0].Effect, typeof(IncreaseAttack)); Assert.AreEqual("SailorShirt", definitions[1].ItemIdentifier); Assert.IsInstanceOfType(definitions[1].Effect, typeof(IncreaseMaxHealth)); } }
public void ParseConfigWithMultipleEffectsAndDefaultParameters_Test() { string json = @"{ 123: [ 'IncreaseAttack', 'IncreaseMaxHealth' ]}"; CustomEffectConfigurationParser parser = new CustomEffectConfigurationParser(); using (var mStream = new MemoryStream(Encoding.UTF8.GetBytes(json))) { var definitions = parser.Parse(mStream); Assert.AreEqual(1, definitions.Count); Assert.AreEqual("123", definitions[0].ItemIdentifier); Assert.IsInstanceOfType(definitions[0].Effect, typeof(EffectSet)); var effects = new List <IEffect>(((EffectSet)definitions[0].Effect).Effects); Assert.IsInstanceOfType(effects[0], typeof(IncreaseAttack)); Assert.IsInstanceOfType(effects[1], typeof(IncreaseMaxHealth)); } }
public void ParseConfigWithNestedEffect_Test() { string json = @"{ 123: { Seasonal: { season: 'Summer', effect: 'IncreaseAttack' }}}"; CustomEffectConfigurationParser parser = new CustomEffectConfigurationParser(); using (var mStream = new MemoryStream(Encoding.UTF8.GetBytes(json))) { var definitions = parser.Parse(mStream); Assert.AreEqual(1, definitions.Count); Assert.AreEqual("123", definitions[0].ItemIdentifier); Assert.IsInstanceOfType(definitions[0].Effect, typeof(SeasonalEffect)); Assert.AreEqual(Season.Summer, ((SeasonalEffect)definitions[0].Effect).Parameters.Season); Assert.IsInstanceOfType(((SeasonalEffect)definitions[0].Effect).Parameters.Effect, typeof(IncreaseAttack)); } }