Пример #1
0
        public void CalculateModelWeightTest()
        {
            //GlobalData.GlobalData all = GlobalData.GlobalData.globalData;
            ModelWeight mw     = new ModelWeight();
            Model       model1 = new Model();

            model1.CreateModel();
            //all.if_assess_modularity = true;
            //model1.TrimModel();

            mw.CalculateNodeNextLevelWeight(model1.level1_nodes[0]);
            Assert.AreEqual(0.25000m, Math.Round(model1.level1_nodes[0].nextlevel[0].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(0.25000m, Math.Round(model1.level1_nodes[0].nextlevel[1].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(0.25000m, Math.Round(model1.level1_nodes[0].nextlevel[2].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(0.25000m, Math.Round(model1.level1_nodes[0].nextlevel[3].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(0.25000m, Math.Round(model1.level2_nodes[0].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(0.25000m, Math.Round(model1.level2_nodes[1].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(0.25000m, Math.Round(model1.level2_nodes[2].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(0.25000m, Math.Round(model1.level2_nodes[3].weight, ModelWeight.WEIGHT_VALUE_ROUND));

            mw.CalculateNodeNextLevelWeight(model1.level2_nodes[0]);
            Assert.AreEqual(-0.08333m, Math.Round(model1.level2_nodes[0].nextlevel[0].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(1.25000m, Math.Round(model1.level2_nodes[0].nextlevel[1].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(-0.08333m, Math.Round(model1.level2_nodes[0].nextlevel[2].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(-0.08333m, Math.Round(model1.level2_nodes[0].nextlevel[3].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(-0.08333m, Math.Round(model1.level3_nodes[0].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(1.25000m, Math.Round(model1.level3_nodes[1].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(-0.08333m, Math.Round(model1.level3_nodes[2].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(-0.08333m, Math.Round(model1.level3_nodes[3].weight, ModelWeight.WEIGHT_VALUE_ROUND));

            mw.CalculateNodeNextLevelWeight(model1.level2_nodes[1]);
            Assert.AreEqual(-0.10000m, Math.Round(model1.level2_nodes[1].nextlevel[0].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(0.40000m, Math.Round(model1.level2_nodes[1].nextlevel[1].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(0.40000m, Math.Round(model1.level2_nodes[1].nextlevel[2].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(0.40000m, Math.Round(model1.level2_nodes[1].nextlevel[3].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(-0.10000m, Math.Round(model1.level2_nodes[1].nextlevel[4].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(-0.10000m, Math.Round(model1.level3_nodes[4].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(0.40000m, Math.Round(model1.level3_nodes[5].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(0.40000m, Math.Round(model1.level3_nodes[6].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(0.40000m, Math.Round(model1.level3_nodes[7].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(-0.10000m, Math.Round(model1.level3_nodes[8].weight, ModelWeight.WEIGHT_VALUE_ROUND));

            mw.CalculateNodeNextLevelWeight(model1.level2_nodes[2]);
            Assert.AreEqual(1.50000m, Math.Round(model1.level2_nodes[2].nextlevel[0].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(-0.50000m, Math.Round(model1.level2_nodes[2].nextlevel[1].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(1.50000m, Math.Round(model1.level3_nodes[9].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(-0.50000m, Math.Round(model1.level3_nodes[10].weight, ModelWeight.WEIGHT_VALUE_ROUND));

            mw.CalculateNodeNextLevelWeight(model1.level2_nodes[3]);
            Assert.AreEqual(0.50000m, Math.Round(model1.level2_nodes[3].nextlevel[0].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(0.50000m, Math.Round(model1.level2_nodes[3].nextlevel[1].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(0.50000m, Math.Round(model1.level3_nodes[11].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            Assert.AreEqual(0.50000m, Math.Round(model1.level3_nodes[12].weight, ModelWeight.WEIGHT_VALUE_ROUND));

            for (int i = 0; i < ModelLink.LEVEL3_TOTAL_NUM; i++)
            {
                mw.CalculateNodeNextLevelWeight(model1.level3_nodes[i]);
            }
            for (int i = 0; i < ModelLink.LEVEL4_TOTAL_NUM; i++)
            {
                mw.CalculateNodeNextLevelWeight(model1.level4_nodes[i]);
            }

            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[0].nextlevel[0].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[0].nextlevel[1].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[1].nextlevel[0].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[1].nextlevel[1].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[2].nextlevel[0].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[2].nextlevel[1].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[3].nextlevel[0].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[3].nextlevel[1].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[3].nextlevel[2].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[4].nextlevel[0].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[4].nextlevel[1].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[5].nextlevel[0].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[5].nextlevel[1].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[6].nextlevel[0].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[6].nextlevel[1].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[6].nextlevel[2].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[7].nextlevel[0].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[7].nextlevel[1].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[7].nextlevel[2].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[8].nextlevel[0].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[8].nextlevel[1].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[9].nextlevel[0].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[9].nextlevel[1].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[9].nextlevel[2].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[10].nextlevel[0].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[10].nextlevel[1].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[11].nextlevel[0].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[11].nextlevel[1].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[12].nextlevel[0].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[12].nextlevel[1].weight);
            Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level3_nodes[12].nextlevel[2].weight);
            for (int i = 0; i < ModelLink.LEVEL4_TOTAL_NUM; i++)
            {
                Assert.AreEqual(ModelNode.WEIGHT_NONE, model1.level4_nodes[i].weight);
            }

            ////trimed model
            //Model model2 = new Model();
            //model2.CreateModel();
            //all.if_assess_modularity = false;
            //model2.TrimModel();

            //mw.CalculateNodeNextLevelWeight(model2.level1_nodes[0]);
            //Assert.AreEqual(0.33333m, Math.Round(model2.level1_nodes[0].nextlevel[0].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(0.33333m, Math.Round(model2.level1_nodes[0].nextlevel[1].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(0.33333m, Math.Round(model2.level1_nodes[0].nextlevel[2].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(0.33333m, Math.Round(model2.level2_nodes[0].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(0.33333m, Math.Round(model2.level2_nodes[1].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(0.33333m, Math.Round(model2.level2_nodes[2].weight, ModelWeight.WEIGHT_VALUE_ROUND));

            //mw.CalculateNodeNextLevelWeight(model2.level2_nodes[0]);
            //Assert.AreEqual(-0.08333m, Math.Round(model2.level2_nodes[0].nextlevel[0].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(1.25000m, Math.Round(model2.level2_nodes[0].nextlevel[1].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(-0.08333m, Math.Round(model2.level2_nodes[0].nextlevel[2].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(-0.08333m, Math.Round(model2.level2_nodes[0].nextlevel[3].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(-0.08333m, Math.Round(model2.level3_nodes[0].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(1.25000m, Math.Round(model2.level3_nodes[1].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(-0.08333m, Math.Round(model2.level3_nodes[2].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(-0.08333m, Math.Round(model2.level3_nodes[3].weight, ModelWeight.WEIGHT_VALUE_ROUND));

            //mw.CalculateNodeNextLevelWeight(model2.level2_nodes[1]);
            //Assert.AreEqual(-0.10000m, Math.Round(model2.level2_nodes[1].nextlevel[0].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(0.40000m, Math.Round(model2.level2_nodes[1].nextlevel[1].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(0.40000m, Math.Round(model2.level2_nodes[1].nextlevel[2].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(0.40000m, Math.Round(model2.level2_nodes[1].nextlevel[3].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(-0.10000m, Math.Round(model2.level2_nodes[1].nextlevel[4].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(-0.10000m, Math.Round(model2.level3_nodes[4].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(0.40000m, Math.Round(model2.level3_nodes[5].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(0.40000m, Math.Round(model2.level3_nodes[6].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(0.40000m, Math.Round(model2.level3_nodes[7].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(-0.10000m, Math.Round(model2.level3_nodes[8].weight, ModelWeight.WEIGHT_VALUE_ROUND));

            //mw.CalculateNodeNextLevelWeight(model2.level2_nodes[2]);
            //Assert.AreEqual(1.50000m, Math.Round(model2.level2_nodes[2].nextlevel[0].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(-0.50000m, Math.Round(model2.level2_nodes[2].nextlevel[1].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(1.50000m, Math.Round(model2.level3_nodes[9].weight, ModelWeight.WEIGHT_VALUE_ROUND));
            //Assert.AreEqual(-0.50000m, Math.Round(model2.level3_nodes[10].weight, ModelWeight.WEIGHT_VALUE_ROUND));

            //for (int i = 0; i < ModelLink.LEVEL3_TOTAL_NUM - 2; i++)
            //    mw.CalculateNodeNextLevelWeight(model2.level3_nodes[i]);
            //for (int i = 0; i < ModelLink.LEVEL4_TOTAL_NUM - 5; i++)
            //    mw.CalculateNodeNextLevelWeight(model2.level4_nodes[i]);

            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[0].nextlevel[0].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[0].nextlevel[1].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[1].nextlevel[0].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[1].nextlevel[1].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[2].nextlevel[0].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[2].nextlevel[1].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[3].nextlevel[0].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[3].nextlevel[1].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[3].nextlevel[2].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[4].nextlevel[0].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[4].nextlevel[1].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[5].nextlevel[0].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[5].nextlevel[1].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[6].nextlevel[0].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[6].nextlevel[1].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[6].nextlevel[2].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[7].nextlevel[0].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[7].nextlevel[1].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[7].nextlevel[2].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[8].nextlevel[0].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[8].nextlevel[1].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[9].nextlevel[0].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[9].nextlevel[1].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[9].nextlevel[2].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[10].nextlevel[0].weight);
            //Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level3_nodes[10].nextlevel[1].weight);
            //for (int i = 0; i < ModelLink.LEVEL4_TOTAL_NUM - 5; i++)
            //    Assert.AreEqual(ModelNode.WEIGHT_NONE, model2.level4_nodes[i].weight);
        }
        public void SetNodeGainORDamageTest()
        {
            ModelName   mn = new ModelName();
            ModelWeight mw = new ModelWeight();

            ModelNode[] l1n = new ModelNode[ModelLink.LEVEL1_UNITNUM];
            ModelNode[] l2n = new ModelNode[ModelLink.LEVEL2_UNITNUM];
            ModelNode[] l3n = new ModelNode[ModelLink.LEVEL3_UNITNUM];
            ModelNode[] l4n = new ModelNode[ModelLink.LEVEL4_UNITNUM];
            for (int i = 0; i < ModelLink.LEVEL1_UNITNUM; i++)
            {
                l1n[i] = new ModelNode();
            }
            for (int i = 0; i < ModelLink.LEVEL2_UNITNUM; i++)
            {
                l2n[i] = new ModelNode();
            }
            for (int i = 0; i < ModelLink.LEVEL3_UNITNUM; i++)
            {
                l3n[i] = new ModelNode();
            }
            for (int i = 0; i < ModelLink.LEVEL4_UNITNUM; i++)
            {
                l4n[i] = new ModelNode();
            }

            mn.SetNodeName(l1n[0], ModelName.LEVELNAME_QUALITYATTRIBUTE_1);
            mn.SetNodeName(l2n[0], ModelName.LEVELNAME_ATTRIBUTE_1);
            mn.SetNodeName(l2n[1], ModelName.LEVELNAME_ATTRIBUTE_2);
            mn.SetNodeName(l2n[2], ModelName.LEVELNAME_ATTRIBUTE_3);
            mn.SetNodeName(l2n[3], ModelName.LEVELNAME_ATTRIBUTE_4);
            mn.SetNodeName(l3n[0], ModelName.LEVELNAME_PROPERTY_1);
            mn.SetNodeName(l3n[1], ModelName.LEVELNAME_PROPERTY_2);
            mn.SetNodeName(l3n[2], ModelName.LEVELNAME_PROPERTY_3);
            mn.SetNodeName(l3n[3], ModelName.LEVELNAME_PROPERTY_4);
            mn.SetNodeName(l3n[4], ModelName.LEVELNAME_PROPERTY_5);
            mn.SetNodeName(l3n[5], ModelName.LEVELNAME_PROPERTY_6);
            mn.SetNodeName(l3n[6], ModelName.LEVELNAME_PROPERTY_7);
            mn.SetNodeName(l4n[0], ModelName.LEVELNAME_METRIC_1);
            mn.SetNodeName(l4n[1], ModelName.LEVELNAME_METRIC_2);
            mn.SetNodeName(l4n[2], ModelName.LEVELNAME_METRIC_3);
            mn.SetNodeName(l4n[3], ModelName.LEVELNAME_METRIC_4);
            mn.SetNodeName(l4n[4], ModelName.LEVELNAME_METRIC_5);
            mn.SetNodeName(l4n[5], ModelName.LEVELNAME_METRIC_6);
            mn.SetNodeName(l4n[6], ModelName.LEVELNAME_METRIC_7);
            mn.SetNodeName(l4n[7], ModelName.LEVELNAME_METRIC_8);

            for (int i = 0; i < ModelLink.LEVEL1_UNITNUM; i++)
            {
                mw.SetNodeGainORDamage(l1n[i]);
            }
            for (int i = 0; i < ModelLink.LEVEL2_UNITNUM; i++)
            {
                mw.SetNodeGainORDamage(l2n[i]);
            }
            for (int i = 0; i < ModelLink.LEVEL3_UNITNUM; i++)
            {
                mw.SetNodeGainORDamage(l3n[i]);
            }
            for (int i = 0; i < ModelLink.LEVEL4_UNITNUM; i++)
            {
                mw.SetNodeGainORDamage(l4n[i]);
            }

            int result;

            for (int i = 0; i < ModelLink.LEVEL1_UNITNUM; i++)
            {
                mw.node_affect_dictionary.TryGetValue(l1n[i].NodeName, out result);
                Assert.AreEqual(result, l1n[i].gain_or_damage);
            }
            for (int i = 0; i < ModelLink.LEVEL2_UNITNUM; i++)
            {
                mw.node_affect_dictionary.TryGetValue(l2n[i].NodeName, out result);
                Assert.AreEqual(result, l2n[i].gain_or_damage);
            }
            for (int i = 0; i < ModelLink.LEVEL3_UNITNUM; i++)
            {
                mw.node_affect_dictionary.TryGetValue(l3n[i].NodeName, out result);
                Assert.AreEqual(result, l3n[i].gain_or_damage);
            }
            for (int i = 0; i < ModelLink.LEVEL4_UNITNUM; i++)
            {
                mw.node_affect_dictionary.TryGetValue(l4n[i].NodeName, out result);
                Assert.AreEqual(result, l4n[i].gain_or_damage);
            }
        }
        public void CreateModelNodeAffectDictionaryTest()
        {
            ModelWeight mw = new ModelWeight();

            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_QUALITYATTRIBUTE_1, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_ATTRIBUTE_1, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_ATTRIBUTE_2, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_ATTRIBUTE_3, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_ATTRIBUTE_4, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_PROPERTY_1, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_PROPERTY_2, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_PROPERTY_3, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_PROPERTY_4, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_PROPERTY_5, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_PROPERTY_6, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_PROPERTY_7, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_METRIC_1, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_METRIC_2, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_METRIC_3, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_METRIC_4, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_METRIC_5, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_METRIC_6, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_METRIC_7, out _));
            Assert.IsTrue(mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_METRIC_8, out _));

            int result;

            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_QUALITYATTRIBUTE_1, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_GAIN, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_ATTRIBUTE_1, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_GAIN, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_ATTRIBUTE_2, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_GAIN, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_ATTRIBUTE_3, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_GAIN, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_ATTRIBUTE_4, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_GAIN, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_PROPERTY_1, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_DAMAGE, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_PROPERTY_2, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_GAIN, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_PROPERTY_3, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_DAMAGE, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_PROPERTY_4, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_DAMAGE, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_PROPERTY_5, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_GAIN, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_PROPERTY_6, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_GAIN, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_PROPERTY_7, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_DAMAGE, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_METRIC_1, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_GAIN, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_METRIC_2, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_GAIN, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_METRIC_3, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_GAIN, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_METRIC_4, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_GAIN, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_METRIC_5, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_GAIN, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_METRIC_6, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_GAIN, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_METRIC_7, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_GAIN, result);
            mw.node_affect_dictionary.TryGetValue(ModelName.LEVELNAME_METRIC_8, out result);
            Assert.AreEqual(ModelWeight.NODE_AFFECT_GAIN, result);
        }
        public void CollectNodeNextLevelGainORDamageNumTest()
        {
            //GlobalData.GlobalData all = GlobalData.GlobalData.globalData;
            int         gain_num, damage_num;
            ModelWeight mw     = new ModelWeight();
            Model       model1 = new Model();

            model1.CreateModel();
            //all.if_assess_modularity = true;
            //model1.TrimModel();

            mw.CollectNodeNextLevelGainORDamageNum(model1.level1_nodes[0], out gain_num, out damage_num);
            Assert.AreEqual(4, gain_num);
            Assert.AreEqual(0, damage_num);

            mw.CollectNodeNextLevelGainORDamageNum(model1.level2_nodes[0], out gain_num, out damage_num);
            Assert.AreEqual(1, gain_num);
            Assert.AreEqual(3, damage_num);
            mw.CollectNodeNextLevelGainORDamageNum(model1.level2_nodes[1], out gain_num, out damage_num);
            Assert.AreEqual(3, gain_num);
            Assert.AreEqual(2, damage_num);
            mw.CollectNodeNextLevelGainORDamageNum(model1.level2_nodes[2], out gain_num, out damage_num);
            Assert.AreEqual(1, gain_num);
            Assert.AreEqual(1, damage_num);
            mw.CollectNodeNextLevelGainORDamageNum(model1.level2_nodes[3], out gain_num, out damage_num);
            Assert.AreEqual(2, gain_num);
            Assert.AreEqual(0, damage_num);

            mw.CollectNodeNextLevelGainORDamageNum(model1.level3_nodes[0], out gain_num, out damage_num);
            Assert.AreEqual(2, gain_num);
            Assert.AreEqual(0, damage_num);
            mw.CollectNodeNextLevelGainORDamageNum(model1.level3_nodes[1], out gain_num, out damage_num);
            Assert.AreEqual(2, gain_num);
            Assert.AreEqual(0, damage_num);
            mw.CollectNodeNextLevelGainORDamageNum(model1.level3_nodes[2], out gain_num, out damage_num);
            Assert.AreEqual(2, gain_num);
            Assert.AreEqual(0, damage_num);
            mw.CollectNodeNextLevelGainORDamageNum(model1.level3_nodes[3], out gain_num, out damage_num);
            Assert.AreEqual(3, gain_num);
            Assert.AreEqual(0, damage_num);
            mw.CollectNodeNextLevelGainORDamageNum(model1.level3_nodes[4], out gain_num, out damage_num);
            Assert.AreEqual(2, gain_num);
            Assert.AreEqual(0, damage_num);
            mw.CollectNodeNextLevelGainORDamageNum(model1.level3_nodes[5], out gain_num, out damage_num);
            Assert.AreEqual(2, gain_num);
            Assert.AreEqual(0, damage_num);
            mw.CollectNodeNextLevelGainORDamageNum(model1.level3_nodes[6], out gain_num, out damage_num);
            Assert.AreEqual(3, gain_num);
            Assert.AreEqual(0, damage_num);
            mw.CollectNodeNextLevelGainORDamageNum(model1.level3_nodes[7], out gain_num, out damage_num);
            Assert.AreEqual(3, gain_num);
            Assert.AreEqual(0, damage_num);
            mw.CollectNodeNextLevelGainORDamageNum(model1.level3_nodes[8], out gain_num, out damage_num);
            Assert.AreEqual(2, gain_num);
            Assert.AreEqual(0, damage_num);
            mw.CollectNodeNextLevelGainORDamageNum(model1.level3_nodes[9], out gain_num, out damage_num);
            Assert.AreEqual(3, gain_num);
            Assert.AreEqual(0, damage_num);
            mw.CollectNodeNextLevelGainORDamageNum(model1.level3_nodes[10], out gain_num, out damage_num);
            Assert.AreEqual(2, gain_num);
            Assert.AreEqual(0, damage_num);
            mw.CollectNodeNextLevelGainORDamageNum(model1.level3_nodes[11], out gain_num, out damage_num);
            Assert.AreEqual(2, gain_num);
            Assert.AreEqual(0, damage_num);
            mw.CollectNodeNextLevelGainORDamageNum(model1.level3_nodes[12], out gain_num, out damage_num);
            Assert.AreEqual(3, gain_num);
            Assert.AreEqual(0, damage_num);

            foreach (ModelNode node in model1.level4_nodes)
            {
                mw.CollectNodeNextLevelGainORDamageNum(node, out gain_num, out damage_num);
                Assert.AreEqual(0, gain_num);
                Assert.AreEqual(0, damage_num);
            }

            ////经过修剪的模型
            //Model model2 = new Model();
            //model2.CreateModel();
            //all.if_assess_modularity = false;
            //model2.TrimModel();

            //mw.CollectNodeNextLevelGainORDamageNum(model2.level1_nodes[0], out gain_num, out damage_num);
            //Assert.AreEqual(3, gain_num);
            //Assert.AreEqual(0, damage_num);

            //mw.CollectNodeNextLevelGainORDamageNum(model2.level2_nodes[0], out gain_num, out damage_num);
            //Assert.AreEqual(1, gain_num);
            //Assert.AreEqual(3, damage_num);
            //mw.CollectNodeNextLevelGainORDamageNum(model2.level2_nodes[1], out gain_num, out damage_num);
            //Assert.AreEqual(3, gain_num);
            //Assert.AreEqual(2, damage_num);
            //mw.CollectNodeNextLevelGainORDamageNum(model2.level2_nodes[2], out gain_num, out damage_num);
            //Assert.AreEqual(1, gain_num);
            //Assert.AreEqual(1, damage_num);

            //mw.CollectNodeNextLevelGainORDamageNum(model2.level3_nodes[0], out gain_num, out damage_num);
            //Assert.AreEqual(2, gain_num);
            //Assert.AreEqual(0, damage_num);
            //mw.CollectNodeNextLevelGainORDamageNum(model2.level3_nodes[1], out gain_num, out damage_num);
            //Assert.AreEqual(2, gain_num);
            //Assert.AreEqual(0, damage_num);
            //mw.CollectNodeNextLevelGainORDamageNum(model2.level3_nodes[2], out gain_num, out damage_num);
            //Assert.AreEqual(2, gain_num);
            //Assert.AreEqual(0, damage_num);
            //mw.CollectNodeNextLevelGainORDamageNum(model2.level3_nodes[3], out gain_num, out damage_num);
            //Assert.AreEqual(3, gain_num);
            //Assert.AreEqual(0, damage_num);
            //mw.CollectNodeNextLevelGainORDamageNum(model2.level3_nodes[4], out gain_num, out damage_num);
            //Assert.AreEqual(2, gain_num);
            //Assert.AreEqual(0, damage_num);
            //mw.CollectNodeNextLevelGainORDamageNum(model2.level3_nodes[5], out gain_num, out damage_num);
            //Assert.AreEqual(2, gain_num);
            //Assert.AreEqual(0, damage_num);
            //mw.CollectNodeNextLevelGainORDamageNum(model2.level3_nodes[6], out gain_num, out damage_num);
            //Assert.AreEqual(3, gain_num);
            //Assert.AreEqual(0, damage_num);
            //mw.CollectNodeNextLevelGainORDamageNum(model2.level3_nodes[7], out gain_num, out damage_num);
            //Assert.AreEqual(3, gain_num);
            //Assert.AreEqual(0, damage_num);
            //mw.CollectNodeNextLevelGainORDamageNum(model2.level3_nodes[8], out gain_num, out damage_num);
            //Assert.AreEqual(2, gain_num);
            //Assert.AreEqual(0, damage_num);
            //mw.CollectNodeNextLevelGainORDamageNum(model2.level3_nodes[9], out gain_num, out damage_num);
            //Assert.AreEqual(3, gain_num);
            //Assert.AreEqual(0, damage_num);
            //mw.CollectNodeNextLevelGainORDamageNum(model2.level3_nodes[10], out gain_num, out damage_num);
            //Assert.AreEqual(2, gain_num);
            //Assert.AreEqual(0, damage_num);

            //foreach (ModelNode node in model2.level4_nodes)
            //{
            //    mw.CollectNodeNextLevelGainORDamageNum(node, out gain_num, out damage_num);
            //    Assert.AreEqual(0, gain_num);
            //    Assert.AreEqual(0, damage_num);
            //}
        }