Exemple #1
0
        public void IsBiggerTest(KeyedVectorFull <string> vec1, KeyedVectorPartial <string> vec2)
        {
            bool smaller  = vec1.IsBigger(vec2);
            bool expected = !vec2.Where(x => x.Value > vec1[x.Key]).Any();

            Assert.Equal(expected, smaller);
        }
Exemple #2
0
        public TypeRepository LoadTypes()
        {
            //resource
            string resourceDataName = typeof(TypeRepository).GetProperty(nameof(TypeRepository.ResourceTypes)) !.GetCustomAttribute <TypeAttribute>() !.Name;
            var    resources        = LoadResources(resourceDataName);

            KeyedVectorFull <ResourceType> .InitializeKeys(resources.Values);

            //terrain
            string terrainDataName = typeof(TypeRepository).GetProperty(nameof(TypeRepository.TerrainTypes)) !.GetCustomAttribute <TypeAttribute>() !.Name;
            var    terrains        = LoadTerrains(terrainDataName, resources);

            //feautre
            string feautreDataName = typeof(TypeRepository).GetProperty(nameof(TypeRepository.MapFeautreTypes)) !.GetCustomAttribute <TypeAttribute>() !.Name;
            var    feautres        = LoadFeautres(feautreDataName, resources);

            //collector
            string collectorDataName = typeof(TypeRepository).GetProperty(nameof(TypeRepository.CollectorTypes)) !.GetCustomAttribute <TypeAttribute>() !.Name;
            var    collectors        = LoadCollectors(collectorDataName, resources, terrains, feautres);

            //building
            string buildingDataName = typeof(TypeRepository).GetProperty(nameof(TypeRepository.BuildingTypes)) !.GetCustomAttribute <TypeAttribute>() !.Name;
            var    buildings        = LoadBuildings(buildingDataName, resources);

            //pop demand
            string demandDataName = typeof(TypeRepository).GetProperty(nameof(TypeRepository.PopulationDemands)) !.GetCustomAttribute <TypeAttribute>() !.Name;
            var    demands        = LoadPopDemands(demandDataName, resources);

            return(new TypeRepository(resources, terrains, feautres, collectors, buildings, demands));
        }
Exemple #3
0
        public void CloneTest(List <string> keys, KeyedVectorFull <string> vec)
        {
            var cloned = vec.Clone();

            foreach (var key in keys)
            {
                Assert.Equal(vec[key], cloned[key]);
            }
        }
Exemple #4
0
        public void NegTest(List <string> keys, KeyedVectorFull <string> vec)
        {
            var originalVec = vec.Clone();

            vec.Neg();
            foreach (var key in keys)
            {
                Assert.Equal(-originalVec[key], vec[key]);
            }
        }
Exemple #5
0
        public static IEnumerable <object[]> CompareVector()
        {
            List <string> keys = new() { "a", "b", "c" };

            KeyedVectorFull <string> .InitializeKeys(keys);

            return(new List <object[]>
            {
                new object[] { new KeyedVectorFull <string>()
                               {
                                   ["a"] = 1, ["b"] = 2, ["c"] = 3
                               }, new KeyedVectorFull <string>()
                               {
                                   ["a"] = 4, ["b"] = 5, ["c"] = 6
                               } },
                new object[] { new KeyedVectorFull <string>()
                               {
                                   ["a"] = 4, ["b"] = 5, ["c"] = 6
                               }, new KeyedVectorFull <string>()
                               {
                                   ["a"] = 1, ["b"] = 2, ["c"] = 3
                               } },
                new object[] { new KeyedVectorFull <string>()
                               {
                                   ["a"] = 5, ["b"] = 4, ["c"] = 3
                               }, new KeyedVectorFull <string>()
                               {
                                   ["a"] = 10, ["b"] = 2, ["c"] = 3
                               } },
                new object[] { new KeyedVectorFull <string>()
                               {
                                   ["a"] = 5, ["b"] = 4, ["c"] = 3
                               }, new KeyedVectorFull <string>()
                               {
                                   ["a"] = 1, ["b"] = 2, ["c"] = 3
                               } },
                new object[] { new KeyedVectorFull <string>()
                               {
                                   ["a"] = 1, ["b"] = 10, ["c"] = 3
                               }, new KeyedVectorFull <string>()
                               {
                                   ["a"] = 5, ["c"] = 5
                               } },
                new object[] { new KeyedVectorFull <string>()
                               {
                                   ["a"] = 5, ["b"] = 0, ["c"] = 3
                               }, new KeyedVectorFull <string>()
                               {
                                   ["a"] = 1, ["c"] = 3
                               } },
            });
        }
    }
Exemple #6
0
        public void FilterSmallerTest(List <string> keys, KeyedVectorFull <string> vec, List <string> filterKeys)
        {
            var originalVec = vec.Clone();
            var newVec      = vec.FilterSmaller(filterKeys);

            Assert.Equal(filterKeys.Count, newVec.Count());
            foreach (var key in keys)
            {
                Assert.Equal(originalVec[key], vec[key]);
                if (filterKeys.Contains(key))
                {
                    Assert.Equal(vec[key], newVec[key]);
                }
            }
        }
Exemple #7
0
        public Settlement(string name, Point position, int population, KeyedVectorFull <ResourceType> resources)
        {
            Name       = name;
            Position   = position;
            Resources  = resources;
            Population = population;

            Collectors = new();
            Buildings  = new();
            Prices     = new();
            foreach (var resource in Resources)
            {
                Prices[resource.Key] = resource.Key.BasePrice;
            }
        }
Exemple #8
0
        public void SubTest(List <string> keys, KeyedVectorFull <string> vec1, KeyedVectorPartial <string> vec2)
        {
            var originalVec = vec1.Clone();
            var commonKeys  = vec2.Select(x => x.Key).ToHashSet();

            vec1.Sub(vec2);
            foreach (var key in keys)
            {
                if (commonKeys.Contains(key))
                {
                    Assert.Equal(originalVec[key] - vec2[key], vec1[key]);
                }
                else
                {
                    Assert.Equal(originalVec[key], vec1[key]);
                }
            }
        }
Exemple #9
0
        public static IEnumerable <object[]> DoubleVector()
        {
            List <string> keys      = new() { "a", "b", "c" };
            List <string> keysSmall = new() { "a", "c" };

            KeyedVectorFull <string> .InitializeKeys(keys);

            return(new List <object[]>
            {
                new object[] { keys, new KeyedVectorFull <string>()
                               {
                                   ["a"] = 1, ["b"] = 2, ["c"] = 3
                               }, new KeyedVectorFull <string>()
                               {
                                   ["a"] = 4, ["b"] = 5, ["c"] = 6
                               } },
                new object[] { keys, new KeyedVectorFull <string>()
                               {
                                   ["a"] = 4, ["b"] = 5, ["c"] = 6
                               }, new KeyedVectorFull <string>()
                               {
                                   ["a"] = 1, ["b"] = 2, ["c"] = 3
                               } },
                new object[] { keys, new KeyedVectorFull <string>()
                               {
                                   ["a"] = 5, ["b"] = 4, ["c"] = 3
                               }, (new KeyedVectorFull <string>()
                    {
                        ["a"] = 10, ["b"] = 2, ["c"] = 3
                    }).FilterSmaller(keysSmall) },
                new object[] { keys, new KeyedVectorFull <string>()
                               {
                                   ["a"] = 5, ["b"] = 4, ["c"] = 3
                               }, (new KeyedVectorFull <string>()
                    {
                        ["a"] = 1, ["b"] = 2, ["c"] = 3
                    }).FilterSmaller(keysSmall) }
            });
        }

        public static IEnumerable <object[]> FilterVector()
Exemple #10
0
        public void KeyedVectorTest()
        {
            List <string> keys = new() { "a", "b", "c" };

            KeyedVectorFull <string> .InitializeKeys(keys);

            KeyedVectorFull <string> vec = new();

            Assert.Equal(0, vec["a"]);
            Assert.Equal(0, vec["b"]);
            Assert.Equal(0, vec["c"]);

            vec["b"] = 1;
            vec["a"] = 2;
            vec["c"] = 3;
            vec["b"] = 4;

            Assert.Equal(2, vec["a"]);
            Assert.Equal(4, vec["b"]);
            Assert.Equal(3, vec["c"]);
            Assert.Throws <KeyNotFoundException>(() => vec["d"] = 0);
        }
Exemple #11
0
        public static IEnumerable <object[]> FilterVector()
        {
            List <string> keys = new() { "a", "b", "c" };

            KeyedVectorFull <string> .InitializeKeys(keys);

            return(new List <object[]>
            {
                new object[] { keys, new KeyedVectorFull <string>()
                               {
                                   ["a"] = 1, ["b"] = 2, ["c"] = 3
                               }, new List <string>()
                               {
                                   "a"
                               } },
                new object[] { keys, new KeyedVectorFull <string>()
                               {
                                   ["a"] = 4, ["b"] = 5, ["c"] = 6
                               }, new List <string>()
                               {
                                   "a", "b"
                               } },
                new object[] { keys, new KeyedVectorFull <string>()
                               {
                                   ["a"] = 5, ["b"] = 4, ["c"] = 3
                               }, new List <string>()
                               {
                                   "b"
                               } },
                new object[] { keys, new KeyedVectorFull <string>()
                               {
                                   ["a"] = 5, ["b"] = 4, ["c"] = 3
                               }, new List <string>()
                               {
                                   "c"
                               } }
            });
        }