コード例 #1
0
        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);
        }
コード例 #2
0
        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());
            }
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        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());
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: xforever1313/AssetManager
        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);
            }
        }
コード例 #6
0
        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);
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: xforever1313/AssetManager
        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);
            }
        }