public void Setup()
        {
            this.objA = new GenericDomain<int[,]> { GenericProp = this.CreateArray() };
            this.objB = new GenericDomain<int[,]> { GenericProp = this.CreateArray() };

            this.comparator = new ObjectComparator<GenericDomain<int[,]>>();
        }
        }     // _Ordered_Comparer_impl_ class

        public static DataSet getOrdered(DataSet dataSet, params OrderByItem[] orderByItems)
        {
            List <Row>      values          = new List <Row>();
            IComparer <Row> valueComparator = null;

            if (orderByItems != null && orderByItems.Length != 0)
            {
                int[] sortIndexes = new int[orderByItems.Length];
                for (int i = 0; i < orderByItems.Length; i++)
                {
                    OrderByItem item     = orderByItems[i];
                    int         index_of = dataSet.indexOf(item.getSelectItem());
                    sortIndexes[i] = index_of;
                }

                values = readDataSetFull(dataSet);
                if (values.IsEmpty())
                {
                    return(new EmptyDataSet(dataSet.getSelectItems()));
                }

                valueComparator = ObjectComparator.getComparator();

                // create a comparator for doing the actual sorting/ordering
                IComparer <Row> comparator = new _Ordered_Comparer_impl_(valueComparator, orderByItems);
            }
            values.Sort(valueComparator);     // Collections.sort(data, comparator);

            dataSet = new InMemoryDataSet(values);
            return(dataSet);
        }     // getOrdered()
    public static void Show()
    {
        A a  = new A();
        B b  = new B();
        A a1 = new A();

        Console.WriteLine(ObjectComparator <A> .CompareProperties(a, b));
        Console.WriteLine(ObjectComparator <A> .CompareProperties(b, a));
        Console.WriteLine(ObjectComparator <A> .CompareProperties(a, a1));
    }
        public void ThenShouldSucceedIfCollectionsAreEqual()
        {
            var objA = new[] {"AAA", "BBB"};
            var objB = new[] {"AAA", "BBB"};

            var comparator = new ObjectComparator<string[]>();
            var result = comparator.Compare(objA, objB);

            result.AreSame.Should().BeTrue();
        }
示例#5
0
        private bool compare(Object selectItemValue, Object operandValue)
        {
            IComparer <Object> comparator = ObjectComparator.getComparator();

            if (_operator == OperatorType.DIFFERENT_FROM)
            {
                return(comparator.Compare(selectItemValue, operandValue) != 0);
            }
            else if (_operator == OperatorType.EQUALS_TO)
            {
                return(comparator.Compare(selectItemValue, operandValue) == 0);
            }
            else if (_operator == OperatorType.GREATER_THAN)
            {
                return(comparator.Compare(selectItemValue, operandValue) > 0);
            }
            else if (_operator == OperatorType.GREATER_THAN_OR_EQUAL)
            {
                return(comparator.Compare(selectItemValue, operandValue) >= 0);
            }
            else if (_operator == OperatorType.LESS_THAN)
            {
                return(comparator.Compare(selectItemValue, operandValue) < 0);
            }
            else if (_operator == OperatorType.LESS_THAN_OR_EQUAL)
            {
                return(comparator.Compare(selectItemValue, operandValue) <= 0);
            }
            else if (_operator == OperatorType.LIKE)
            {
                //WildcardPattern matcher = new WildcardPattern((String)operandValue, '%');
                //return matcher.matches((String)selectItemValue);
                return(false);
            }
            else if (_operator == OperatorType.NOT_LIKE)
            {
                //WildcardPattern matcher = new WildcardPattern((String)operandValue, '%');
                //return !matcher.matches((String)selectItemValue);
                return(false);
            }
            else if (_operator == OperatorType.IN)
            {
                HashSet <object> inValues = getInValues();
                return(inValues.Contains(selectItemValue));
            }
            else if (_operator == OperatorType.NOT_IN)
            {
                HashSet <object> inValues = getInValues();
                return(!inValues.Contains(selectItemValue));
            }
            else
            {
                throw new InvalidOperationException("Operator could not be determined");
            }
        }
        public void ThenShouldSucceedIfCollectionsDiffer()
        {
            var objA = new[] { "AAA", "BBB" };
            var objB = new[] { "AAA", "CCC" };

            var comparator = new ObjectComparator<string[]>();
            var result = comparator.Compare(objA, objB);

            result.AreSame.Should().BeFalse();
            result.Differences.Single().PropertyPath.Should().Be("[1]");
        }        
        public void Compare()
        {
            var obj1 = new ObjectFake();

            obj1.name       = "ee";
            obj1.theDecimal = 10;
            obj1.objectList = null;
            obj1.stringList = new List <string>()
            {
                "ee"
            };

            var obj2 = new ObjectFake();

            obj2.name       = "ee";
            obj2.theDecimal = 10;
            obj2.objectList = new List <object>()
            {
                new object()
            };
            obj2.stringList = new List <string>()
            {
                "ee"
            };

            var objectComparator = new ObjectComparator();

            if (objectComparator.AreEqual(obj1, obj2, true) == false)
            {
                throw new Exception();
            }
            if (objectComparator.AreEqual(obj1, obj2, false) == true)
            {
                throw new Exception();
            }

            var obj3 = new ObjectFake();

            obj3.name       = "ee";
            obj3.theDecimal = 11;
            obj3.objectList = null;
            obj3.stringList = new List <string>()
            {
                "ee"
            };

            obj2.theDecimal = 11;
            if (objectComparator.AreEqual(obj1, obj2, true) == true)
            {
                throw new Exception();
            }
        }
示例#8
0
        static void Main(string[] args)
        {
            Logger.Info("Starting a Schema comparator application.");

            List <string> connectionStrings = null;

            try
            {
                if (args.Length == 4)
                {
                    _settings = new Settings(args[0], args[1], args[2], args[3]);
                }
                else
                {
                    throw new ArgumentOutOfRangeException();
                }
                connectionStrings = Settings.GetDatabaseConnectionStrings(Settings.SettingsObject);
            }
            catch (ArgumentOutOfRangeException ex)
            {
                Logger.Error(ex, "Invalid arguments count");
                Environment.Exit((int)ExitCodes.InvalidArguments);
            }
            catch (Exception ex)
            {
                Logger.Error(ex, "Unexpected error");
                Environment.Exit((int)ExitCodes.UnexpectedError);
            }

            Xml xml = new Xml();

            // List<string> stringList = new List<string>();
            // stringList.Add("Data Source=(LocalDB)\\MSSQLLocalDB;Initial Catalog=DBComparatorTest1;Integrated Security=True");
            // stringList.Add("Data Source=(LocalDB)\\MSSQLLocalDB;Initial Catalog=DBComparatorTest2;Integrated Security=True");
            // var comparator = new ObjectComparator(stringList.ElementAt(0), stringList.ElementAt(1));

            var dbType     = BaseDatabase.GetDatabaseType(Settings.SettingsObject.DatabaseConnections.First().DbType);
            var comparator = new ObjectComparator(connectionStrings.ElementAt(0), connectionStrings.ElementAt(1), dbType);
            var resultTree = comparator.CompareDatabases();

            var    resultPath = Settings.SettingsObject.ResultPath;
            string xmlContent = xml.GetXml(resultTree);

            xml.SaveResultTree(resultPath, xmlContent);

            // List of all nodes within a Tree Structure
            // var listofnodes = Extensions.DepthFirstTraversal(resultTree, r => r.Nodes).ToList();

            Logger.Info("Exiting application.");
            Environment.Exit((int)ExitCodes.Success);
        }
        public void DeployScript(string pathToScript, TestNodes mainTestNode, DatabaseHandler db)
        {
            try
            {
                var msScriptParser = new MsSqlScriptParser();

                var deployTestNode = ObjectComparator.CreateTestNode(new List <TestResult>(), ObjectType.ScriptTests,
                                                                     "Set of tests for Script");

                var scriptFromFile = File.ReadAllText(Path.Combine(pathToScript));

                var parsedScript = msScriptParser.GetScriptArray(scriptFromFile);

                var dbCreated = msScriptParser.ExecuteTransactionScript(parsedScript, db.Database);

                if (dbCreated)
                {
                    return;
                }

                ObjectComparator.AddTestResult($"Creation of Database objects failed. Databaes: {db.Database.ConnectionString}",
                                               ErrorTypes.CreationScriptFailed,
                                               ObjectType.Script,
                                               $"Script: {pathToScript}",
                                               deployTestNode.Results);

                ObjectComparator.SetResultLevel(deployTestNode);

                mainTestNode.Nodes.Add(deployTestNode);

                var resultPath = Settings.SettingsObject.ResultPath;

                Xml xmlCreator = new Xml();

                var xmlContent = xmlCreator.GetXml(mainTestNode);

                xmlCreator.SaveResultTree(resultPath, xmlContent);
                Environment.Exit((int)ExitCodes.ScriptFailed);
            }
            catch (IOException ex)
            {
                Logger.Error(ex, "Unable to finish script file.");
                Environment.Exit((int)ExitCodes.ScriptFailed);
            }
            catch (Exception ex)
            {
                Logger.Error(ex, "Error when executing script file.");
                Environment.Exit((int)ExitCodes.ScriptFailed);
            }
        }
        } //  getName()

        // public override Comparator<object> getComparator()
        public IComparer <object> getComparator()
        {
            if (isTimeBased())
            {
                return(TimeComparator.getComparator());
            }
            if (isNumber())
            {
                return(NumberComparator.getComparator());
            }
            if (isLiteral())
            {
                return(ToStringComparator.getComparator());
            }
            return(ObjectComparator.getComparator());
        } // getComparator()
        public void ThenShouldPassWhenValuesDifferByCaseAndRootPropertyOptionsAreApplied()
        {
            var stringComparator = new ObjectComparator<string>();
            stringComparator.Root
                .WithCaseSensitivity(StringComparison.OrdinalIgnoreCase);

            var result = stringComparator.Compare("AAA", "aaa");
            result.AreSame.Should().BeTrue();
        }
        public void ThenShouldFailWhenExpressionRuleAndNestedPropertyDiffers()
        {
            var comparator = new ObjectComparator<HierarchyDomain>();
            comparator
                .Property(x => x.Name)
                .Ignore();

            var objA = new HierarchyDomain
            {
                Name = "AAA",
                ChildNode = new HierarchyDomain
                {
                    Name = "BBB"
                }
            };

            var objB = new HierarchyDomain
            {
                Name = "AAA",
                ChildNode = new HierarchyDomain
                {
                    Name = "CCC"
                }
            };

            var result = comparator.Compare(objA, objB);
            result.AreSame.Should().BeFalse();
            result.Differences.Single().PropertyPath.Should().Be("ChildNode.Name");
        }
 public void Setup()
 {
     this.comparator = Extensions.CreateComparator<ComplexDomain>();
 }
 public virtual void Setup()
 {
     this.Comparator = Extensions.CreateComparator<SimpleDomain>();
 }
 public void Setup()
 {
     this.objA = new GenericDomain<object>();
     this.objB = new GenericDomain<object>();
     this.comparator = new ObjectComparator<GenericDomain<object>>();
 }
 public void Setup()
 {
     this.objA = new GenericDomain<int?>();
     this.objB = new GenericDomain<int?>();
     this.comparator = Extensions.CreateComparator<GenericDomain<int?>>();
 }
示例#17
0
        static void Main(string[] args)
        {
            //Create Test Tree
            var mainTestNode = ObjectComparator.CreateTestNode(new List <TestResult>(), ObjectType.Root, "Root node");

            try
            {
                if (args.Length == 4 && args[2].ToLower() == "delete")
                {
                    // Read arguments
                    string       connectionString = args[0];
                    string       databaseType     = args[1].ToLower();
                    string       resultPath       = args[3];
                    DatabaseType dbType           = BaseDatabase.GetDatabaseType(databaseType);
                    _settings = new Settings(connectionString, resultPath, databaseType);
                    try
                    {
                        switch (dbType)
                        {
                        case DatabaseType.SqlServer:
                            var deploy            = new MsSqlDeploy();
                            var connStringBuilder = Settings.GetMsSqlStringBuilder(connectionString);
                            var dbName            = connStringBuilder.InitialCatalog;
                            connStringBuilder.Remove("Initial Catalog");
                            var connStringWithoutCatalog = connStringBuilder.ConnectionString;
                            deploy.DeleteDatabase(dbName, connStringWithoutCatalog, dbType);
                            break;

                        case DatabaseType.MySql:
                            var deploy1                   = new MySqlDeploy();
                            var connStringBuilder1        = Settings.GetMySqlStringBuilder(connectionString);
                            var dbName1                   = connStringBuilder1.Database;
                            var connStringWithoutCatalog1 = connStringBuilder1.ConnectionString;
                            deploy1.DeleteDatabase(dbName1, connStringWithoutCatalog1, dbType);
                            break;

                        default:
                            throw new ArgumentOutOfRangeException();
                        }
                    }
                    catch (ArgumentOutOfRangeException ex)
                    {
                        Logger.Error(ex, $"Unsupported database type {databaseType}");
                        Environment.Exit((int)ExitCodes.InvalidArguments);
                    }
                    catch (Exception ex)
                    {
                        Logger.Error(ex, $"Unexpected exception occured.");
                        Environment.Exit((int)ExitCodes.UnsupportedDbType);
                    }

                    Environment.Exit((int)ExitCodes.Success);
                }
                else if (args.Length == 4)
                {
                    Logger.Info("Running deploying script task.");
                    // Read arguments
                    string connectionString = args[0];


                    string       databaseType = args[1];
                    DatabaseType dbType       = BaseDatabase.GetDatabaseType(databaseType);

                    string pathToScript = args[2];
                    string resultPath   = args[3];

                    Logger.Debug($"Arguments passed \narg[0]:{connectionString} \narg[1]:{databaseType} \narg[2]:{pathToScript} \narg[3]:{resultPath}.");

                    _settings = new Settings(connectionString, resultPath, databaseType);
                    try
                    {
                        switch (dbType)
                        {
                        case DatabaseType.SqlServer:
                            var deploy            = new MsSqlDeploy();
                            var connStringBuilder = Settings.GetMsSqlStringBuilder(connectionString);
                            var dbName            = connStringBuilder.InitialCatalog;
                            connStringBuilder.Remove("Initial Catalog");
                            var connStringWithoutCatalog = connStringBuilder.ConnectionString;
                            deploy.DeployDatabase(mainTestNode, connectionString, dbName, connStringWithoutCatalog, dbType, pathToScript);
                            break;

                        case DatabaseType.MySql:
                            var deploy1            = new MySqlDeploy();
                            var connStringBuilder1 = Settings.GetMySqlStringBuilder(connectionString);
                            var dbName1            = connStringBuilder1.Database;
                            connStringBuilder1.Remove("Database");
                            var connStringWithoutCatalog1 = connStringBuilder1.ConnectionString;
                            deploy1.DeployDatabase(mainTestNode, connectionString, dbName1, connStringWithoutCatalog1, dbType, pathToScript);
                            break;

                        default:
                            throw new ArgumentOutOfRangeException();
                        }
                        Logger.Info("Task successful.");
                        Environment.Exit((int)ExitCodes.Success);
                    }
                    catch (ArgumentOutOfRangeException ex)
                    {
                        Logger.Error(ex, $"Unsupported database type {databaseType}");
                        Environment.Exit((int)ExitCodes.InvalidArguments);
                    }
                    catch (Exception ex)
                    {
                        Logger.Error(ex, "Unexpected exception occured.");
                        Environment.Exit((int)ExitCodes.UnexpectedError);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex,
                             $"Invalid input argument count [{args.Length}]. Exactly arguments 3 required.");
                Environment.Exit((int)ExitCodes.InvalidArguments);
            }
        }