private DatapointRuleset GetValueDomainRuleset()
        {
            DatapointRuleset ruleset = new DatapointRuleset("ruleset", string.Empty, ModelResolvers.DsResolver);

            ruleset.ValueDomains.Add("x", new ValueDomain(BasicDataType.Integer));
            ruleset.ValueDomains.Add("y", new ValueDomain(BasicDataType.Integer));
            ruleset.ValueDomains.Add("z", new ValueDomain(BasicDataType.String));
            ruleset.ValueDomains.Add("var4", new ValueDomain(BasicDataType.None));
            ruleset.RulesCollection = this.GetRuleExpressions(ruleset);

            return(ruleset);
        }
        private DatapointRuleset GetVariableRuleset()
        {
            DatapointRuleset ruleset = new DatapointRuleset("ruleset", string.Empty, ModelResolvers.DsResolver);

            ruleset.Variables.Add("x", "var1");
            ruleset.Variables.Add("y", "var2");
            ruleset.Variables.Add("z", "var3");
            ruleset.Variables.Add("var4", "var4");
            ruleset.RulesCollection = this.GetRuleExpressions(ruleset);

            return(ruleset);
        }
        public void InferStructure_ValueDomainRuleset_AssignsStructure()
        {
            DatapointRuleset ruleset = this.GetValueDomainRuleset();

            IDataStructure expectedStructure = ModelResolvers.DsResolver();

            expectedStructure.Measures.Add(new StructureComponent(BasicDataType.None, "var4"));
            expectedStructure.Measures.Add(new StructureComponent(BasicDataType.Integer, "x"));
            expectedStructure.Measures.Add(new StructureComponent(BasicDataType.Integer, "y"));
            expectedStructure.Measures.Add(new StructureComponent(BasicDataType.String, "z"));

            ruleset.InferStructure();
            IDataStructure dataStructure = ruleset.Structure;

            Assert.True(expectedStructure.EqualsObj(dataStructure));
            Assert.Equal(expectedStructure.Measures[0].ComponentName, dataStructure.Measures[0].ComponentName);
            Assert.Equal(expectedStructure.Measures[1].ComponentName, dataStructure.Measures[1].ComponentName);
            Assert.Equal(expectedStructure.Measures[2].ComponentName, dataStructure.Measures[2].ComponentName);
            Assert.Equal(expectedStructure.Measures[3].ComponentName, dataStructure.Measures[3].ComponentName);
        }