コード例 #1
0
ファイル: VariableTests.cs プロジェクト: SalehMhd/MiniCP
        public void Value_equals_Next_Value()
        {
            //Arrange
            var domain = new RangeDomain() { LowBound = 1, HighBound = 2 };
            var variable = new Variable() { Domains = new System.Collections.Generic.List<IDomain>() { domain } };

            //Act
            var nextValue = variable.NextValue();

            //Assert
            Assert.AreEqual(variable.Value(), nextValue);
        }
コード例 #2
0
ファイル: VariableTests.cs プロジェクト: SalehMhd/MiniCP
        public void Next_Value_returns_first_domains_low_bound()
        {
            //Arrange
            var domain = new RangeDomain() { LowBound = 1, HighBound = 3 };
            var variable = new Variable() { Domains = new System.Collections.Generic.List<IDomain>() { domain } };

            //Act
            var firstValue = variable.NextValue();

            //Assert
            Assert.AreEqual(firstValue, domain.LowBound);
        }
コード例 #3
0
ファイル: VariableTests.cs プロジェクト: SalehMhd/MiniCP
        public void Value_called_for_the_first_time_equals_low_bound()
        {
            //Arrange
            var domain = new RangeDomain() { LowBound = 1, HighBound = 2 };
            var variable = new Variable() { Domains = new System.Collections.Generic.List<IDomain>() { domain } };

            //Act
            var value = variable.Value();

            //Assert
            Assert.AreEqual(value, domain.LowBound);
        }
コード例 #4
0
ファイル: VariableTests.cs プロジェクト: SalehMhd/MiniCP
        public void Values_Equal_Domain_Listing()
        {
            //Arrange
            var domain = new RangeDomain() { LowBound = 1, HighBound = 2 };
            var variable = new Variable() { Domains = new System.Collections.Generic.List<IDomain>() { domain } };

            //Act
            var values = variable.Values();

            //Assert
            Assert.AreEqual(values[0], 1);
            Assert.AreEqual(values[1], 2);
        }
コード例 #5
0
ファイル: RangeDomainTests.cs プロジェクト: SalehMhd/MiniCP
        public void Next_to_value_in_domain_is_value_plus_1()
        {
            //Arrange
            var domain = new RangeDomain {
                LowBound = 2, HighBound = 6
            };

            //Act
            var nextToValue = domain.NextValue(4);

            //Assert
            Assert.AreEqual(nextToValue, 5);
        }
コード例 #6
0
ファイル: RangeDomainTests.cs プロジェクト: SalehMhd/MiniCP
        public void Next_to_lower_bound_is_lower_bound_plus_1()
        {
            //Arrange
            var domain = new RangeDomain {
                LowBound = 2, HighBound = 4
            };

            //Act
            var nextLowerBound = domain.NextValue(domain.LowBound);

            //Assert
            Assert.AreEqual(nextLowerBound, 3);
        }
コード例 #7
0
ファイル: RangeDomainTests.cs プロジェクト: SalehMhd/MiniCP
        public void Next_to_higher_than_higher_bound_is_int_max()
        {
            //Arrange
            var domain = new RangeDomain {
                LowBound = 2, HighBound = 4
            };

            //Act
            var nextHigherBound = domain.NextValue(5);

            //Assert
            Assert.AreEqual(nextHigherBound, int.MaxValue);
        }
コード例 #8
0
ファイル: RangeDomainTests.cs プロジェクト: SalehMhd/MiniCP
        public void remove_higher_bound_should_make_new_higher_bound_minus_one()
        {
            //Arrange
            var domain = new RangeDomain {
                LowBound = 1, HighBound = 3
            };

            //Act
            domain.Remove(domain.HighBound);

            //Assert
            Assert.AreEqual(domain.HighBound, 2);
        }
コード例 #9
0
ファイル: RangeDomainTests.cs プロジェクト: SalehMhd/MiniCP
        public void Next_to_less_than_lower_bound_is_lower_bound()
        {
            //Arrange
            var domain = new RangeDomain {
                LowBound = 2, HighBound = 3
            };

            //Act
            var nextToOne = domain.NextValue(1);

            //Assert
            Assert.AreEqual(nextToOne, domain.LowBound);
        }
コード例 #10
0
        public void Initialize(object parameter)
        {
            numMinValue.Minimum = numMinValue.Minimum = int.MinValue;
            numMinValue.Maximum = numMaxValue.Maximum = int.MaxValue;

            _domain = parameter as RangeDomain;

            if (_domain != null)
            {
                numMinValue.Value = (decimal)Math.Max(_domain.MinValue, (double)numMinValue.Minimum);
                numMaxValue.Value = (decimal)Math.Min(_domain.MaxValue, (double)numMaxValue.Maximum);
            }
        }
コード例 #11
0
ファイル: VariableTests.cs プロジェクト: SalehMhd/MiniCP
        public void Next_Value_after_NextValue_returns_the_Value_After()
        {
            //Arrange
            var domain = new RangeDomain() { LowBound = 1, HighBound = 3 };
            var variable = new Variable() { Domains = new System.Collections.Generic.List<IDomain>() { domain } };
            variable.NextValue();

            //Act
            var secondValue = variable.NextValue();

            //Assert
            Assert.AreEqual(secondValue, 2);
        }
コード例 #12
0
ファイル: VariableTests.cs プロジェクト: SalehMhd/MiniCP
        public void Removing_last_value_of_last_domain_removes_domains()
        {
            //Arrange
            var domain = new RangeDomain() { LowBound = 1, HighBound = 2 };
            var variable = new Variable() { Domains = new System.Collections.Generic.List<IDomain>() { domain } };

            //Act
            variable.RemoveValue(1);
            variable.RemoveValue(2);

            //Assert
            Assert.AreEqual(variable.Domains.Count, 0);
        }
コード例 #13
0
ファイル: RangeDomainTests.cs プロジェクト: SalehMhd/MiniCP
        public void Lower_bound_equal_to_higher_bound_returns_one_value()
        {
            //Arrange
            var domain = new RangeDomain {
                LowBound = 1, HighBound = 1
            };

            //Act
            var domainValues = domain.Values();

            //Assert
            Assert.AreEqual(domainValues.Count, 1);
            Assert.AreEqual(domainValues[0], 1);
        }
コード例 #14
0
ファイル: VariableTests.cs プロジェクト: SalehMhd/MiniCP
        public void Next_Value_when_adomain_ends_returns_low_bound_of_the_next_domain()
        {
            //Arrange
            var domain1 = new RangeDomain() { LowBound = 1, HighBound = 2 };
            var domain2 = new RangeDomain() { LowBound = 4, HighBound = 6 };
            var variable = new Variable() { Domains = new System.Collections.Generic.List<IDomain>() { domain1, domain2 } };
            variable.NextValue();
            variable.NextValue();

            //Act
            var firstValue_SecondDomain = variable.NextValue();

            //Assert
            Assert.AreEqual(firstValue_SecondDomain, domain2.LowBound);
        }
コード例 #15
0
ファイル: RangeDomainTests.cs プロジェクト: SalehMhd/MiniCP
        public void Lower_bound_lower_then_higher_bound_returns_values_count()
        {
            //Arrange
            var domain = new RangeDomain {
                LowBound = 1, HighBound = 3
            };

            //Act
            var domainValues = domain.Values();

            //Assert
            Assert.AreEqual(domainValues.Count, 3);
            Assert.AreEqual(domainValues[0], 1);
            Assert.AreEqual(domainValues[1], 2);
            Assert.AreEqual(domainValues[2], 3);
        }
コード例 #16
0
ファイル: VariableTests.cs プロジェクト: SalehMhd/MiniCP
        public void Next_Value_after_the_last_value_of_the_last_domain_is_IntMax()
        {
            //Arrange
            var domain1 = new RangeDomain() { LowBound = 1, HighBound = 2 };
            var domain2 = new RangeDomain() { LowBound = 4, HighBound = 5 };
            var variable = new Variable() { Domains = new System.Collections.Generic.List<IDomain>() { domain1, domain2 } };
            variable.NextValue();
            variable.NextValue();
            variable.NextValue();
            variable.NextValue();

            //Act
            var afterLastValue = variable.NextValue();

            //Assert
            Assert.AreEqual(afterLastValue, int.MaxValue);
        }
コード例 #17
0
        public void MainMethodCode()
        {
            // Opening a Non-Versioned SQL Server instance.

            DatabaseConnectionProperties connectionProperties = new DatabaseConnectionProperties(EnterpriseDatabaseType.SQLServer)
            {
                AuthenticationMode = AuthenticationMode.DBMS,

                // Where testMachine is the machine where the instance is running and testInstance is the name of the SqlServer instance.
                Instance = @"testMachine\testInstance",

                // Provided that a database called LocalGovernment has been created on the testInstance and geodatabase has been enabled on the database.
                Database = "LocalGovernment",

                // Provided that a login called gdb has been created and corresponding schema has been created with the required permissions.
                User     = "******",
                Password = "******",
                Version  = "dbo.DEFAULT"
            };

            using (Geodatabase geodatabase = new Geodatabase(connectionProperties))
                using (FeatureClassDefinition featureClassDefinition = geodatabase.GetDefinition <FeatureClassDefinition>("LocalGovernment.GDB.ServiceRequestComment"))
                {
                    int   rankIndex = featureClassDefinition.FindField("RANK");
                    Field field     = featureClassDefinition.GetFields()[rankIndex];

                    Domain domain = field.GetDomain();

                    RangeDomain rangeDomain = (RangeDomain)domain;

                    // Will be "ServiceRequestRanking".
                    string name = rangeDomain.GetName();

                    // Will be FieldType.Integer.
                    FieldType fieldType = rangeDomain.GetFieldType();

                    // Will be "A factor assigned to unassigned service requests indicating importance".
                    string description = rangeDomain.GetDescription();

                    // Will be 1.
                    int minValue = Convert.ToInt32(rangeDomain.GetMinValue());

                    // Will be 5.
                    int maxValue = Convert.ToInt32(rangeDomain.GetMaxValue());
                }
        }
コード例 #18
0
ファイル: VariableTests.cs プロジェクト: SalehMhd/MiniCP
        public void Remove_Not_Bound_Value_Throws_Exception()
        {
            //Arrange
            var domain = new RangeDomain() { LowBound = 1, HighBound = 3 };
            var variable = new Variable() { Domains = new System.Collections.Generic.List<IDomain>() { domain } };

            //Act
            try
            {
                variable.RemoveValue(2);
            }
            catch(Exception ex)
            {
                //Assert
                Assert.AreEqual(ex.Message, "value within the range, could not be removed");
            }
        }
コード例 #19
0
        // RangeDomain
        internal static Dictionary <string, object> ToDictionary(this RangeDomain <IComparable> domain)
        {
            Dictionary <string, object> dictionary = new Dictionary <string, object>();

            if (!string.IsNullOrEmpty(domain.Name))
            {
                dictionary.Add("name", domain.Name);
            }

            List <object> range = new List <object>();

            range.Add(domain.MinimumValue);
            range.Add(domain.MaximumValue);
            dictionary.Add("range", range);

            return(dictionary);
        }
コード例 #20
0
        /// <summary>
        /// Initializes a new instance of the <see cref="FeatureDataField&lt;T&gt;"/> class.
        /// </summary>
        /// <param name="featureDataForm">The feature data form.</param>
        /// <param name="layerInfo">The feature layer info.</param>
        /// <param name="field">The field.</param>
        /// <param name="propertyType">Type of the property.</param>
        /// <param name="propertyValue">The property value.</param>
        internal FeatureDataField(FeatureDataForm featureDataForm, FeatureLayerInfo layerInfo, Field field, Type propertyType, T propertyValue)
        {
            this._featureDataForm  = featureDataForm;
            this._field            = field;
            this._layerInfo        = layerInfo;
            this._codedValueDomain = null;
            Domain domain = field.Domain;

            if (domain != null && !Toolkit.Utilities.FieldDomainUtils.IsDynamicDomain(_field, _layerInfo))
            {
                this._codedValueDomain = domain as CodedValueDomain;

                if (propertyType == typeof(DateTime) || propertyType == typeof(DateTime?))
                {
                    this._dateRangeDomain = domain as RangeDomain <DateTime>;
                }
                else if (propertyType == typeof(double) || propertyType == typeof(double?))
                {
                    this._doubleRangeDomain = domain as RangeDomain <double>;
                }
                else if (propertyType == typeof(float) || propertyType == typeof(float?))
                {
                    this._floatRangeDomain = domain as RangeDomain <float>;
                }
                else if (propertyType == typeof(int) || propertyType == typeof(int?))
                {
                    this._intRangeDomain = domain as RangeDomain <int>;
                }
                else if (propertyType == typeof(short) || propertyType == typeof(short?))
                {
                    this._shortRangeDomain = domain as RangeDomain <short>;
                }
                else if (propertyType == typeof(long) || propertyType == typeof(long?))
                {
                    this._longRangeDomain = domain as RangeDomain <long>;
                }
                else if (propertyType == typeof(byte) || propertyType == typeof(byte?))
                {
                    this._byteRangeDomain = domain as RangeDomain <byte>;
                }
            }
            this._propertyType  = propertyType;
            this._propertyValue = propertyValue;
        }
コード例 #21
0
        /// <summary>
        /// Initializes a new instance of the <see cref="FeatureDataField&lt;T&gt;"/> class.
        /// </summary>
        /// <param name="featureDataForm">The feature data form.</param>
        /// <param name="field">The field.</param>
        /// <param name="propertyType">Type of the property.</param>
        /// <param name="propertyValue">The property value.</param>
        internal FeatureDataField(FeatureDataForm featureDataForm, Field field, Type propertyType, T propertyValue)
        {
            this._featureDataForm  = featureDataForm;
            this._codedValueDomain = null;
            Domain domain = field.Domain;

            if (domain != null)
            {
                this._codedValueDomain = domain as CodedValueDomain;
                if (propertyType == typeof(DateTime) || propertyType == typeof(DateTime?))
                {
                    this._dateRangeDomain = domain as RangeDomain <DateTime>;
                }
                else if (propertyType == typeof(double) || propertyType == typeof(double?))
                {
                    this._doubleRangeDomain = domain as RangeDomain <double>;
                }
                else if (propertyType == typeof(float) || propertyType == typeof(float?))
                {
                    this._floatRangeDomain = domain as RangeDomain <float>;
                }
                else if (propertyType == typeof(int) || propertyType == typeof(int?))
                {
                    this._intRangeDomain = domain as RangeDomain <int>;
                }
                else if (propertyType == typeof(short) || propertyType == typeof(short?))
                {
                    this._shortRangeDomain = domain as RangeDomain <short>;
                }
                else if (propertyType == typeof(long) || propertyType == typeof(long?))
                {
                    this._longRangeDomain = domain as RangeDomain <long>;
                }
                else if (propertyType == typeof(byte) || propertyType == typeof(byte?))
                {
                    this._byteRangeDomain = domain as RangeDomain <byte>;
                }
            }

            this._field         = field;
            this._propertyType  = propertyType;
            this._propertyValue = propertyValue;
        }
コード例 #22
0
        internal static IEnumerable <KeyValuePair <object, RangeDomain <T> > > BuildDynamicRangeDomain <T>(Field field, FeatureLayerInfo layerInfo) where T : System.IComparable
        {
            List <KeyValuePair <object, RangeDomain <T> > > dynamicRangeDomains = null;

            foreach (object key in layerInfo.FeatureTypes.Keys)
            {
                FeatureType featureType = layerInfo.FeatureTypes[key];
                if (featureType.Domains.ContainsKey(field.Name))
                {
                    if (dynamicRangeDomains == null)
                    {
                        dynamicRangeDomains = new List <KeyValuePair <object, RangeDomain <T> > >();
                    }

                    RangeDomain <T> rangeDomain = featureType.Domains[field.Name] as RangeDomain <T>;
                    if (rangeDomain != null)
                    {
                        dynamicRangeDomains.Add(new KeyValuePair <object, RangeDomain <T> >(featureType.Id, rangeDomain));
                    }
                }
            }
            return(dynamicRangeDomains);
        }
コード例 #23
0
        public static FieldDomain GetDomain(Domain fs_domain)
        {
            FieldDomain result;

            try
            {
                ObservableDictionary <string, FieldDomain> domains = AfaDocData.ActiveDocData.DocDataset.Domains;
                string      key         = DocUtil.FixSymbolName(fs_domain.DomainName);
                FieldDomain fieldDomain = null;
                if (domains.TryGetValue(key, out fieldDomain) && FieldDomain.AreEquivalent(fieldDomain, fs_domain))
                {
                    result = fieldDomain;
                }
                else
                {
                    string domainType = "";
                    if (fs_domain is CodedValueDomain)
                    {
                        domainType = "CodedValueDomain";
                    }
                    else if (fs_domain is RangeDomain)
                    {
                        domainType = "RangeDomain";
                    }
                    CadField.CadFieldType cadFieldType = FieldDomain.GetCadFieldType(fs_domain.FieldType);
                    fieldDomain = new FieldDomain(fs_domain.DomainName, cadFieldType, domainType);
                    if (fs_domain is CodedValueDomain)
                    {
                        CodedValueDomain codedValueDomain = (CodedValueDomain)fs_domain;
                        if (codedValueDomain.CodedValues.Length <= 0)
                        {
                            goto IL_129;
                        }
                        CodedValue[] array = codedValueDomain.CodedValues.ToArray <CodedValue>();
                        try
                        {
                            CodedValue[] array2 = array;
                            for (int i = 0; i < array2.Length; i++)
                            {
                                CodedValue codedValue = array2[i];
                                fieldDomain.CodedValues.Add(DocUtil.FixSymbolName(codedValue.Name), new MSCCodedValue(codedValue.Name, cadFieldType, codedValue.Code));
                            }
                            goto IL_129;
                        }
                        catch (SystemException ex)
                        {
                            string arg_FC_0 = ex.Message;
                            goto IL_129;
                        }
                    }
                    if (fs_domain is RangeDomain)
                    {
                        RangeDomain rangeDomain = (RangeDomain)fs_domain;
                        fieldDomain.MinValue = rangeDomain.MinValue;
                        fieldDomain.MaxValue = rangeDomain.MaxValue;
                    }
IL_129:
                    AfaDocData.ActiveDocData.DocDataset.Domains.Add(fieldDomain.Name, fieldDomain);
                    result = fieldDomain;
                }
            }
            catch
            {
                result = null;
            }
            return(result);
        }
コード例 #24
0
        /// <summary>
        /// Sets the field information in the feature layer.
        /// </summary>
        /// <param name="featureLayerInfo">The feature layer info.</param>
        /// <param name="rangeDomainInfo">The range domain info.</param>
        /// <param name="fieldProps">The properties associated with the field.</param>
        /// <returns>Dictionary of field types keyed by their actual names. Also, populates range domain information and field properties if any.</returns>
        internal static Dictionary <string, Type> SetFieldInfo(FeatureLayerInfo featureLayerInfo, out Dictionary <string, object[]> rangeDomainInfo, out Dictionary <string, Field> fieldProps)
        {
            Dictionary <string, Type> fieldInfo = null;

            rangeDomainInfo = null;
            fieldProps      = new Dictionary <string, Field>();
            if (featureLayerInfo != null)
            {
                fieldInfo = new Dictionary <string, Type>();
                foreach (Field field in featureLayerInfo.Fields)
                {
                    Type fieldType = typeof(object);
                    switch (field.Type)
                    {
                    case Field.FieldType.Date:
                        fieldType = typeof(DateTime?);
                        break;

                    case Field.FieldType.Double:
                        fieldType = typeof(double?);
                        break;

                    case Field.FieldType.Integer:
                        fieldType = typeof(int?);
                        break;

                    case Field.FieldType.OID:
                        fieldType = typeof(int);
                        break;

                    case Field.FieldType.Geometry:
                    case Field.FieldType.GUID:
                    case Field.FieldType.Blob:
                    case Field.FieldType.Raster:
                    case Field.FieldType.Unknown:
                        fieldType = typeof(object);
                        break;

                    case Field.FieldType.Single:
                        fieldType = typeof(float?);
                        break;

                    case Field.FieldType.SmallInteger:
                        fieldType = typeof(short?);
                        break;;

                    case Field.FieldType.GlobalID:
                    case Field.FieldType.String:
                    case Field.FieldType.XML:
                        fieldType = typeof(string);
                        break;

                    default:
                        throw new NotSupportedException(string.Format(Properties.Resources.FieldDomain_FieldTypeNotSupported, fieldType.GetType()));
                    }
                    fieldInfo.Add(field.Name, fieldType);
                    fieldProps.Add(field.Name, field);
                    // Populating the range domain info if any:
                    if (field.Domain != null)
                    {
                        switch (field.Type)
                        {
                        case Field.FieldType.Date:
                            RangeDomain <DateTime> dateTimeRangeDomain = field.Domain as RangeDomain <DateTime>;
                            if (dateTimeRangeDomain != null)
                            {
                                if (rangeDomainInfo == null)
                                {
                                    rangeDomainInfo = new Dictionary <string, object[]>();
                                }
                                rangeDomainInfo.Add(field.Name, new object[] { dateTimeRangeDomain.MinimumValue, dateTimeRangeDomain.MaximumValue });
                            }
                            break;

                        case Field.FieldType.Double:
                            RangeDomain <double> doubleRangeDomain = field.Domain as RangeDomain <double>;
                            if (doubleRangeDomain != null)
                            {
                                if (rangeDomainInfo == null)
                                {
                                    rangeDomainInfo = new Dictionary <string, object[]>();
                                }
                                rangeDomainInfo.Add(field.Name, new object[] { doubleRangeDomain.MinimumValue, doubleRangeDomain.MaximumValue });
                            }
                            break;

                        case Field.FieldType.Integer:
                            RangeDomain <int> intRangeDomain = field.Domain as RangeDomain <int>;
                            if (intRangeDomain != null)
                            {
                                if (rangeDomainInfo == null)
                                {
                                    rangeDomainInfo = new Dictionary <string, object[]>();
                                }
                                rangeDomainInfo.Add(field.Name, new object[] { intRangeDomain.MinimumValue, intRangeDomain.MaximumValue });
                            }
                            break;

                        case Field.FieldType.Single:
                            RangeDomain <Single> singleRangeDomain = field.Domain as RangeDomain <Single>;
                            if (singleRangeDomain != null)
                            {
                                if (rangeDomainInfo == null)
                                {
                                    rangeDomainInfo = new Dictionary <string, object[]>();
                                }
                                rangeDomainInfo.Add(field.Name, new object[] { singleRangeDomain.MinimumValue, singleRangeDomain.MaximumValue });
                            }
                            break;

                        case Field.FieldType.SmallInteger:
                            RangeDomain <short> shortRangeDomain = field.Domain as RangeDomain <short>;
                            if (shortRangeDomain != null)
                            {
                                if (rangeDomainInfo == null)
                                {
                                    rangeDomainInfo = new Dictionary <string, object[]>();
                                }
                                rangeDomainInfo.Add(field.Name, new object[] { shortRangeDomain.MinimumValue, shortRangeDomain.MaximumValue });
                            }
                            break;
                        }
                    }
                }
            }
            return(fieldInfo);
        }