Esempio n. 1
0
        internal MainLearningMethod(IXmlFileController fileController, ITreeBuilder builder)
        {
            ActionLearningStrategy = new MainActionLearningStrategy();

            var controller = new SubstitutionController(new SubstitutionDocumentConverter(), fileController, new SubstitutionMapper());

            DecisionTreeLearningStrategy = new MainDecisionTreeLearningStrategy(controller, builder);
            DesireLearningStrategy       = new MainDesireLearningStrategy();
            EmotionLearningStrategy      = new MainEmotionLearningStrategy();

            MemoryLearningStrategy        = new MainMemoryLearningStrategy();
            OpinionLearningStrategy       = new MainOpinionLearningStrategy();
            PersonalValueLearningStrategy = new MainPersonalValueLearningStrategy(new PersonalValueAssociations());

            QualityLearningStrategy = new MainQualityLearningStrategy();
        }
        private static bool RunDecreaseQualityLearningTest(global::RNPC.Core.Character character, MainQualityLearningStrategy learningStrategy, int quality, string qualityName)
        {
            //Act
            learningStrategy.AnalyzeAndLearn(character);

            Type         type = character.MyTraits.GetType();
            PropertyInfo info = type.GetProperty(qualityName);

            if (info == null)
            {
                return(false);
            }

            int newValue = (int)info.GetValue(character.MyTraits);

            //Assert
            return(quality > newValue);
        }
        public void AnalyzeAndLearn_NodeResultAllPositive_WillpowerWentUp()
        {
            //ARRANGE
            MainQualityLearningStrategy learningStrategy = new MainQualityLearningStrategy();

            var Rick = new Person("Rick", Gender.Male, Sex.Male, Orientation.Pansexual, Guid.NewGuid());

            int[] compiledResults = { 0, 0 };

            //ACT
            for (int i = 0; i < 1000; i++)
            {
                var character = new global::RNPC.Core.Character(Rick, Archetype.TheCreator)
                {
                    FileController      = new DecisionTreeFileController(),
                    DecisionTreeBuilder = new DecisionTreeBuilder()
                };

                List <NodeTestInfo> nodeTests = new List <NodeTestInfo>
                {
                    new NodeTestInfo
                    {
                        CharacteristicName   = "Willpower",
                        TestedCharacteristic = CharacteristicType.Quality,
                        Result         = true,
                        AttributeValue = character.MyTraits.Willpower,
                        Modifier       = 0
                    },
                    new NodeTestInfo
                    {
                        CharacteristicName   = "Willpower",
                        TestedCharacteristic = CharacteristicType.Quality,
                        Result         = true,
                        AttributeValue = character.MyTraits.Willpower,
                        Modifier       = 0
                    },
                    new NodeTestInfo
                    {
                        CharacteristicName   = "Willpower",
                        TestedCharacteristic = CharacteristicType.Quality,
                        Result         = true,
                        AttributeValue = character.MyTraits.Willpower,
                        Modifier       = 0
                    },
                    new NodeTestInfo
                    {
                        CharacteristicName   = "Willpower",
                        TestedCharacteristic = CharacteristicType.Quality,
                        Result         = true,
                        AttributeValue = character.MyTraits.Willpower,
                        Modifier       = 0
                    },
                    new NodeTestInfo
                    {
                        CharacteristicName   = "Willpower",
                        TestedCharacteristic = CharacteristicType.Quality,
                        Result         = true,
                        AttributeValue = character.MyTraits.Willpower,
                        Modifier       = 0
                    }
                };

                character.MyMemory.AddNodeTestResults(nodeTests);

                var willpower = character.MyTraits.Willpower;

                bool result = RunIncreaseQualityLearningTest(character, learningStrategy, willpower, "Willpower");

                if (result)
                {
                    compiledResults[0]++;
                }
                else
                {
                    compiledResults[1]++;
                }
            }

            //ASSERT
            //Stat is 20%. with random we allow +-2%
            Assert.IsTrue(compiledResults[0] < 220);
            Assert.IsTrue(compiledResults[0] > 180);
        }