Ejemplo n.º 1
0
        public override void Validate(ObjectType Object)
        {
            GenericEqualityComparer <DataType> Comparer = new GenericEqualityComparer <DataType>();

            foreach (DataType Item in ItemToValidate(Object))
            {
                if (Comparer.Equals(Item, Value))
                {
                    return;
                }
            }
            throw new NotValid(ErrorMessage);
        }
            public void ShouldReturnFalseIfObjectsDifferentImplementIEquatableAndComparingOnObject()
            {
                // Arrange
                var first = new TestEqualityObject {
                    Name = "Hello, World", Count = 10
                };
                var second = new TestEqualityObject {
                    Name = "World, Hello", Count = 5
                };

                var comparer = new GenericEqualityComparer <TestEqualityObject>(o => o);

                // Act
                bool areEqual = comparer.Equals(first, second);

                // Assert
                areEqual.ShouldBeFalse();
            }
            public void ShouldReturnFalseIfObjectsDifferentAndComparingOnPropertyWithDifferentValue()
            {
                // Arrange
                var first = new TestObject {
                    Name = "Hello, World", Count = 10
                };
                var second = new TestObject {
                    Name = "World, Hello", Count = 5
                };

                var comparer = new GenericEqualityComparer <TestObject>(o => o.Name);

                // Act
                bool areEqual = comparer.Equals(first, second);

                // Assert
                areEqual.ShouldBeFalse();
            }
        /// <summary>
        /// Determines if the buffer contains the item
        /// </summary>
        /// <param name="item">Item to check</param>
        /// <returns>True if the item is present, false otherwise</returns>
        public virtual bool Contains(T item)
        {
            int y = ReadPosition;
            GenericEqualityComparer <T> Comparer = new GenericEqualityComparer <T>();

            for (int x = 0; x < Count; ++x)
            {
                if (Comparer.Equals(Buffer[y], item))
                {
                    return(true);
                }
                ++y;
                if (y >= MaxCapacity)
                {
                    y = 0;
                }
            }
            return(false);
        }
            public void ShouldReturnTrueIfObjectsSameReferenceAndComparingOnObject()
            {
                // Arrange
                string objectName  = "Hello, World!";
                int    objectCount = 10;

                var first = new TestObject {
                    Name = objectName, Count = objectCount
                };
                TestObject second = first;

                var comparer = new GenericEqualityComparer <TestObject>(o => o);

                // Act
                bool areEqual = comparer.Equals(first, second);

                // Assert
                areEqual.ShouldBeTrue();
            }
Ejemplo n.º 6
0
        /// <summary>
        ///     Removes an item from the buffer
        /// </summary>
        /// <param name="item">Item to remove</param>
        /// <returns>True if it is removed, false otherwise</returns>
        public virtual bool Remove(T item)
        {
            int y        = ReadPosition;
            var Comparer = new GenericEqualityComparer <T>();

            for (int x = 0; x < Count; ++x)
            {
                if (Comparer.Equals(Buffer[y], item))
                {
                    Buffer[y] = default(T);
                    return(true);
                }
                ++y;
                if (y >= MaxCapacity)
                {
                    y = 0;
                }
            }
            return(false);
        }
            public void ShouldReturnTrueIfObjectsSimilarAndComparingOnPropertyWithSameValue()
            {
                // Arrange
                string objectName  = "Hello, World!";
                int    objectCount = 10;

                var first = new TestObject {
                    Name = objectName, Count = objectCount
                };
                var second = new TestObject {
                    Name = objectName, Count = objectCount
                };

                var comparer = new GenericEqualityComparer <TestObject>(o => o.Name);

                // Act
                bool areEqual = comparer.Equals(first, second);

                // Assert
                areEqual.ShouldBeTrue();
            }
Ejemplo n.º 8
0
        /// <summary>
        /// Determines if the property is valid
        /// </summary>
        /// <param name="value">Value to check</param>
        /// <param name="validationContext">Validation context</param>
        /// <returns>The validation result</returns>
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (value == null)
            {
                return(ValidationResult.Success);
            }
            var         Comparer  = new GenericEqualityComparer <IComparable>();
            var         ValueList = value as IEnumerable;
            IComparable ValueTemp = 0;

            foreach (IComparable Item in ValueList)
            {
                ValueTemp = (IComparable)Value.To <object>(Item.GetType());
                break;
            }
            foreach (IComparable Item in ValueList)
            {
                if (Comparer.Equals(Item, ValueTemp))
                {
                    return(new ValidationResult(FormatErrorMessage(validationContext.DisplayName)));
                }
            }
            return(ValidationResult.Success);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Saves the object to the source
        /// </summary>
        /// <typeparam name="PrimaryKeyType">Primary key type</typeparam>
        /// <param name="Object">Object to save</param>
        public IBatch Save <PrimaryKeyType>(T Object)
        {
            var           TempBatch  = QueryProvider.Batch(Source);
            IProperty <T> IDProperty = ((IProperty <T>)Mapping.IDProperties.FirstOrDefault());
            var           IDValue    = IDProperty.GetValue(Object).To(default(PrimaryKeyType));

            var        Comparer = new GenericEqualityComparer <PrimaryKeyType>();
            IParameter Param1   = null;

            if (Comparer.Equals(IDValue, default(PrimaryKeyType)))
            {
                return(TempBatch.AddCommand(Insert(Object)));
            }
            if (IDProperty.AutoIncrement)
            {
                return(TempBatch.AddCommand(Update(Object)));
            }
            Param1 = typeof(PrimaryKeyType).Is(typeof(string)) ? (IParameter) new StringEqualParameter(IDValue.ToString(), IDProperty.FieldName, IDValue.ToString().Length, IDProperty.FieldName, Source.ParameterPrefix) : (IParameter) new EqualParameter <PrimaryKeyType>(IDValue, IDProperty.FieldName, IDProperty.FieldName, Source.ParameterPrefix);
            if (Any(Param1).Execute()[0].Count == 0)
            {
                return(TempBatch.AddCommand(Insert(Object)));
            }
            return(TempBatch.AddCommand(Update(Object)));
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Saves (inserts/updates) an object based on the following criteria:
        /// 1) If autoincrement is set to true and the primary key is the default value, it inserts
        /// 2) If autoincrement is set to true and the primary key is not the default value, it updates
        /// 3) If autoincrement is set to false and the primary key is the default value, it inserts
        /// 4) If autoincrement is set to false and the primary key is not the default value,
        /// it does an Any call to see if the item is already in the database. If it is, it does an
        /// update. Otherwise it does an insert.
        /// On an insert, the primary key property is updated with the resulting value of the insert.
        /// </summary>
        /// <param name="Object">Object to save</param>
        /// <param name="Parameters">Extra parameters to be added to the insert/update function</param>
        public virtual void Save <PrimaryKeyType>(ClassType Object, params IParameter[] Parameters)
        {
            PrimaryKeyType PrimaryKeyVal = GetPrimaryKey(Object).TryTo(default(PrimaryKeyType));
            GenericEqualityComparer <PrimaryKeyType> Comparer = new GenericEqualityComparer <PrimaryKeyType>();

            if (Comparer.Equals(PrimaryKeyVal, default(PrimaryKeyType)))
            {
                PrimaryKeyVal = Insert <PrimaryKeyType>(Object, Parameters);
                PrimaryKeyMapping.CopyRightToLeft(PrimaryKeyVal, Object);
                return;
            }
            if (AutoIncrement)
            {
                Update(Object, Parameters);
                return;
            }
            IParameter Param1 = null;

            if (typeof(PrimaryKeyType).IsOfType(typeof(string)))
            {
                Param1 = new StringEqualParameter(PrimaryKeyVal.ToString(), PrimaryKey, -1, ParameterStarter);
            }
            else
            {
                Param1 = new EqualParameter <PrimaryKeyType>(PrimaryKeyVal, PrimaryKey, ParameterStarter);
            }
            ClassType TempVal = Any(PrimaryKey, null, null, Param1);

            if (TempVal == null)
            {
                PrimaryKeyVal = Insert <PrimaryKeyType>(Object, Parameters);
                PrimaryKeyMapping.CopyRightToLeft(PrimaryKeyVal, Object);
                return;
            }
            Update(Object, Parameters);
        }
        public void EqualsWithSubModelsReturnsExpectedResult(SubModel x, SubModel y, bool expected)
        {
            var sut = new GenericEqualityComparer<SubModel>();

            Assert.Equal(expected, sut.Equals(x, y));
        }
        public void EqualsWithStringsReturnsExpectedResult(string x, string y, bool expected)
        {
            var sut = new GenericEqualityComparer<string>();

            Assert.Equal(expected, sut.Equals(x, y));
        }
        public void EqualsWithListsReturnsExpectedResult(List<int> x, List<int> y, bool expected)
        {
            var sut = new GenericEqualityComparer<List<int>>();

            Assert.Equal(expected, sut.Equals(x, y));
        }
        public void EqualsWithIntsReturnsExpectedResult(int x, int y, bool expected)
        {
            var sut = new GenericEqualityComparer<int>();

            Assert.Equal(expected, sut.Equals(x, y));
        }
        public void EqualsWithEnumsReturnsExpectedResult(Enum x, Enum y, bool expected)
        {
            var sut = new GenericEqualityComparer<Enum>();

            Assert.Equal(expected, sut.Equals(x, y));
        }
Ejemplo n.º 16
0
        public void Equals_SameProperties_ExpectTrue()
        {
            var t1 = new TestObject()
            {
                Id = 1, Name = "Test", InnerObject = new InnerObject {
                    Amount = 2, Customer = "Customer"
                }, Array = new [] { 1, 2, 2 }
            };
            var t2 = new TestObject()
            {
                Id = 1, Name = "Test", InnerObject = new InnerObject {
                    Amount = 2, Customer = "Customer"
                }, Array = new[] { 1, 2, 2 }
            };

            var result = _equalityComparer.Equals(t1, t2);

            Assert.IsTrue(result);
        }
Ejemplo n.º 17
0
 /// <summary>
 /// Determines if the objects are equal
 /// </summary>
 /// <param name="obj">Object to compare to</param>
 /// <returns>Determines if the commands are equal</returns>
 public override bool Equals(object obj)
 {
     Command OtherCommand = obj as Command;
     if (OtherCommand == null)
         return false;
     if (OtherCommand.SQLCommand != SQLCommand
         || OtherCommand.CommandType != CommandType
         || Parameters.Count != OtherCommand.Parameters.Count)
         return false;
     GenericEqualityComparer<object> Comparer = new GenericEqualityComparer<object>();
     for (int x = 0; x < Parameters.Count; ++x)
     {
         if (!Comparer.Equals(Parameters[x], OtherCommand.Parameters[x]))
             return false;
     }
     return true;
 }
 /// <summary>
 /// Determines if the property is valid
 /// </summary>
 /// <param name="value">Value to check</param>
 /// <param name="validationContext">Validation context</param>
 /// <returns>The validation result</returns>
 protected override ValidationResult IsValid(object value, ValidationContext validationContext)
 {
     if (value==null)
         return ValidationResult.Success;
     GenericEqualityComparer<IComparable> Comparer = new GenericEqualityComparer<IComparable>();
     IEnumerable ValueList = value as IEnumerable;
     IComparable ValueTemp = 0;
     foreach (IComparable Item in ValueList)
     {
         ValueTemp = (IComparable)Value.To<object>(Item.GetType());
         break;
     }
     foreach (IComparable Item in ValueList)
     {
         if (Comparer.Equals(Item, ValueTemp))
             return new ValidationResult(FormatErrorMessage(validationContext.DisplayName));
     }
     return ValidationResult.Success;
 }
        public void EqualsWithEnumerableSubModelsReturnsExpectedResult(
            IEnumerable<SubModel> x, IEnumerable<SubModel> y, bool expected)
        {
            var sut = new GenericEqualityComparer<IEnumerable<SubModel>>();

            Assert.Equal(expected, sut.Equals(x, y));
        }