예제 #1
0
        public void TestConstructors()
        {
            var e = new MergeException();

            e = new MergeException("hallo");
            Assert.AreEqual("hallo", e.Message);

            e = new MergeException("hallo", new Exception("inner"));
            Assert.AreEqual("hallo", e.Message);
            Assert.AreEqual("inner", e.InnerException.Message);
        }
예제 #2
0
        public void TestConstructors()
        {
            var e = new MergeException();

            e = new MergeException("hallo");
            Assert.AreEqual("hallo", e.Message);

            e = new MergeException("hallo", new Exception("inner"));
            Assert.AreEqual("hallo", e.Message);
            Assert.AreEqual("inner", e.InnerException.Message);
        }
예제 #3
0
        public void SerializationBinary()
        {
            MergeException r1 = new MergeException("hallo");

            using (var memoryStream = new MemoryStream())
            {
                BinaryFormatter formatter = new BinaryFormatter();
                formatter.Serialize(memoryStream, r1);

                memoryStream.Position = 0;

                formatter = new BinaryFormatter();
                var r2 = (MergeException)formatter.Deserialize(memoryStream);

                Assert.AreEqual(r1.Message, r2.Message);
            }
        }
예제 #4
0
        public void SerializationBinary()
        {
            MergeException r1 = new MergeException("hallo");

            using (var memoryStream = new MemoryStream())
            {
                BinaryFormatter formatter = new BinaryFormatter();
                formatter.Serialize(memoryStream, r1);

                memoryStream.Position = 0;

                formatter = new BinaryFormatter();
                var r2 = (MergeException)formatter.Deserialize(memoryStream);

                Assert.AreEqual(r1.Message, r2.Message);
            }
        }
예제 #5
0
        internal void AnalyseFile(IAnalysisProgressHelper progressHelper, ProjectFileTreeNode fileNode)
        {
            if (fileNode == null || fileNode.AssociatedFile == null)
            {
                return;
            }

            fileNode.Status = ProjectFileStatusEnum.Busy;
            progressHelper.ReportProgress(10, new AnalyseFilesProgress(progressHelper.Count, numExactCopy, numResolved, numConflicts, numAnalysisErrors + numGenerationErrors, numNewFiles, fileNode.Path, fileNode.Status));

            try
            {
                fileNode.AssociatedFile.LoadCustomMatches(controller.GetTempFilePathForComponent(ComponentKey.SlyceMerge_PrevGen));
                bool result = fileNode.AssociatedFile.PerformDiff();

                if (result == false)
                {
                    fileNode.Status = ProjectFileStatusEnum.AnalysisError;
                    numAnalysisErrors++;
                    return;
                }
            }
            catch (DiffException e)
            {
                if (e.InnerException == null || e.InnerException is MergeException == false)
                {
                    throw;
                }

                MergeException mergeEx = (MergeException)e.InnerException;
                // There was an error during the Merge. Display this to the user.
                fileNode.Status     = ProjectFileStatusEnum.MergeError;
                fileNode.MergeError = new MergeError(mergeEx.BaseConstructName, mergeEx.BaseConstructType, mergeEx.Message);
                numAnalysisErrors++;
                return;
            }

            fileNode.Status = ProjectFileStatusEnum.AnalysedFile;

            switch (fileNode.AssociatedFile.CurrentDiffResult.DiffType)
            {
            case TypeOfDiff.Conflict:
                numConflicts++;
                break;

            case TypeOfDiff.ExactCopy:
                numExactCopy++;
                break;

            case TypeOfDiff.UserAndTemplateChange:
            case TypeOfDiff.UserChangeOnly:
            case TypeOfDiff.TemplateChangeOnly:
                numResolved++;
                break;

            case TypeOfDiff.Warning:
                // TODO: handle warnings
                break;

            case TypeOfDiff.NewFile:
                numNewFiles++;
                break;

            default:
                throw new NotImplementedException("Not coded yet: " + fileNode.AssociatedFile.CurrentDiffResult.DiffType);
            }
        }