public void DeserializeTest2() { const string json = @" { ""Key"": ""Test Attribute"", ""AttributeType"": 3, ""Required"": true, ""PossibleValues"": { ""Version"": 1, ""MinValue"": null, ""MaxValue"": 1 }, ""DefaultValue"": 2 } "; IntegerAttributeType uut = new IntegerAttributeType(); uut.Deserialize(json); Assert.AreEqual("Test Attribute", uut.Key); Assert.AreEqual(true, uut.Required); Assert.IsNull(uut.MinValue); Assert.AreEqual(1, uut.MaxValue); Assert.AreEqual(2, uut.DefaultValue); }
public void ValidateAttributeTest() { IntegerAttribute attr = new IntegerAttribute { Value = 1 }; IntegerAttributeType uut = new IntegerAttributeType { Key = "Some Asset", MaxValue = null, MinValue = null, Required = false }; // Having min and max not specified should not result in an exception. { Assert.DoesNotThrow(() => uut.ValidateAttribute(attr)); Assert.DoesNotThrow(() => uut.ValidateAttribute((IAttribute)attr)); } // Still within range, should not blow up. { uut.MinValue = attr.Value; uut.MaxValue = attr.Value; Assert.DoesNotThrow(() => uut.ValidateAttribute(attr)); Assert.DoesNotThrow(() => uut.ValidateAttribute((IAttribute)attr)); } // Below min should result in an exception. { uut.MinValue = attr.Value + 1; uut.MaxValue = null; ListedValidationException e; e = Assert.Throws <ListedValidationException>(() => uut.ValidateAttribute(attr)); Assert.AreEqual(1, e.Errors.Count()); e = Assert.Throws <ListedValidationException>(() => uut.ValidateAttribute((IAttribute)attr)); Assert.AreEqual(1, e.Errors.Count()); } // Above max should result in an exception. { uut.MinValue = null; uut.MaxValue = attr.Value - 1; ListedValidationException e; e = Assert.Throws <ListedValidationException>(() => uut.ValidateAttribute(attr)); Assert.AreEqual(1, e.Errors.Count()); e = Assert.Throws <ListedValidationException>(() => uut.ValidateAttribute((IAttribute)attr)); Assert.AreEqual(1, e.Errors.Count()); } }
/// <summary> /// Adds the color attribute type. /// </summary> /// <returns>The type ID.</returns> private int AddColorAttributeType(IDatabaseApi uut, Guid databaseId) { AssetTypeBuilder typeBuilder = new AssetTypeBuilder(colorTypeName, databaseId); AssetNameAttributeType assetNameType = new AssetNameAttributeType { Key = nameKey, Required = true }; typeBuilder.AttributeTypes.Add(assetNameType); IntegerAttributeType redValue = new IntegerAttributeType { Key = redKey, Required = true, MinValue = 0, MaxValue = 255, DefaultValue = 0 }; typeBuilder.AttributeTypes.Add(redValue); IntegerAttributeType greenValue = new IntegerAttributeType { Key = greenKey, Required = true, MinValue = 0, MaxValue = 255, DefaultValue = 0 }; typeBuilder.AttributeTypes.Add(greenValue); IntegerAttributeType blueValue = new IntegerAttributeType { Key = blueKey, Required = true, MinValue = 0, MaxValue = 255, DefaultValue = 0 }; typeBuilder.AttributeTypes.Add(blueValue); int colorAssetTypeID = uut.AddAssetType(typeBuilder); return(colorAssetTypeID); }
public void ValidateTest() { IntegerAttributeType uut = new IntegerAttributeType { Key = "Some Int", DefaultValue = null, MaxValue = null, MinValue = null, Required = false }; Assert.DoesNotThrow(() => uut.Validate()); // Having a Max, min, and default should be okay. uut.DefaultValue = 10; uut.MinValue = 0; uut.MaxValue = 100; Assert.DoesNotThrow(() => uut.Validate()); // Having a default value outside of the range should throw an exception. uut.DefaultValue = -1; ListedValidationException e = Assert.Throws <ListedValidationException>(() => uut.Validate()); Assert.AreEqual(1, e.Errors.Count()); uut.DefaultValue = null; // Not having a default value with a min/max should work okay. Assert.DoesNotThrow(() => uut.Validate()); // Having a max < min should throw. uut.MinValue = 101; e = Assert.Throws <ListedValidationException>(() => uut.Validate()); Assert.AreEqual(1, e.Errors.Count()); // Just having a default value should be okay. uut.MinValue = null; uut.MaxValue = null; uut.DefaultValue = 10; Assert.DoesNotThrow(() => uut.Validate()); // Null key is not okay uut.Key = null; e = Assert.Throws <ListedValidationException>(() => uut.Validate()); Assert.AreEqual(1, e.Errors.Count()); }
private static void AddVideoGames(IAssetManagerApi api) { if (File.Exists(@"C:\Users\xfore\Downloads\VideoGames.db")) { File.Delete(@"C:\Users\xfore\Downloads\VideoGames.db"); } Guid databaseId = api.DataBase.DatabaseNames.First(n => n.Value == "VideoGames").Key; AssetTypeBuilder builder = new AssetTypeBuilder("PC Games", databaseId); AssetNameAttributeType assetNameType = new AssetNameAttributeType { Key = "Title", Required = true }; builder.AttributeTypes.Add(assetNameType); IntegerAttributeType releaseYear = new IntegerAttributeType { Key = "Release Year", Required = true }; builder.AttributeTypes.Add(releaseYear); int pcGameId = api.DataBase.AddAssetType(builder); { Asset asset = api.DataBase.GenerateEmptyAsset(databaseId, pcGameId); asset.SetAttribute("Title", new AssetNameAttribute("Command and Conquer")); asset.SetAttribute("Release Year", new IntegerAttribute { Value = 1995 }); api.DataBase.AddAsset(asset); } }
public void SerializeDeserializeTest() { IntegerAttributeType originalObject = new IntegerAttributeType { Key = "My Object", MaxValue = 100, MinValue = 0, Required = true, DefaultValue = 50 }; string serialObjected = originalObject.Serialize(); IntegerAttributeType uut = new IntegerAttributeType(); uut.Deserialize(serialObjected); Assert.AreEqual(originalObject.Key, uut.Key); Assert.AreEqual(originalObject.MaxValue, uut.MaxValue); Assert.AreEqual(originalObject.MinValue, uut.MinValue); Assert.AreEqual(originalObject.Required, uut.Required); Assert.AreEqual(originalObject.DefaultValue, uut.DefaultValue); }
private static void AddTradingCards(IAssetManagerApi api) { if (File.Exists(@"C:\Users\xfore\Downloads\TradingCards.db")) { File.Delete(@"C:\Users\xfore\Downloads\TradingCards.db"); } Guid databaseId = api.DataBase.DatabaseNames.First(n => n.Value == "TradingCards").Key; int pokemonCardTypeId = -1; { AssetTypeBuilder builder = new AssetTypeBuilder("Pokemon Card", databaseId); AssetNameAttributeType assetNameType = new AssetNameAttributeType { Key = "Card Name", Required = true }; builder.AttributeTypes.Add(assetNameType); IntegerAttributeType hpAttribute = new IntegerAttributeType { Key = "HP", MinValue = 10, Required = false, DefaultValue = 50 }; builder.AttributeTypes.Add(hpAttribute); IntegerAttributeType retreatCostAttribute = new IntegerAttributeType { Key = "Retreat Cost", MinValue = 0, MaxValue = 4, Required = false }; builder.AttributeTypes.Add(retreatCostAttribute); StringAttributeType flavorText = new StringAttributeType { Key = "Flavor Text", Required = true }; builder.AttributeTypes.Add(flavorText); pokemonCardTypeId = api.DataBase.AddAssetType(builder); } int yugiohCardTypeId = -1; { AssetTypeBuilder builder = new AssetTypeBuilder("Yugioh! Card", databaseId); AssetNameAttributeType assetNameType = new AssetNameAttributeType { Key = "Card Name", Required = true }; builder.AttributeTypes.Add(assetNameType); IntegerAttributeType attackAttribute = new IntegerAttributeType { Key = "Attack", MinValue = 0, Required = true }; builder.AttributeTypes.Add(attackAttribute); IntegerAttributeType defenseAttribute = new IntegerAttributeType { Key = "Defense", MinValue = 0, Required = true }; builder.AttributeTypes.Add(defenseAttribute); yugiohCardTypeId = api.DataBase.AddAssetType(builder); } { Asset asset = api.DataBase.GenerateEmptyAsset(databaseId, pokemonCardTypeId); asset.SetAttribute("Card Name", new AssetNameAttribute("Politoed")); asset.SetAttribute("HP", new IntegerAttribute() { Value = 100 }); asset.SetAttribute("Retreat Cost", new IntegerAttribute() { Value = 3 }); asset.SetAttribute( "Flavor Text", new StringAttribute { Value = @"Whenever 3 or more of these get together, they sing in an lound voice that sounds like bellowing." } ); api.DataBase.AddAsset(asset); } { Asset asset = api.DataBase.GenerateEmptyAsset(databaseId, yugiohCardTypeId); asset.SetAttribute("Card Name", new AssetNameAttribute("The 13th Grave")); IntegerAttribute attackAttr = asset.CloneAttributeAsType <IntegerAttribute>("Attack"); attackAttr.Value = 1200; asset.SetAttribute("Attack", attackAttr); IntegerAttribute defenseAttr = asset.CloneAttributeAsType <IntegerAttribute>("Defense"); defenseAttr.Value = 900; asset.SetAttribute("Defense", attackAttr); api.DataBase.AddAsset(asset); } { Asset asset = api.DataBase.GenerateEmptyAsset(databaseId, yugiohCardTypeId); asset.SetAttribute("Card Name", new AssetNameAttribute("Overdrive")); asset.SetAttribute("Attack", new IntegerAttribute(1600)); asset.SetAttribute("Defense", new IntegerAttribute(1500)); api.DataBase.AddAsset(asset); } }