Index: Core/Common/src/Core.Common.Base/Data/Range.cs =================================================================== diff -u -r01fc0f1b596116c79b171cef86dd3c1c0cd996c5 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Base/Data/Range.cs (.../Range.cs) (revision 01fc0f1b596116c79b171cef86dd3c1c0cd996c5) +++ Core/Common/src/Core.Common.Base/Data/Range.cs (.../Range.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -42,6 +42,7 @@ { throw new ArgumentException(@"Minimum must be smaller or equal to Maximum.", nameof(min)); } + Minimum = min; Maximum = max; } @@ -79,6 +80,7 @@ var formattableMaximum = (IFormattable) Maximum; return $"[{formattableMinimum.ToString(format, formatProvider)}, {formattableMaximum.ToString(format, formatProvider)}]"; } + return ToString(); } } Index: Core/Common/src/Core.Common.Base/Data/RoundedDouble.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Base/Data/RoundedDouble.cs (.../RoundedDouble.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/src/Core.Common.Base/Data/RoundedDouble.cs (.../RoundedDouble.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -135,6 +135,7 @@ { return this; } + return new RoundedDouble(newNumberOfDecimalPlaces, Value); } @@ -184,10 +185,12 @@ { return false; } + if (obj.GetType() != GetType()) { return false; } + return Equals((RoundedDouble) obj); } @@ -247,6 +250,7 @@ { return Resources.RoundedDouble_ToString_PositiveInfinity; } + if (double.IsNegativeInfinity(Value)) { return Resources.RoundedDouble_ToString_NegativeInfinity; @@ -257,9 +261,7 @@ private static double RoundDouble(double value, int numberOfDecimalPlaces) { - return IsSpecialDoubleValue(value) ? - value : - Math.Round(value, numberOfDecimalPlaces, MidpointRounding.AwayFromZero); + return IsSpecialDoubleValue(value) ? value : Math.Round(value, numberOfDecimalPlaces, MidpointRounding.AwayFromZero); } /// Index: Core/Common/src/Core.Common.Base/Data/RoundedPoint2DCollection.cs =================================================================== diff -u -rddfbcebcaa9061cbd6a374da318263b2efed6808 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Base/Data/RoundedPoint2DCollection.cs (.../RoundedPoint2DCollection.cs) (revision ddfbcebcaa9061cbd6a374da318263b2efed6808) +++ Core/Common/src/Core.Common.Base/Data/RoundedPoint2DCollection.cs (.../RoundedPoint2DCollection.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -50,6 +50,7 @@ { throw new ArgumentNullException(nameof(originalPoints)); } + if (numberOfDecimalPlaces < 0 || numberOfDecimalPlaces > RoundedDouble.MaximumNumberOfDecimalPlaces) { throw new ArgumentOutOfRangeException(nameof(numberOfDecimalPlaces), @"Value must be in range [0, 15]."); Index: Core/Common/src/Core.Common.Base/Geometry/Math2D.cs =================================================================== diff -u -r2644c4d5f25dd42ab6135295bb78e18b6f2ab7e7 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Base/Geometry/Math2D.cs (.../Math2D.cs) (revision 2644c4d5f25dd42ab6135295bb78e18b6f2ab7e7) +++ Core/Common/src/Core.Common.Base/Geometry/Math2D.cs (.../Math2D.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -56,10 +56,12 @@ { throw new ArgumentException(Resources.Math2D_SplitLineAtLengths_All_lengths_cannot_be_negative, nameof(lengths)); } + if (linePoints.Count() <= 1) { throw new ArgumentException(Resources.Math2D_SplitLineAtLengths_Not_enough_points_to_make_line, nameof(linePoints)); } + Segment2D[] lineSegments = ConvertPointsToLineSegments(linePoints).ToArray(); if (Math.Abs(lengths.Sum(l => l) - lineSegments.Sum(s => s.Length)) > epsilonForComparisons) @@ -146,18 +148,22 @@ { throw new ArgumentNullException(nameof(line1Point1)); } + if (line1Point2 == null) { throw new ArgumentNullException(nameof(line1Point2)); } + if (line2Point1 == null) { throw new ArgumentNullException(nameof(line2Point1)); } + if (line2Point2 == null) { throw new ArgumentNullException(nameof(line2Point2)); } + if (line1Point1.Equals(line1Point2) || line2Point1.Equals(line2Point2)) { throw new ArgumentException(Resources.Math2D_LineIntersectionWithLine_Line_points_are_equal); @@ -196,10 +202,12 @@ { throw new ArgumentNullException(nameof(point1)); } + if (point2 == null) { throw new ArgumentNullException(nameof(point2)); } + return Math.Abs(point1.X - point2.X) < epsilonForComparisons && Math.Abs(point1.Y - point2.Y) < epsilonForComparisons; } @@ -258,6 +266,7 @@ { length += previousPoint.GetEuclideanDistanceTo(point); } + previousPoint = point; } @@ -280,6 +289,7 @@ { throw new ArgumentNullException(nameof(segment1)); } + if (segment2 == null) { throw new ArgumentNullException(nameof(segment2)); @@ -309,6 +319,7 @@ // ... but not collinear, so no intersection possible: return Segment2DIntersectSegment2DResult.CreateNoIntersectResult(); } + // Segments are at an angle and may intersect: double sI = PerpDotProduct(v, w) / d; if (sI < 0.0 || sI > 1.0) @@ -345,6 +356,7 @@ { throw new ArgumentOutOfRangeException(nameof(fraction), @"Fraction needs to be defined in range [0.0, 1.0] in order to reliably interpolate."); } + Vector segmentVector = lineSegment.SecondPoint - lineSegment.FirstPoint; return lineSegment.FirstPoint + segmentVector.Multiply(fraction); } @@ -366,6 +378,7 @@ { throw new ArgumentNullException(nameof(pointA)); } + if (pointB == null) { throw new ArgumentNullException(nameof(pointB)); @@ -403,13 +416,15 @@ t0 = w[1] / v[1]; t1 = w2[1] / v[1]; } + // Require t0 to be smaller than t1, swapping if needed: if (t0 > t1) { double tempSwapVariable = t0; t0 = t1; t1 = tempSwapVariable; } + if (t0 > 1.0 || t1 < 0.0) { // There is no overlap: @@ -424,6 +439,7 @@ // Segments intersect at a point: return Segment2DIntersectSegment2DResult.CreateIntersectionResult(intersectionPoint1); } + // Segments overlap: Point2D intersectionPoint2 = segment2.FirstPoint + v.Multiply(t1); return Segment2DIntersectSegment2DResult.CreateOverlapResult(intersectionPoint1, intersectionPoint2); @@ -453,6 +469,7 @@ ? Segment2DIntersectSegment2DResult.CreateIntersectionResult(segment1.FirstPoint) : Segment2DIntersectSegment2DResult.CreateNoIntersectResult(); } + { return IsPointInCollinearSegment(segment1.FirstPoint, segment2) ? Segment2DIntersectSegment2DResult.CreateIntersectionResult(segment1.FirstPoint) @@ -473,6 +490,7 @@ double maxY = Math.Max(colinearSegment.FirstPoint.Y, colinearSegment.SecondPoint.Y); return minY <= point.Y && point.Y <= maxY; } + double minX = Math.Min(colinearSegment.FirstPoint.X, colinearSegment.SecondPoint.X); double maxX = Math.Max(colinearSegment.FirstPoint.X, colinearSegment.SecondPoint.X); return minX <= point.X && point.X <= maxX; @@ -549,6 +567,7 @@ splitResults[i] = subLine.ToArray(); } + return splitResults; } Index: Core/Common/src/Core.Common.Base/Geometry/Point2D.cs =================================================================== diff -u -r569a286badd9b3494f5465cc2767a8cf6a77f618 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Base/Geometry/Point2D.cs (.../Point2D.cs) (revision 569a286badd9b3494f5465cc2767a8cf6a77f618) +++ Core/Common/src/Core.Common.Base/Geometry/Point2D.cs (.../Point2D.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -85,6 +85,7 @@ { throw new ArgumentNullException(nameof(p1)); } + if (p2 == null) { throw new ArgumentNullException(nameof(p2)); @@ -115,6 +116,7 @@ { throw new ArgumentNullException(nameof(point)); } + if (vector == null) { throw new ArgumentNullException(nameof(vector)); @@ -127,6 +129,7 @@ vector.Count); throw new ArgumentException(message, nameof(vector)); } + double x = point.X + vector[0]; double y = point.Y + vector[1]; return new Point2D(x, y); @@ -156,14 +159,17 @@ { return false; } + if (ReferenceEquals(this, obj)) { return true; } + if (obj.GetType() != GetType()) { return false; } + return Equals((Point2D) obj); } Index: Core/Common/src/Core.Common.Base/Geometry/Point2DCollectionExtensions.cs =================================================================== diff -u -rdf853f988ad99b935860c361bc000f6aba9876a7 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Base/Geometry/Point2DCollectionExtensions.cs (.../Point2DCollectionExtensions.cs) (revision df853f988ad99b935860c361bc000f6aba9876a7) +++ Core/Common/src/Core.Common.Base/Geometry/Point2DCollectionExtensions.cs (.../Point2DCollectionExtensions.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -47,6 +47,7 @@ { throw new ArgumentNullException(nameof(points)); } + double[] lCoordinates = points.Select(p => p.X).ToArray(); for (var i = 1; i < lCoordinates.Length; i++) { @@ -55,6 +56,7 @@ return true; } } + return false; } } Index: Core/Common/src/Core.Common.Base/Geometry/Point3D.cs =================================================================== diff -u -rb25480536a8c434ef900066c8601480fc0959d1c -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Base/Geometry/Point3D.cs (.../Point3D.cs) (revision b25480536a8c434ef900066c8601480fc0959d1c) +++ Core/Common/src/Core.Common.Base/Geometry/Point3D.cs (.../Point3D.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -81,14 +81,17 @@ { return false; } + if (ReferenceEquals(this, obj)) { return true; } + if (obj.GetType() != GetType()) { return false; } + return Equals((Point3D) obj); } Index: Core/Common/src/Core.Common.Base/Geometry/Point3DCollectionExtensions.cs =================================================================== diff -u -r521fd4ed7406936caea01ab793ae9dbfeec69cc5 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Base/Geometry/Point3DCollectionExtensions.cs (.../Point3DCollectionExtensions.cs) (revision 521fd4ed7406936caea01ab793ae9dbfeec69cc5) +++ Core/Common/src/Core.Common.Base/Geometry/Point3DCollectionExtensions.cs (.../Point3DCollectionExtensions.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -44,6 +44,7 @@ { throw new ArgumentNullException(nameof(points)); } + int count = points.Count(); if (count == 0) { @@ -80,6 +81,7 @@ { throw new ArgumentNullException(nameof(points)); } + Point3D lastPoint = null; foreach (Point3D point in points) { @@ -90,6 +92,7 @@ lastPoint = point; } + return true; } Index: Core/Common/src/Core.Common.Base/Geometry/Point3DExtensions.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Base/Geometry/Point3DExtensions.cs (.../Point3DExtensions.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/src/Core.Common.Base/Geometry/Point3DExtensions.cs (.../Point3DExtensions.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -50,10 +50,12 @@ { throw new ArgumentNullException(nameof(worldCoordinate)); } + if (startWorldCoordinate == null) { throw new ArgumentNullException(nameof(startWorldCoordinate)); } + if (endWorldCoordinate == null) { throw new ArgumentNullException(nameof(endWorldCoordinate)); Index: Core/Common/src/Core.Common.Base/Geometry/Segment2D.cs =================================================================== diff -u -r569a286badd9b3494f5465cc2767a8cf6a77f618 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Base/Geometry/Segment2D.cs (.../Segment2D.cs) (revision 569a286badd9b3494f5465cc2767a8cf6a77f618) +++ Core/Common/src/Core.Common.Base/Geometry/Segment2D.cs (.../Segment2D.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -44,10 +44,12 @@ { throw new ArgumentNullException(nameof(first), Resources.Segment2D_Constructor_Segment_must_be_created_with_two_points); } + if (second == null) { throw new ArgumentNullException(nameof(second), Resources.Segment2D_Constructor_Segment_must_be_created_with_two_points); } + FirstPoint = first; SecondPoint = second; Length = FirstPoint.GetEuclideanDistanceTo(SecondPoint); @@ -124,6 +126,7 @@ // 'point' falls outside the perpendicular area defined by segment, specifically: Zone A return point.GetEuclideanDistanceTo(FirstPoint); } + // 2. Use denominator part of vector projection to determine relative location of 'point': double dotProductSegmentVector = segmentVector.DotProduct(segmentVector); if (dotProductSegmentVector <= dotProductOrientationVector) @@ -148,14 +151,17 @@ { return false; } + if (ReferenceEquals(this, obj)) { return true; } + if (obj.GetType() != GetType()) { return false; } + return Equals((Segment2D) obj); } Index: Core/Common/src/Core.Common.Base/ObservableUniqueItemCollectionWithSourcePath.cs =================================================================== diff -u -rac96d7c315129af851634ed5a4a6800b59ede718 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Base/ObservableUniqueItemCollectionWithSourcePath.cs (.../ObservableUniqueItemCollectionWithSourcePath.cs) (revision ac96d7c315129af851634ed5a4a6800b59ede718) +++ Core/Common/src/Core.Common.Base/ObservableUniqueItemCollectionWithSourcePath.cs (.../ObservableUniqueItemCollectionWithSourcePath.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -55,10 +55,12 @@ { throw new ArgumentNullException(nameof(getUniqueFeature)); } + if (typeDescriptor == null) { throw new ArgumentNullException(nameof(typeDescriptor)); } + if (featureDescription == null) { throw new ArgumentNullException(nameof(featureDescription)); @@ -115,6 +117,7 @@ { SourcePath = null; } + return remove; } @@ -146,10 +149,12 @@ { throw new ArgumentNullException(nameof(filePath)); } + if (!IOUtils.IsValidFilePath(filePath) && filePath.Length > 0) { throw new ArgumentException($@"'{filePath}' is not a valid file path.", nameof(filePath)); } + InternalValidateItems(items); SourcePath = filePath; @@ -184,6 +189,7 @@ { throw new ArgumentNullException(nameof(items)); } + if (items.Contains(null)) { throw new ArgumentException(@"Collection cannot contain null.", nameof(items)); Index: Core/Common/src/Core.Common.Base/Service/FileImportActivity.cs =================================================================== diff -u -r76948e8765899b35776102ecd211d3d7575a9e4d -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Base/Service/FileImportActivity.cs (.../FileImportActivity.cs) (revision 76948e8765899b35776102ecd211d3d7575a9e4d) +++ Core/Common/src/Core.Common.Base/Service/FileImportActivity.cs (.../FileImportActivity.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -45,6 +45,7 @@ { throw new ArgumentNullException(nameof(fileImporter)); } + if (description == null) { throw new ArgumentNullException(nameof(description)); Index: Core/Common/src/Core.Common.Base/TypeConverters/RoundedDoubleConverter.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Base/TypeConverters/RoundedDoubleConverter.cs (.../RoundedDoubleConverter.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/src/Core.Common.Base/TypeConverters/RoundedDoubleConverter.cs (.../RoundedDoubleConverter.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -39,6 +39,7 @@ { return true; } + return base.CanConvertFrom(context, sourceType); } @@ -68,6 +69,7 @@ exception); } } + return base.ConvertFrom(context, culture, value); } } Index: Core/Common/src/Core.Common.Controls.TreeView/TreeViewControl.cs =================================================================== diff -u -r94f14096f9a5565b9f961c7b7e1822ef0976a42a -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Controls.TreeView/TreeViewControl.cs (.../TreeViewControl.cs) (revision 94f14096f9a5565b9f961c7b7e1822ef0976a42a) +++ Core/Common/src/Core.Common.Controls.TreeView/TreeViewControl.cs (.../TreeViewControl.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -352,6 +352,7 @@ { components?.Dispose(); } + base.Dispose(disposing); } @@ -389,6 +390,7 @@ { return treeNodeInfo.ChildNodeObjects(treeNode.Tag).Any(childData => CanRemove(GetNodeByTag(childData))); } + return false; } @@ -595,6 +597,7 @@ treeNode.Checked = !treeNode.Checked; treeView.AfterCheck += TreeViewAfterCheck; } + treeNode.StateImageIndex = treeNode.Checked ? checkedCheckBoxStateImageIndex : uncheckedCheckBoxStateImageIndex; } @@ -818,6 +821,11 @@ GC.SuppressFinalize(this); } + public void UpdateObserver() + { + treeViewControl.UpdateNode(treeNode); + } + protected virtual void Dispose(bool disposing) { if (disposing) @@ -826,11 +834,6 @@ observable?.Detach(this); } } - - public void UpdateObserver() - { - treeViewControl.UpdateNode(treeNode); - } } #endregion @@ -884,6 +887,7 @@ { UpdateNode(treeView.SelectedNode); } + break; } case Keys.F2: // Start editing the label of the selected tree node @@ -906,6 +910,7 @@ selectedNode.ContextMenuStrip.Show(location); } + break; } case Keys.Enter: // Perform the same action as on double click Index: Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewColumnStateDefinition.cs =================================================================== diff -u -re70ebc9ab2c8e78aab2ade9ae3b760ebbd997e49 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewColumnStateDefinition.cs (.../DataGridViewColumnStateDefinition.cs) (revision e70ebc9ab2c8e78aab2ade9ae3b760ebbd997e49) +++ Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewColumnStateDefinition.cs (.../DataGridViewColumnStateDefinition.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -34,6 +34,7 @@ Style = CellStyle.Enabled; ErrorText = string.Empty; } + /// /// Get or sets the read only state. /// @@ -49,4 +50,4 @@ /// public string ErrorText { get; set; } } -} +} \ No newline at end of file Index: Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewComboBoxItemWrapper.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewComboBoxItemWrapper.cs (.../DataGridViewComboBoxItemWrapper.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewComboBoxItemWrapper.cs (.../DataGridViewComboBoxItemWrapper.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -73,14 +73,17 @@ { return false; } + if (ReferenceEquals(this, obj)) { return true; } + if (obj.GetType() != GetType()) { return false; } + return Equals((DataGridViewComboBoxItemWrapper) obj); } Index: Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewControlCellFormatExtensions.cs =================================================================== diff -u -r641147134a5785ec9a090a1a9966a0b15e74999b -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewControlCellFormatExtensions.cs (.../DataGridViewControlCellFormatExtensions.cs) (revision 641147134a5785ec9a090a1a9966a0b15e74999b) +++ Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewControlCellFormatExtensions.cs (.../DataGridViewControlCellFormatExtensions.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -39,7 +39,7 @@ /// is null. /// Thrown when the /// or the does not exist. - public static void FormatCellWithColumnStateDefinition(this DataGridViewControl dataGridViewControl, int rowIndex, int columnIndex) + public static void FormatCellWithColumnStateDefinition(this DataGridViewControl dataGridViewControl, int rowIndex, int columnIndex) { if (dataGridViewControl == null) { Index: Core/Common/src/Core.Common.Controls/PresentationObjects/WrappedObjectContextBase.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Controls/PresentationObjects/WrappedObjectContextBase.cs (.../WrappedObjectContextBase.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/src/Core.Common.Controls/PresentationObjects/WrappedObjectContextBase.cs (.../WrappedObjectContextBase.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -42,6 +42,7 @@ { throw new ArgumentNullException(nameof(wrappedData), @"Wrapped data of context cannot be null."); } + WrappedData = wrappedData; } @@ -58,14 +59,17 @@ { return false; } + if (other.GetType() != GetType()) { return false; } + if (ReferenceEquals(this, other)) { return true; } + return WrappedData.Equals(other.WrappedData); } Index: Core/Common/src/Core.Common.Geometry/AdvancedMath2D.cs =================================================================== diff -u -r9d61772d1a82e5dfbf99850a2b1410cb9a4bcdeb -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Geometry/AdvancedMath2D.cs (.../AdvancedMath2D.cs) (revision 9d61772d1a82e5dfbf99850a2b1410cb9a4bcdeb) +++ Core/Common/src/Core.Common.Geometry/AdvancedMath2D.cs (.../AdvancedMath2D.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -77,6 +77,7 @@ { throw new ArgumentNullException(nameof(line)); } + if (line.Count() < 2) { throw new ArgumentException(@"The line needs to have at least two points to be able to create a complete polygon.", nameof(line)); @@ -85,17 +86,6 @@ return GetPointsFromLine(line, completingPointsLevel); } - private static IEnumerable GetPointsFromLine(IEnumerable line, double completingPointsLevel) - { - foreach (Point2D point in line) - { - yield return point; - } - - yield return new Point2D(line.Last().X, completingPointsLevel); - yield return new Point2D(line.First().X, completingPointsLevel); - } - /// /// Transforms X coordinates in a 2D X, Y plane using: /// - A reference point as starting point of the line. @@ -115,6 +105,7 @@ { throw new ArgumentNullException(nameof(xCoordinates), @"Cannot transform to coordinates without a source."); } + if (referencePoint == null) { throw new ArgumentNullException(nameof(referencePoint), @"Cannot transform to coordinates without a reference point."); @@ -128,6 +119,17 @@ }).ToArray(); } + private static IEnumerable GetPointsFromLine(IEnumerable line, double completingPointsLevel) + { + foreach (Point2D point in line) + { + yield return point; + } + + yield return new Point2D(line.Last().X, completingPointsLevel); + yield return new Point2D(line.First().X, completingPointsLevel); + } + private static Polygon PointsToPolygon(IEnumerable points) { List pointList = points.ToList(); @@ -137,6 +139,7 @@ { pointList.Add(firstPoint); } + Coordinate[] coordinates = pointList.Select(p => new Coordinate(p.X, p.Y)).ToArray(); return new Polygon(new LinearRing(coordinates)); @@ -154,6 +157,7 @@ geometry.Coordinates.Distinct().Select(c => new Point2D(c.X, c.Y)).ToArray() }; } + return Enumerable.Empty(); } @@ -165,6 +169,7 @@ areas = areas.Union(BuildSeparateAreasFromCoordinateList(geometryCollection[i])).ToList(); } } + return areas; } } Index: Core/Common/src/Core.Common.Gui/Commands/GuiImportHandler.cs =================================================================== diff -u -rac96d7c315129af851634ed5a4a6800b59ede718 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/Commands/GuiImportHandler.cs (.../GuiImportHandler.cs) (revision ac96d7c315129af851634ed5a4a6800b59ede718) +++ Core/Common/src/Core.Common.Gui/Commands/GuiImportHandler.cs (.../GuiImportHandler.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -58,14 +58,17 @@ { throw new ArgumentNullException(nameof(dialogParent)); } + if (importInfos == null) { throw new ArgumentNullException(nameof(importInfos)); } + if (inquiryHelper == null) { throw new ArgumentNullException(nameof(inquiryHelper)); } + this.dialogParent = dialogParent; this.importInfos = importInfos; this.inquiryHelper = inquiryHelper; Index: Core/Common/src/Core.Common.Gui/Commands/GuiUpdateHandler.cs =================================================================== diff -u -rac96d7c315129af851634ed5a4a6800b59ede718 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/Commands/GuiUpdateHandler.cs (.../GuiUpdateHandler.cs) (revision ac96d7c315129af851634ed5a4a6800b59ede718) +++ Core/Common/src/Core.Common.Gui/Commands/GuiUpdateHandler.cs (.../GuiUpdateHandler.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -59,14 +59,17 @@ { throw new ArgumentNullException(nameof(dialogParent)); } + if (updateInfos == null) { throw new ArgumentNullException(nameof(updateInfos)); } + if (inquiryHelper == null) { throw new ArgumentNullException(nameof(inquiryHelper)); } + this.dialogParent = dialogParent; this.updateInfos = updateInfos; this.inquiryHelper = inquiryHelper; @@ -140,6 +143,7 @@ { filePath = inquiryHelper.GetSourceFileLocation(updateInfo.FileFilterGenerator.Filter); } + if (filePath != null && updateInfo.VerifyUpdates(target)) { RunUpdateActivity(updateInfo.CreateFileImporter(target, filePath), updateInfo.Name); Index: Core/Common/src/Core.Common.Gui/Commands/StorageCommandHandler.cs =================================================================== diff -u -rfae525350cc755ecc783bd4ac3fc13aed2e4ccaa -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/Commands/StorageCommandHandler.cs (.../StorageCommandHandler.cs) (revision fae525350cc755ecc783bd4ac3fc13aed2e4ccaa) +++ Core/Common/src/Core.Common.Gui/Commands/StorageCommandHandler.cs (.../StorageCommandHandler.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -74,6 +74,7 @@ { return true; } + IProject project = projectOwner.Project; projectPersistor.StageProject(project); try @@ -107,6 +108,7 @@ log.Info(Resources.StorageCommandHandler_NewProject_Creating_new_project_canceled); return; } + log.Info(Resources.Creating_new_project_started); projectOwner.SetProject(projectFactory.CreateNewProject(), null); log.Info(Resources.Creating_new_project_successful); @@ -290,6 +292,7 @@ ReleaseDatabaseFileHandle(); return SaveProject(); } + return true; } Index: Core/Common/src/Core.Common.Gui/ContextMenu/ContextMenuBuilder.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/ContextMenu/ContextMenuBuilder.cs (.../ContextMenuBuilder.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/src/Core.Common.Gui/ContextMenu/ContextMenuBuilder.cs (.../ContextMenuBuilder.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -76,6 +76,7 @@ { throw new ContextMenuBuilderException(Resources.ContextMenuBuilder_ContextMenuBuilder_Cannot_create_instances_of_factories, e); } + contextMenu = new ContextMenuStrip(); } @@ -151,6 +152,7 @@ { AddItem(new ToolStripSeparator()); } + return this; } @@ -170,6 +172,7 @@ contextMenu.Items.RemoveAt(lastIndex); } } + return contextMenu; } @@ -179,6 +182,7 @@ { return false; } + return !(contextMenu.Items[contextMenu.Items.Count - 1] is ToolStripSeparator); } Index: Core/Common/src/Core.Common.Gui/ContextMenu/GuiContextMenuItemFactory.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/ContextMenu/GuiContextMenuItemFactory.cs (.../GuiContextMenuItemFactory.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/src/Core.Common.Gui/ContextMenu/GuiContextMenuItemFactory.cs (.../GuiContextMenuItemFactory.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -66,31 +66,37 @@ throw new ArgumentNullException(nameof(applicationFeatureCommandHandler), Resources.GuiContextMenuItemFactory_Can_not_create_gui_context_menu_items_without_gui); } + if (importCommandHandler == null) { throw new ArgumentNullException(nameof(importCommandHandler), Resources.GuiContextMenuItemFactory_Can_not_create_gui_context_menu_items_without_import_handler); } + if (exportCommandHandler == null) { throw new ArgumentNullException(nameof(exportCommandHandler), Resources.GuiContextMenuItemFactory_Can_not_create_gui_context_menu_items_without_export_handler); } + if (updateCommandHandler == null) { throw new ArgumentNullException(nameof(updateCommandHandler), Resources.GuiContextMenuItemFactory_Can_not_create_gui_context_menu_items_without_update_handler); } + if (viewCommandsHandler == null) { throw new ArgumentNullException(nameof(viewCommandsHandler), Resources.GuiContextMenuItemFactory_Can_not_create_gui_context_menu_items_without_view_commands); } + if (dataObject == null) { throw new ArgumentNullException(nameof(dataObject), Resources.ContextMenuItemFactory_Can_not_create_context_menu_items_without_data); } + this.applicationFeatureCommandHandler = applicationFeatureCommandHandler; this.importCommandHandler = importCommandHandler; this.exportCommandHandler = exportCommandHandler; @@ -184,14 +190,17 @@ { throw new ArgumentException(@"Text should be set.", nameof(text)); } + if (toolTip == null) { throw new ArgumentNullException(nameof(toolTip)); } + if (image == null) { throw new ArgumentNullException(nameof(image)); } + return CreateImportItem(text, toolTip, image); } Index: Core/Common/src/Core.Common.Gui/Converters/ExpandableArrayConverter.cs =================================================================== diff -u -r2b62d771a30ac4a3a59b52efc9df88afbc6663b2 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/Converters/ExpandableArrayConverter.cs (.../ExpandableArrayConverter.cs) (revision 2b62d771a30ac4a3a59b52efc9df88afbc6663b2) +++ Core/Common/src/Core.Common.Gui/Converters/ExpandableArrayConverter.cs (.../ExpandableArrayConverter.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -62,6 +62,7 @@ properties[index] = CreateElementPropertyDescriptor(type, elementType, index); } } + return new PropertyDescriptorCollection(properties); } Index: Core/Common/src/Core.Common.Gui/Converters/KeyValueExpandableArrayConverter.cs =================================================================== diff -u -r6dfb859db2be89f278bf8eca8a4c0b0e15111b41 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/Converters/KeyValueExpandableArrayConverter.cs (.../KeyValueExpandableArrayConverter.cs) (revision 6dfb859db2be89f278bf8eca8a4c0b0e15111b41) +++ Core/Common/src/Core.Common.Gui/Converters/KeyValueExpandableArrayConverter.cs (.../KeyValueExpandableArrayConverter.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -71,6 +71,7 @@ properties[index] = new ArrayPropertyDescriptor(elementType, keyValueAttribute.GetName(source), keyValueAttribute.GetValue(source)); } } + return new PropertyDescriptorCollection(properties); } Index: Core/Common/src/Core.Common.Gui/DialogBasedInquiryHelper.cs =================================================================== diff -u -r0cd6c26fb55b1f274b1dbf9b95a136329a0e4b40 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/DialogBasedInquiryHelper.cs (.../DialogBasedInquiryHelper.cs) (revision 0cd6c26fb55b1f274b1dbf9b95a136329a0e4b40) +++ Core/Common/src/Core.Common.Gui/DialogBasedInquiryHelper.cs (.../DialogBasedInquiryHelper.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -48,6 +48,7 @@ { throw new ArgumentNullException(nameof(dialogParent)); } + this.dialogParent = dialogParent; } @@ -72,6 +73,7 @@ filePath = dialog.FileName; } } + return filePath; } @@ -96,6 +98,7 @@ filePath = dialog.FileName; } } + return filePath; } Index: Core/Common/src/Core.Common.Gui/ExceptionDialog.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/ExceptionDialog.cs (.../ExceptionDialog.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/src/Core.Common.Gui/ExceptionDialog.cs (.../ExceptionDialog.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -117,6 +117,7 @@ { saved = false; } + ShowMessageDialog( saved ? Resources.ExceptionDialog_ButtonSaveProjectClick_Successfully_saved_project : Resources.ExceptionDialog_ButtonSaveProjectClick_Saving_project_failed, saved ? Resources.ExceptionDialog_ButtonSaveProjectClick_Successfully_saved_project_caption : Resources.ExceptionDialog_ButtonSaveProjectClick_Saving_project_failed_caption); Index: Core/Common/src/Core.Common.Gui/Forms/MessageWindow/MessageWindow.cs =================================================================== diff -u -r569a286badd9b3494f5465cc2767a8cf6a77f618 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/Forms/MessageWindow/MessageWindow.cs (.../MessageWindow.cs) (revision 569a286badd9b3494f5465cc2767a8cf6a77f618) +++ Core/Common/src/Core.Common.Gui/Forms/MessageWindow/MessageWindow.cs (.../MessageWindow.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -113,6 +113,7 @@ { shortMessage = reader.ReadLine(); } + newMessages.Enqueue(new MessageData { ImageName = level.ToString(), @@ -207,12 +208,14 @@ filterFormat, Level.Info)); } + if (buttonShowWarning.Checked) { filterlines.Add(string.Format(CultureInfo.CurrentCulture, filterFormat, Level.Warn)); } + if (buttonShowError.Checked) { filterlines.Add(string.Format(CultureInfo.CurrentCulture, @@ -222,11 +225,12 @@ filterFormat, Level.Fatal)); } - return filterlines.Count == 0 ? - string.Format(CultureInfo.CurrentCulture, - filterFormat, - "NOTHING SHOWN") : - string.Join(" OR ", filterlines); + + return filterlines.Count == 0 + ? string.Format(CultureInfo.CurrentCulture, + filterFormat, + "NOTHING SHOWN") + : string.Join(" OR ", filterlines); } private void ShowMessageWindowDialog() @@ -314,6 +318,7 @@ { return; } + DataGridViewRow row = messagesDataGridView.Rows[e.RowIndex]; AutoSizeRow(row); } Index: Core/Common/src/Core.Common.Gui/Forms/MessageWindow/MessageWindowLogAppender.cs =================================================================== diff -u -rac96d7c315129af851634ed5a4a6800b59ede718 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/Forms/MessageWindow/MessageWindowLogAppender.cs (.../MessageWindowLogAppender.cs) (revision ac96d7c315129af851634ed5a4a6800b59ede718) +++ Core/Common/src/Core.Common.Gui/Forms/MessageWindow/MessageWindowLogAppender.cs (.../MessageWindowLogAppender.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -146,6 +146,7 @@ { AppendToMessageWindow(backLogLoggingEvent); } + messageBackLog.Clear(); } } Index: Core/Common/src/Core.Common.Gui/Forms/SelectViewDialog.cs =================================================================== diff -u -r9649e55312348f856051d40881b4e902b1a15a3b -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/Forms/SelectViewDialog.cs (.../SelectViewDialog.cs) (revision 9649e55312348f856051d40881b4e902b1a15a3b) +++ Core/Common/src/Core.Common.Gui/Forms/SelectViewDialog.cs (.../SelectViewDialog.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -150,6 +150,7 @@ DefaultViewName = listBox.SelectedItem.ToString(); } } + if (previousName != DefaultViewName) { listBox.Refresh(); Index: Core/Common/src/Core.Common.Gui/Forms/SplashScreen/SplashScreen.xaml.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/Forms/SplashScreen/SplashScreen.xaml.cs (.../SplashScreen.xaml.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/src/Core.Common.Gui/Forms/SplashScreen/SplashScreen.xaml.cs (.../SplashScreen.xaml.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -131,6 +131,7 @@ { LabelSupportPhoneNumber.Content = SupportPhoneNumber; } + if (LabelSupportEmailAddress.Content.ToString() != SupportEmail) { LabelSupportEmailAddress.Content = SupportEmail; Index: Core/Common/src/Core.Common.Gui/Forms/ViewHost/DocumentViewController.cs =================================================================== diff -u -r94f14096f9a5565b9f961c7b7e1822ef0976a42a -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/Forms/ViewHost/DocumentViewController.cs (.../DocumentViewController.cs) (revision 94f14096f9a5565b9f961c7b7e1822ef0976a42a) +++ Core/Common/src/Core.Common.Gui/Forms/ViewHost/DocumentViewController.cs (.../DocumentViewController.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -259,7 +259,8 @@ Dictionary viewTypeDictionary = viewInfoList.ToDictionary(vi => vi.Description ?? vi.ViewType.Name); using (var viewSelector = new SelectViewDialog(dialogParent) { - DefaultViewName = defaultViewName, Items = viewTypeDictionary.Keys.ToList() + DefaultViewName = defaultViewName, + Items = viewTypeDictionary.Keys.ToList() }) { if (viewSelector.ShowDialog() != DialogResult.OK) Index: Core/Common/src/Core.Common.Gui/GuiCore.cs =================================================================== diff -u -r6fc42a91bd445cd4896eb833ffb2fcd88a54cdbe -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/GuiCore.cs (.../GuiCore.cs) (revision 6fc42a91bd445cd4896eb833ffb2fcd88a54cdbe) +++ Core/Common/src/Core.Common.Gui/GuiCore.cs (.../GuiCore.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -97,18 +97,22 @@ { throw new ArgumentNullException(nameof(mainWindow)); } + if (projectStore == null) { throw new ArgumentNullException(nameof(projectStore)); } + if (projectMigrator == null) { throw new ArgumentNullException(nameof(projectMigrator)); } + if (projectFactory == null) { throw new ArgumentNullException(nameof(projectFactory)); } + if (fixedSettings == null) { throw new ArgumentNullException(nameof(fixedSettings)); @@ -739,6 +743,7 @@ } } } + return resultSet; } Index: Core/Common/src/Core.Common.Gui/OpenProjectActivity.cs =================================================================== diff -u -r01fc0f1b596116c79b171cef86dd3c1c0cd996c5 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/OpenProjectActivity.cs (.../OpenProjectActivity.cs) (revision 01fc0f1b596116c79b171cef86dd3c1c0cd996c5) +++ Core/Common/src/Core.Common.Gui/OpenProjectActivity.cs (.../OpenProjectActivity.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -64,6 +64,7 @@ { throw new ArgumentNullException(nameof(requiredOpenProjectProperties)); } + ValidateOpenProjectProperties(requiredOpenProjectProperties); if (optionalProjectMigrationProperties != null) { @@ -246,14 +247,17 @@ { throw new ArgumentException(@"Filepath should be set.", nameof(requiredOpenProjectProperties)); } + if (requiredOpenProjectProperties.ProjectOwner == null) { throw new ArgumentException(@"Project owner should be set.", nameof(requiredOpenProjectProperties)); } + if (requiredOpenProjectProperties.ProjectFactory == null) { throw new ArgumentException(@"Project factory should be set.", nameof(requiredOpenProjectProperties)); } + if (requiredOpenProjectProperties.ProjectStorage == null) { throw new ArgumentException(@"Project storage should be set.", nameof(requiredOpenProjectProperties)); @@ -272,6 +276,7 @@ { throw new ArgumentException(@"Project migrator should be set.", nameof(optionalProjectMigrationProperties)); } + if (optionalProjectMigrationProperties.MigrationFilePath == null) { throw new ArgumentException(@"Migration target file path should be set.", nameof(optionalProjectMigrationProperties)); Index: Core/Common/src/Core.Common.Gui/PropertyBag/DynamicPropertyBag.cs =================================================================== diff -u -r6949918830314633db5cc8c16bb2188779fffc93 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/PropertyBag/DynamicPropertyBag.cs (.../DynamicPropertyBag.cs) (revision 6949918830314633db5cc8c16bb2188779fffc93) +++ Core/Common/src/Core.Common.Gui/PropertyBag/DynamicPropertyBag.cs (.../DynamicPropertyBag.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -174,6 +174,7 @@ unorderedProperties.Add(pd); } + IEnumerable orderedProperties = propertiesWithOrdering.OrderBy(p => p.Item1).Select(p => p.Item2); return orderedProperties.Concat(unorderedProperties).ToArray(); Index: Core/Common/src/Core.Common.Gui/PropertyBag/IObjectProperties.cs =================================================================== diff -u -r1ab3d180b9a6ea55959a33564b11bea9a10db3c8 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/PropertyBag/IObjectProperties.cs (.../IObjectProperties.cs) (revision 1ab3d180b9a6ea55959a33564b11bea9a10db3c8) +++ Core/Common/src/Core.Common.Gui/PropertyBag/IObjectProperties.cs (.../IObjectProperties.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -29,13 +29,13 @@ public interface IObjectProperties { /// - /// Gets or sets the data of the object properties. + /// Fired when the property grid should be refreshed. /// - object Data { get; set; } + event EventHandler RefreshRequired; /// - /// Fired when the property grid should be refreshed. + /// Gets or sets the data of the object properties. /// - event EventHandler RefreshRequired; + object Data { get; set; } } } \ No newline at end of file Index: Core/Common/src/Core.Common.Gui/PropertyBag/PropertySpec.cs =================================================================== diff -u -r569a286badd9b3494f5465cc2767a8cf6a77f618 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/PropertyBag/PropertySpec.cs (.../PropertySpec.cs) (revision 569a286badd9b3494f5465cc2767a8cf6a77f618) +++ Core/Common/src/Core.Common.Gui/PropertyBag/PropertySpec.cs (.../PropertySpec.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -53,6 +53,7 @@ { throw new ArgumentNullException(nameof(propertyInfo)); } + if (propertyInfo.GetIndexParameters().Length > 0) { throw new ArgumentException(@"Index properties are not allowed.", nameof(propertyInfo)); @@ -67,6 +68,7 @@ { attributeList.Add(new ReadOnlyAttribute(true)); } + Attributes = new ReadOnlyCollection(attributeList); } @@ -199,6 +201,7 @@ } } } + return false; } } Index: Core/Common/src/Core.Common.Gui/PropertyBag/PropertySpecDescriptor.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/PropertyBag/PropertySpecDescriptor.cs (.../PropertySpecDescriptor.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/src/Core.Common.Gui/PropertyBag/PropertySpecDescriptor.cs (.../PropertySpecDescriptor.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -71,6 +71,7 @@ { return DynamicReadOnlyAttribute.IsReadOnly(instance, item.Name); } + return Attributes.Matches(ReadOnlyAttribute.Yes); } } @@ -83,6 +84,7 @@ { return DynamicVisibleAttribute.IsVisible(instance, item.Name); } + return !Attributes.Matches(BrowsableAttribute.No); } } @@ -112,6 +114,7 @@ { return new DynamicPropertyBag(propertyValue); } + return propertyValue; } @@ -131,6 +134,7 @@ { throw new ArgumentNullException(nameof(propertySpec)); } + return propertySpec; } } Index: Core/Common/src/Core.Common.Gui/SaveProjectActivity.cs =================================================================== diff -u -ra18e01acd69d8d0500f7cdc0420a8543786fcda1 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/SaveProjectActivity.cs (.../SaveProjectActivity.cs) (revision a18e01acd69d8d0500f7cdc0420a8543786fcda1) +++ Core/Common/src/Core.Common.Gui/SaveProjectActivity.cs (.../SaveProjectActivity.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -63,14 +63,17 @@ { throw new ArgumentNullException(nameof(project)); } + if (filePath == null) { throw new ArgumentNullException(nameof(filePath)); } + if (storeProject == null) { throw new ArgumentNullException(nameof(storeProject)); } + if (projectOwner == null) { throw new ArgumentNullException(nameof(projectOwner)); Index: Core/Common/src/Core.Common.Gui/UITypeEditors/SelectionEditor.cs =================================================================== diff -u -r19c2e039d6f50c9acf13aaad062d481a3d6e8dd3 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Gui/UITypeEditors/SelectionEditor.cs (.../SelectionEditor.cs) (revision 19c2e039d6f50c9acf13aaad062d481a3d6e8dd3) +++ Core/Common/src/Core.Common.Gui/UITypeEditors/SelectionEditor.cs (.../SelectionEditor.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -76,6 +76,7 @@ return listBox.SelectedItem; } } + return base.EditValue(context, provider, originalValue); } @@ -146,6 +147,7 @@ listBox.SelectedIndex = index; } } + listBox.EndUpdate(); return listBox; } Index: Core/Common/src/Core.Common.IO/Readers/IDataReaderExtensions.cs =================================================================== diff -u -r569a286badd9b3494f5465cc2767a8cf6a77f618 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.IO/Readers/IDataReaderExtensions.cs (.../IDataReaderExtensions.cs) (revision 569a286badd9b3494f5465cc2767a8cf6a77f618) +++ Core/Common/src/Core.Common.IO/Readers/IDataReaderExtensions.cs (.../IDataReaderExtensions.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -47,6 +47,7 @@ { throw new ArgumentNullException(nameof(dataReader)); } + if (columnName == null) { throw new ArgumentNullException(nameof(columnName)); Index: Core/Common/src/Core.Common.IO/SqLiteConnectionStringBuilder.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.IO/SqLiteConnectionStringBuilder.cs (.../SqLiteConnectionStringBuilder.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/src/Core.Common.IO/SqLiteConnectionStringBuilder.cs (.../SqLiteConnectionStringBuilder.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -45,6 +45,7 @@ const string message = @"Cannot create a connection string without the path to the file to connect to."; throw new ArgumentNullException(nameof(filePath), message); } + return new SQLiteConnectionStringBuilder { FailIfMissing = true, Index: Core/Common/src/Core.Common.Util/Attributes/ResourceHelper.cs =================================================================== diff -u -rac96d7c315129af851634ed5a4a6800b59ede718 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Util/Attributes/ResourceHelper.cs (.../ResourceHelper.cs) (revision ac96d7c315129af851634ed5a4a6800b59ede718) +++ Core/Common/src/Core.Common.Util/Attributes/ResourceHelper.cs (.../ResourceHelper.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -48,13 +48,15 @@ resourceType, resourceName); throw new InvalidOperationException(message); } + if (property.PropertyType != typeof(string)) { string message = string.Format(CultureInfo.CurrentCulture, "Resource {0} is not string.", resourceName); throw new InvalidOperationException(message); } + return (string) property.GetValue(null, null); } } Index: Core/Common/src/Core.Common.Util/Drawing/GraphicsExtensions.cs =================================================================== diff -u -rac96d7c315129af851634ed5a4a6800b59ede718 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Util/Drawing/GraphicsExtensions.cs (.../GraphicsExtensions.cs) (revision ac96d7c315129af851634ed5a4a6800b59ede718) +++ Core/Common/src/Core.Common.Util/Drawing/GraphicsExtensions.cs (.../GraphicsExtensions.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -48,6 +48,7 @@ { throw new ArgumentNullException(nameof(g)); } + if (image == null) { throw new ArgumentNullException(nameof(image)); Index: Core/Common/src/Core.Common.Util/EnumDisplayWrapper.cs =================================================================== diff -u -rac96d7c315129af851634ed5a4a6800b59ede718 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Util/EnumDisplayWrapper.cs (.../EnumDisplayWrapper.cs) (revision ac96d7c315129af851634ed5a4a6800b59ede718) +++ Core/Common/src/Core.Common.Util/EnumDisplayWrapper.cs (.../EnumDisplayWrapper.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -46,10 +46,12 @@ { throw new ArgumentNullException(nameof(value), @"An Enum type value is required."); } + if (!typeof(Enum).IsAssignableFrom(typeof(T))) { throw new InvalidTypeParameterException(@"The type parameter has to be an Enum type.", nameof(T)); } + Value = value; SetDisplayName(value); } Index: Core/Common/src/Core.Common.Util/Extensions/ComparableExtensions.cs =================================================================== diff -u -rac96d7c315129af851634ed5a4a6800b59ede718 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Util/Extensions/ComparableExtensions.cs (.../ComparableExtensions.cs) (revision ac96d7c315129af851634ed5a4a6800b59ede718) +++ Core/Common/src/Core.Common.Util/Extensions/ComparableExtensions.cs (.../ComparableExtensions.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -44,6 +44,7 @@ { return false; // Null not bigger then anything (or equal to null). } + if (object2 == null) { return true; // Anything is greater than null. @@ -131,10 +132,12 @@ { return min; } + if (value.IsBigger(max)) { return max; } + return value; } } Index: Core/Common/src/Core.Common.Util/Extensions/EnumerableExtensions.cs =================================================================== diff -u -rac96d7c315129af851634ed5a4a6800b59ede718 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Util/Extensions/EnumerableExtensions.cs (.../EnumerableExtensions.cs) (revision ac96d7c315129af851634ed5a4a6800b59ede718) +++ Core/Common/src/Core.Common.Util/Extensions/EnumerableExtensions.cs (.../EnumerableExtensions.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -45,6 +45,7 @@ { throw new ArgumentNullException(nameof(source)); } + if (action == null) { throw new ArgumentNullException(nameof(action)); @@ -71,10 +72,12 @@ { throw new ArgumentNullException(nameof(source)); } + if (keySelector == null) { throw new ArgumentNullException(nameof(keySelector)); } + return source.Select(keySelector).Count() != source.Select(keySelector).Distinct().Count(); } @@ -94,10 +97,12 @@ { throw new ArgumentNullException(nameof(source)); } + if (keySelector == null) { throw new ArgumentNullException(nameof(keySelector)); } + return source.Select(keySelector).Distinct().Count() > 1; } } Index: Core/Common/src/Core.Common.Util/Extensions/StringExtensions.cs =================================================================== diff -u -rac96d7c315129af851634ed5a4a6800b59ede718 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Util/Extensions/StringExtensions.cs (.../StringExtensions.cs) (revision ac96d7c315129af851634ed5a4a6800b59ede718) +++ Core/Common/src/Core.Common.Util/Extensions/StringExtensions.cs (.../StringExtensions.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -37,6 +37,7 @@ { return null; } + return string.Format(CultureInfo.CurrentCulture, "{0}", original); Index: Core/Common/src/Core.Common.Util/FileFilterGenerator.cs =================================================================== diff -u -rac96d7c315129af851634ed5a4a6800b59ede718 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Util/FileFilterGenerator.cs (.../FileFilterGenerator.cs) (revision ac96d7c315129af851634ed5a4a6800b59ede718) +++ Core/Common/src/Core.Common.Util/FileFilterGenerator.cs (.../FileFilterGenerator.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -30,14 +30,15 @@ /// public class FileFilterGenerator { - private readonly string extension = "*"; - private readonly string description = Resources.FileFilterGenerator_All_Files; - /// /// Creates a new instance of which filters out no /// file type. /// - public FileFilterGenerator() {} + public FileFilterGenerator() + { + Extension = "*"; + Description = Resources.FileFilterGenerator_All_Files; + } /// /// Creates a new instance of which filters files based on @@ -52,8 +53,9 @@ { throw new ArgumentException($@"Value required for the '{nameof(typeExtension)}'.", nameof(typeExtension)); } - extension = typeExtension; - description = string.Format(Resources.FileFilterGenerator_Files_of_type_0_, typeExtension.ToUpperInvariant()); + + Extension = typeExtension; + Description = string.Format(Resources.FileFilterGenerator_Files_of_type_0_, typeExtension.ToUpperInvariant()); } /// @@ -71,35 +73,25 @@ { throw new ArgumentException($@"Value required for the '{nameof(typeExtension)}'.", nameof(typeExtension)); } + if (string.IsNullOrEmpty(typeDescription)) { throw new ArgumentException($@"Value required for the '{nameof(typeDescription)}'.", nameof(typeDescription)); } - description = typeDescription; - extension = typeExtension; + + Description = typeDescription; + Extension = typeExtension; } /// /// Gets the extension of the . /// - public string Extension - { - get - { - return extension; - } - } + public string Extension { get; } /// /// Gets the description of the . /// - public string Description - { - get - { - return description; - } - } + public string Description { get; } /// /// Gets a filter string for the . @@ -108,7 +100,7 @@ { get { - return string.Format(Resources.FileFilterGenerator_File_filter_format, description, extension); + return string.Format(Resources.FileFilterGenerator_File_filter_format, Description, Extension); } } @@ -118,28 +110,31 @@ { return false; } + if (ReferenceEquals(this, obj)) { return true; } + if (obj.GetType() != GetType()) { return false; } + return Equals((FileFilterGenerator) obj); } public override int GetHashCode() { unchecked { - return (extension.GetHashCode() * 397) ^ description.GetHashCode(); + return (Extension.GetHashCode() * 397) ^ Description.GetHashCode(); } } private bool Equals(FileFilterGenerator other) { - return string.Equals(extension, other.extension) && string.Equals(description, other.description); + return string.Equals(Extension, other.Extension) && string.Equals(Description, other.Description); } } } \ No newline at end of file Index: Core/Common/src/Core.Common.Util/IOUtils.cs =================================================================== diff -u -rac96d7c315129af851634ed5a4a6800b59ede718 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Util/IOUtils.cs (.../IOUtils.cs) (revision ac96d7c315129af851634ed5a4a6800b59ede718) +++ Core/Common/src/Core.Common.Util/IOUtils.cs (.../IOUtils.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -56,6 +56,7 @@ { return false; } + return true; } @@ -116,6 +117,7 @@ .Build(Resources.Error_Path_cannot_contain_invalid_characters); throw new ArgumentException(message, exception); } + if (string.IsNullOrEmpty(name)) { string message = new FileReaderErrorMessageBuilder(path).Build(Resources.Error_Path_must_not_point_to_empty_file_name); @@ -145,6 +147,7 @@ { return false; } + return true; } @@ -164,10 +167,12 @@ { throw new ArgumentException(@"No valid value for 'path'.", nameof(path)); } + if (string.IsNullOrWhiteSpace(searchPattern)) { throw new ArgumentException(@"No valid value for 'searchPattern'.", nameof(searchPattern)); } + try { foreach (string logFile in Directory.GetFiles(path, searchPattern).Where( @@ -185,6 +190,7 @@ path); throw new IOException(message, e); } + throw; } } @@ -240,6 +246,7 @@ { throw new ArgumentException(Resources.IOUtils_Path_cannot_be_empty); } + try { return Path.GetFullPath(path); Index: Core/Common/src/Core.Common.Util/Reflection/AssemblyUtils.cs =================================================================== diff -u -rc0c2f3352e79e60838072735d73a848091bb1832 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Util/Reflection/AssemblyUtils.cs (.../AssemblyUtils.cs) (revision c0c2f3352e79e60838072735d73a848091bb1832) +++ Core/Common/src/Core.Common.Util/Reflection/AssemblyUtils.cs (.../AssemblyUtils.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -129,6 +129,7 @@ } } } + return result; } Index: Core/Common/src/Core.Common.Util/Reflection/TypeUtils.cs =================================================================== diff -u -r4b11c48a3055401d30d1b9d6d4e728024d4f5e50 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/src/Core.Common.Util/Reflection/TypeUtils.cs (.../TypeUtils.cs) (revision 4b11c48a3055401d30d1b9d6d4e728024d4f5e50) +++ Core/Common/src/Core.Common.Util/Reflection/TypeUtils.cs (.../TypeUtils.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -51,10 +51,9 @@ { throw new InvalidEnumArgumentException(nameof(enumValue), Convert.ToInt32(enumValue), typeof(TEnum)); } + var resourcesDisplayNameAttribute = (ResourcesDisplayNameAttribute) Attribute.GetCustomAttribute(fieldInfo, typeof(ResourcesDisplayNameAttribute)); - return resourcesDisplayNameAttribute != null ? - resourcesDisplayNameAttribute.DisplayName : - valueString; + return resourcesDisplayNameAttribute != null ? resourcesDisplayNameAttribute.DisplayName : valueString; } /// @@ -85,6 +84,7 @@ { throw new ArgumentNullException(nameof(type)); } + return type.IsAssignableFrom(thisType); } @@ -105,6 +105,7 @@ { throw new ArgumentNullException(nameof(instance)); } + FieldInfo fieldInfo = GetFieldInfo(instance.GetType(), fieldName); if (fieldInfo == null) { @@ -131,12 +132,14 @@ { throw new ArgumentNullException(nameof(instance)); } + PropertyInfo propertyInfo = instance.GetType().GetProperty(propertyName, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public); if (propertyInfo == null) { throw new ArgumentOutOfRangeException(nameof(propertyInfo)); } + MethodInfo getter = propertyInfo.GetGetMethod(true); return (T) getter.Invoke(instance, null); } @@ -307,6 +310,7 @@ { return null; } + FieldInfo fieldInfo = type.GetField(fieldName, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public Index: Core/Common/test/Core.Common.Base.Test/Geometry/Math2DTest.cs =================================================================== diff -u -r0d074a8cde296e634118f726e600a2d1e7870b2a -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/test/Core.Common.Base.Test/Geometry/Math2DTest.cs (.../Math2DTest.cs) (revision 0d074a8cde296e634118f726e600a2d1e7870b2a) +++ Core/Common/test/Core.Common.Base.Test/Geometry/Math2DTest.cs (.../Math2DTest.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -270,7 +270,7 @@ new Point2D(6.0, 0.0) }; - var lengths = new[] + double[] lengths = { 2.0, 6.0, @@ -299,7 +299,7 @@ new Point2D(6.0, 0.0) }; - var lengths = new[] + double[] lengths = { 2.0, 2.0, @@ -819,7 +819,7 @@ // Assert Assert.AreEqual(Intersection2DType.Overlaps, result.IntersectionType); - var expectedOverlappingPoints = new[] + Point2D[] expectedOverlappingPoints = { firstPoint, secondPoint @@ -844,7 +844,7 @@ // Assert Assert.AreEqual(Intersection2DType.Overlaps, result.IntersectionType); - var expectedOverlappingPoints = new[] + Point2D[] expectedOverlappingPoints = { segment1.FirstPoint, segment1.SecondPoint @@ -1119,7 +1119,7 @@ var point1 = new Point2D(random.NextDouble(), random.NextDouble()); var point2 = new Point2D(random.NextDouble(), random.NextDouble()); - var points = new[] + Point2D[] points = { point1, point2 @@ -1151,6 +1151,7 @@ { expectedLength += previousPoint.GetEuclideanDistanceTo(point); } + points.Add(point); previousPoint = point; } Index: Core/Common/test/Core.Common.Base.Test/Geometry/Point3DCollectionExtensionsTest.cs =================================================================== diff -u -r00da0d2f72214f140bceff0eaae5f14172c587de -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/test/Core.Common.Base.Test/Geometry/Point3DCollectionExtensionsTest.cs (.../Point3DCollectionExtensionsTest.cs) (revision 00da0d2f72214f140bceff0eaae5f14172c587de) +++ Core/Common/test/Core.Common.Base.Test/Geometry/Point3DCollectionExtensionsTest.cs (.../Point3DCollectionExtensionsTest.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -232,7 +232,7 @@ // Assert double length = Math.Sqrt(2 * 2 + 3 * 3); const double secondCoordinateFactor = (2.0 * 1.0 + 3.0 * 2.0) / (2.0 * 2.0 + 3.0 * 3.0); - var expectedCoordinatesX = new[] + double[] expectedCoordinatesX = { 0.0, secondCoordinateFactor * length, Index: Core/Common/test/Core.Common.Controls.TreeView.Test/TreeViewControlTest.cs =================================================================== diff -u -r9649e55312348f856051d40881b4e902b1a15a3b -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/test/Core.Common.Controls.TreeView.Test/TreeViewControlTest.cs (.../TreeViewControlTest.cs) (revision 9649e55312348f856051d40881b4e902b1a15a3b) +++ Core/Common/test/Core.Common.Controls.TreeView.Test/TreeViewControlTest.cs (.../TreeViewControlTest.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -1877,10 +1877,7 @@ .SetName("AllItemsInListRemoved"); yield return new TestCaseData(new DataModifier(CreateListWithElements(3), - list => - { - list.Reverse(); - })) + list => list.Reverse())) .SetName("ItemsReversed"); } Index: Core/Common/test/Core.Common.Geometry.Test/AdvancedMath2DTest.cs =================================================================== diff -u -r709f2cb79a37470876740145cf9f2801893672d1 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/test/Core.Common.Geometry.Test/AdvancedMath2DTest.cs (.../AdvancedMath2DTest.cs) (revision 709f2cb79a37470876740145cf9f2801893672d1) +++ Core/Common/test/Core.Common.Geometry.Test/AdvancedMath2DTest.cs (.../AdvancedMath2DTest.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -354,7 +354,7 @@ { // Setup const double center = 5.0; - var xCoordinates = new[] + double[] xCoordinates = { center - Math.Sqrt(8), center, Index: Core/Common/test/Core.Common.Gui.Test/Commands/GuiImportHandlerTest.cs =================================================================== diff -u -rac96d7c315129af851634ed5a4a6800b59ede718 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/test/Core.Common.Gui.Test/Commands/GuiImportHandlerTest.cs (.../GuiImportHandlerTest.cs) (revision ac96d7c315129af851634ed5a4a6800b59ede718) +++ Core/Common/test/Core.Common.Gui.Test/Commands/GuiImportHandlerTest.cs (.../GuiImportHandlerTest.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -382,6 +382,7 @@ // Assert TestHelper.AssertLogMessageIsGenerated(call, "Importeren van gegevens is geannuleerd."); } + mockRepository.VerifyAll(); } Index: Core/Common/test/Core.Common.Gui.Test/Commands/GuiUpdateHandlerTest.cs =================================================================== diff -u -rac96d7c315129af851634ed5a4a6800b59ede718 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/test/Core.Common.Gui.Test/Commands/GuiUpdateHandlerTest.cs (.../GuiUpdateHandlerTest.cs) (revision ac96d7c315129af851634ed5a4a6800b59ede718) +++ Core/Common/test/Core.Common.Gui.Test/Commands/GuiUpdateHandlerTest.cs (.../GuiUpdateHandlerTest.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -385,6 +385,7 @@ LogLevelConstant.Info); TestHelper.AssertLogMessageWithLevelIsGenerated(call, expectedLogMessageAndLevel); } + mockRepository.VerifyAll(); } @@ -428,6 +429,7 @@ LogLevelConstant.Info); TestHelper.AssertLogMessageWithLevelIsGenerated(call, expectedLogMessageAndLevel); } + mockRepository.VerifyAll(); } Index: Core/Common/test/Core.Common.Gui.Test/Commands/StorageCommandHandlerTest.cs =================================================================== diff -u -r2cf9db347d63c2d37bd8b93273b5bc91c73802d6 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/test/Core.Common.Gui.Test/Commands/StorageCommandHandlerTest.cs (.../StorageCommandHandlerTest.cs) (revision 2cf9db347d63c2d37bd8b93273b5bc91c73802d6) +++ Core/Common/test/Core.Common.Gui.Test/Commands/StorageCommandHandlerTest.cs (.../StorageCommandHandlerTest.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -40,11 +40,6 @@ { private MockRepository mocks; - public override void Setup() - { - mocks = new MockRepository(); - } - [Test] public void CreateNewProject_SavedProjectThenNewProject_NewProjectAndPathAreSet() { @@ -80,7 +75,7 @@ Action call = () => storageCommandHandler.CreateNewProject(); // Assert - var expectedMessages = new[] + Tuple[] expectedMessages = { Tuple.Create("Nieuw project aanmaken is gestart.", LogLevelConstant.Info), Tuple.Create("Nieuw project aanmaken is gelukt.", LogLevelConstant.Info) @@ -136,7 +131,7 @@ Action call = () => result = storageCommandHandler.SaveProject(); // Assert - var expectedMessages = new[] + Tuple[] expectedMessages = { Tuple.Create("Opslaan van bestaand project is gestart.", LogLevelConstant.Info), Tuple.Create(exceptionMessage, LogLevelConstant.Error), @@ -145,6 +140,7 @@ TestHelper.AssertLogMessagesWithLevelAreGenerated(call, expectedMessages, 3); Assert.IsFalse(result); } + mocks.VerifyAll(); } @@ -194,6 +190,7 @@ TestHelper.AssertLogMessageWithLevelIsGenerated(call, Tuple.Create("Opslaan van bestaand project is gelukt.", LogLevelConstant.Info)); Assert.IsTrue(result); } + mocks.VerifyAll(); } @@ -245,7 +242,7 @@ Action call = () => result = storageCommandHandler.OpenExistingProject(pathToSomeValidFile); // Assert - var expectedMessages = new[] + Tuple[] expectedMessages = { Tuple.Create("Openen van project is gestart.", LogLevelConstant.Info), Tuple.Create("Openen van project is gelukt.", LogLevelConstant.Info) @@ -529,7 +526,7 @@ Action call = () => result = storageCommandHandler.OpenExistingProject(pathToSomeInvalidFile); // Assert - var expectedMessages = new[] + Tuple[] expectedMessages = { Tuple.Create("Openen van project is gestart.", LogLevelConstant.Info), Tuple.Create(goodErrorMessageText, LogLevelConstant.Error), @@ -583,7 +580,7 @@ Action call = () => result = storageCommandHandler.OpenExistingProject(pathToSomeInvalidFile); // Assert - var expectedMessages = new[] + Tuple[] expectedMessages = { Tuple.Create("Openen van project is gestart.", LogLevelConstant.Info), Tuple.Create("Openen van project is mislukt.", LogLevelConstant.Error) @@ -635,7 +632,7 @@ Action call = () => result = storageCommandHandler.OpenExistingProject(pathToSomeValidFile); // Assert - var expectedMessages = new[] + Tuple[] expectedMessages = { Tuple.Create("Openen van project is gestart.", LogLevelConstant.Info), Tuple.Create("Openen van project is gelukt.", LogLevelConstant.Info) @@ -694,7 +691,7 @@ Action call = () => result = storageCommandHandler.OpenExistingProject(pathToSomeValidFile); // Assert - var expectedMessages = new[] + Tuple[] expectedMessages = { Tuple.Create("Openen van project is gestart.", LogLevelConstant.Info), Tuple.Create("Openen van project is gelukt.", LogLevelConstant.Info) @@ -1028,6 +1025,11 @@ mocks.VerifyAll(); } + public override void Setup() + { + mocks = new MockRepository(); + } + private static IEnumerable GetExceptions() { const string exceptionMessage = "I am an error message"; Index: Core/Common/test/Core.Common.Gui.Test/ContextMenu/ContextMenuBuilderTest.cs =================================================================== diff -u -rfe90a6d174a01975381e6cda55ed1f7f4e831a51 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/test/Core.Common.Gui.Test/ContextMenu/ContextMenuBuilderTest.cs (.../ContextMenuBuilderTest.cs) (revision fe90a6d174a01975381e6cda55ed1f7f4e831a51) +++ Core/Common/test/Core.Common.Gui.Test/ContextMenu/ContextMenuBuilderTest.cs (.../ContextMenuBuilderTest.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -67,6 +67,7 @@ string message = Assert.Throws(test).Message; Assert.AreEqual(Resources.ContextMenuBuilder_ContextMenuBuilder_Cannot_create_instances_of_factories, message); } + mocks.VerifyAll(); } @@ -95,6 +96,7 @@ string message = Assert.Throws(test).Message; Assert.AreEqual(Resources.ContextMenuBuilder_ContextMenuBuilder_Cannot_create_instances_of_factories, message); } + mocks.VerifyAll(); } @@ -123,6 +125,7 @@ string message = Assert.Throws(test).Message; Assert.AreEqual(Resources.ContextMenuBuilder_ContextMenuBuilder_Cannot_create_instances_of_factories, message); } + mocks.VerifyAll(); } @@ -151,6 +154,7 @@ string message = Assert.Throws(test).Message; Assert.AreEqual(Resources.ContextMenuBuilder_ContextMenuBuilder_Cannot_create_instances_of_factories, message); } + mocks.VerifyAll(); } @@ -179,6 +183,7 @@ string message = Assert.Throws(test).Message; Assert.AreEqual(Resources.ContextMenuBuilder_ContextMenuBuilder_Cannot_create_instances_of_factories, message); } + mocks.VerifyAll(); } @@ -208,6 +213,7 @@ string message = Assert.Throws(test).Message; Assert.AreEqual(Resources.ContextMenuBuilder_ContextMenuBuilder_Cannot_create_instances_of_factories, message); } + mocks.VerifyAll(); } @@ -260,6 +266,7 @@ // Assert Assert.DoesNotThrow(test); } + mocks.VerifyAll(); } @@ -291,6 +298,7 @@ Assert.IsInstanceOf(result); CollectionAssert.IsEmpty(result.Items); } + mocks.VerifyAll(); } @@ -414,7 +422,8 @@ // Assert Assert.IsInstanceOf(result); Assert.AreEqual(1, result.Items.Count); - string expectedTooltip = hasChildren ? "Verwijder alle onderliggende elementen van dit element." + string expectedTooltip = hasChildren + ? "Verwijder alle onderliggende elementen van dit element." : "Er zijn geen onderliggende elementen om te verwijderen."; TestHelper.AssertContextMenuStripContainsItem(result, 0, "Ma&p leegmaken...", @@ -535,6 +544,7 @@ TestHelper.AssertContextMenuStripContainsItem(result, 0, Resources.Open, Resources.Open_ToolTip, Resources.OpenIcon, hasViewForNodeData); } + mocks.VerifyAll(); } @@ -574,6 +584,7 @@ TestHelper.AssertContextMenuStripContainsItem(result, 0, Resources.Export, Resources.Export_ToolTip, Resources.ExportIcon, hasExportersForNodeData); } + mocks.VerifyAll(); } @@ -613,6 +624,7 @@ TestHelper.AssertContextMenuStripContainsItem(result, 0, Resources.Import, Resources.Import_ToolTip, Resources.ImportIcon, hasImportersForNodeData); } + mocks.VerifyAll(); } @@ -652,6 +664,7 @@ TestHelper.AssertContextMenuStripContainsItem(result, 0, Resources.Update, Resources.Update_ToolTip, Resources.RefreshIcon, hasUpdatesForNodeData); } + mocks.VerifyAll(); } @@ -695,6 +708,7 @@ TestHelper.AssertContextMenuStripContainsItem(result, 0, text, toolTip, image, hasImportersForNodeData); } + mocks.VerifyAll(); } @@ -734,6 +748,7 @@ TestHelper.AssertContextMenuStripContainsItem(result, 0, Resources.Properties, Resources.Properties_ToolTip, Resources.PropertiesHS, hasPropertiesForNodeData); } + mocks.VerifyAll(); } @@ -767,6 +782,7 @@ Assert.AreSame(item, result.Items[0]); } + mocks.VerifyAll(); } @@ -798,6 +814,7 @@ Assert.IsInstanceOf(result); CollectionAssert.IsEmpty(result.Items); } + mocks.VerifyAll(); } @@ -831,6 +848,7 @@ { builder.AddSeparator(); } + ContextMenuStrip result = builder.AddCustomItem(someItem).Build(); // Assert @@ -839,6 +857,7 @@ Assert.IsInstanceOf(result.Items[0]); } + mocks.VerifyAll(); } @@ -875,6 +894,7 @@ { builder.AddSeparator(); } + ContextMenuStrip result = builder.AddCustomItem(someOtherItem).Build(); // Assert @@ -884,6 +904,7 @@ Assert.IsInstanceOf(result.Items[1]); Assert.IsInstanceOf(result.Items[2]); } + mocks.VerifyAll(); } @@ -917,12 +938,14 @@ { builder.AddSeparator(); } + ContextMenuStrip result = builder.Build(); // Assert Assert.IsInstanceOf(result); Assert.AreEqual(1, result.Items.Count); } + mocks.VerifyAll(); } } Index: Core/Common/test/Core.Common.Gui.Test/ContextMenu/TreeViewContextMenuItemFactoryTest.cs =================================================================== diff -u -r3178e116f5e59e03078d465efeb303c5e232c7bf -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/test/Core.Common.Gui.Test/ContextMenu/TreeViewContextMenuItemFactoryTest.cs (.../TreeViewContextMenuItemFactoryTest.cs) (revision 3178e116f5e59e03078d465efeb303c5e232c7bf) +++ Core/Common/test/Core.Common.Gui.Test/ContextMenu/TreeViewContextMenuItemFactoryTest.cs (.../TreeViewContextMenuItemFactoryTest.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -36,11 +36,6 @@ { private MockRepository mocks; - public override void Setup() - { - mocks = new MockRepository(); - } - [Test] public void Constructor_WithoutDataObject_ThrowsArgumentNullException() { @@ -142,7 +137,8 @@ // Assert Assert.AreEqual(Resources.DeleteChildren, item.Text); - string expectedTooltip = canDelete ? "Verwijder alle onderliggende elementen van dit element." + string expectedTooltip = canDelete + ? "Verwijder alle onderliggende elementen van dit element." : "Er zijn geen onderliggende elementen om te verwijderen."; Assert.AreEqual(expectedTooltip, item.ToolTipText); TestHelper.AssertImagesAreEqual(Resources.DeleteChildrenIcon, item.Image); @@ -255,5 +251,10 @@ TestHelper.AssertImagesAreEqual(Resources.CollapseAllIcon, item.Image); Assert.AreEqual(hasChildren, item.Enabled); } + + public override void Setup() + { + mocks = new MockRepository(); + } } } \ No newline at end of file Index: Core/Common/test/Core.Common.Gui.Test/Converters/KeyValueExpandableArrayConverterTest.cs =================================================================== diff -u -rca27aee933103177a29a8d2ab46e127dbb8bacf6 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/test/Core.Common.Gui.Test/Converters/KeyValueExpandableArrayConverterTest.cs (.../KeyValueExpandableArrayConverterTest.cs) (revision ca27aee933103177a29a8d2ab46e127dbb8bacf6) +++ Core/Common/test/Core.Common.Gui.Test/Converters/KeyValueExpandableArrayConverterTest.cs (.../KeyValueExpandableArrayConverterTest.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -196,6 +196,7 @@ Assert.NotNull(actualValue); Assert.AreEqual(value, actualValue); } + mocks.VerifyAll(); } @@ -229,6 +230,7 @@ { Assert.Throws(() => propertyDescriptors[i].SetValue(array, i)); } + mocks.VerifyAll(); } Index: Core/Common/test/Core.Common.Gui.Test/DialogBasedInquiryHelperTest.cs =================================================================== diff -u -r38499aa6936706c30ac12e481233d3f13545dd8b -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/test/Core.Common.Gui.Test/DialogBasedInquiryHelperTest.cs (.../DialogBasedInquiryHelperTest.cs) (revision 38499aa6936706c30ac12e481233d3f13545dd8b) +++ Core/Common/test/Core.Common.Gui.Test/DialogBasedInquiryHelperTest.cs (.../DialogBasedInquiryHelperTest.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -36,17 +36,6 @@ private IWin32Window dialogParent; private MockRepository mocks; - public override void Setup() - { - mocks = new MockRepository(); - dialogParent = mocks.StrictMock(); - } - - public override void TearDown() - { - mocks.VerifyAll(); - } - [Test] public void Constructor_WithoutDialogParent_ThrowsArgumentNullException() { @@ -311,5 +300,16 @@ Assert.AreEqual(query, actualQuery); mocks.VerifyAll(); } + + public override void Setup() + { + mocks = new MockRepository(); + dialogParent = mocks.StrictMock(); + } + + public override void TearDown() + { + mocks.VerifyAll(); + } } } \ No newline at end of file Index: Core/Common/test/Core.Common.Gui.Test/ExceptionDialogTest.cs =================================================================== diff -u -r569a286badd9b3494f5465cc2767a8cf6a77f618 -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/test/Core.Common.Gui.Test/ExceptionDialogTest.cs (.../ExceptionDialogTest.cs) (revision 569a286badd9b3494f5465cc2767a8cf6a77f618) +++ Core/Common/test/Core.Common.Gui.Test/ExceptionDialogTest.cs (.../ExceptionDialogTest.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -1,4 +1,4 @@ -// Copyright (C) Stichting Deltares 2017. All rights reserved. +// Copyright (C) Stichting Deltares 2017. All rights reserved. // // This file is part of Ringtoets. // Index: Core/Common/test/Core.Common.Gui.Test/Forms/MainWindow/MainWindowTest.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/test/Core.Common.Gui.Test/Forms/MainWindow/MainWindowTest.cs (.../MainWindowTest.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/test/Core.Common.Gui.Test/Forms/MainWindow/MainWindowTest.cs (.../MainWindowTest.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -145,6 +145,7 @@ Assert.IsTrue(mainWindow.IsVisible); Assert.AreEqual(Visibility.Visible, mainWindow.Visibility); } + mocks.VerifyAll(); } @@ -177,6 +178,7 @@ Assert.IsFalse(mainWindow.IsVisible); Assert.AreEqual(Visibility.Hidden, mainWindow.Visibility); } + mocks.VerifyAll(); } @@ -217,6 +219,7 @@ // Call mainWindow.SubscribeToGui(); } + // Assert mocks.VerifyAll(); // Expect event subscription } @@ -262,6 +265,7 @@ // Call mainWindow.UnsubscribeFromGui(); } + // Assert mocks.VerifyAll(); // Expect event subscription and desubscription } @@ -316,6 +320,7 @@ Assert.AreEqual("Eigenschappen", mainWindow.PropertyGrid.Text); Assert.AreEqual(selectedObject, mainWindow.PropertyGrid.Data); } + mocks.VerifyAll(); } @@ -412,6 +417,7 @@ Assert.IsNull(viewHost.ActiveDocumentView); } + mocks.VerifyAll(); } @@ -444,6 +450,7 @@ // Assert Assert.IsNull(mainWindow.PropertyGrid); } + mocks.VerifyAll(); } @@ -476,6 +483,7 @@ // Assert Assert.IsNull(mainWindow.MessageWindow); } + mocks.VerifyAll(); } } Index: Core/Common/test/Core.Common.Gui.Test/Forms/MessageWindow/MessageWindowTest.cs =================================================================== diff -u -r38499aa6936706c30ac12e481233d3f13545dd8b -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/test/Core.Common.Gui.Test/Forms/MessageWindow/MessageWindowTest.cs (.../MessageWindowTest.cs) (revision 38499aa6936706c30ac12e481233d3f13545dd8b) +++ Core/Common/test/Core.Common.Gui.Test/Forms/MessageWindow/MessageWindowTest.cs (.../MessageWindowTest.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -36,17 +36,6 @@ { private GuiFormsMessageWindow.MessageWindowLogAppender originalValue; - public override void Setup() - { - originalValue = GuiFormsMessageWindow.MessageWindowLogAppender.Instance; - } - - public override void TearDown() - { - base.TearDown(); - GuiFormsMessageWindow.MessageWindowLogAppender.Instance = originalValue; - } - [Test] public void ParameteredConstructor_ExpectedValues() { @@ -195,6 +184,7 @@ Assert.AreEqual("Berichtdetails", dialogTitle); Assert.AreEqual(detailedMessage, dialogText); } + mocks.VerifyAll(); } @@ -355,6 +345,7 @@ Assert.AreEqual("Berichtdetails", dialogTitle); Assert.AreEqual(detailedMessage, dialogText); } + mocks.VerifyAll(); } @@ -416,6 +407,7 @@ Assert.AreEqual("Berichtdetails", dialogTitle); Assert.AreEqual(detailedMessage, dialogText); } + mocks.VerifyAll(); } @@ -555,6 +547,17 @@ } } + public override void Setup() + { + originalValue = GuiFormsMessageWindow.MessageWindowLogAppender.Instance; + } + + public override void TearDown() + { + base.TearDown(); + GuiFormsMessageWindow.MessageWindowLogAppender.Instance = originalValue; + } + private static void AddMessages(GuiFormsMessageWindow.MessageWindow messageWindow) { messageWindow.AddMessage(Level.Info, new DateTime(), "Info message"); Index: Core/Common/test/Core.Common.Gui.Test/GuiCoreTest.cs =================================================================== diff -u -r6fc42a91bd445cd4896eb833ffb2fcd88a54cdbe -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/test/Core.Common.Gui.Test/GuiCoreTest.cs (.../GuiCoreTest.cs) (revision 6fc42a91bd445cd4896eb833ffb2fcd88a54cdbe) +++ Core/Common/test/Core.Common.Gui.Test/GuiCoreTest.cs (.../GuiCoreTest.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -547,7 +547,7 @@ Action call = () => gui.Run(testFile); // Assert - var expectedMessages = new[] + Tuple[] expectedMessages = { Tuple.Create("Openen van project is gestart.", LogLevelConstant.Info), Tuple.Create("Openen van project is gelukt.", LogLevelConstant.Info) @@ -695,7 +695,7 @@ Action call = () => gui.Run(testFile); // Assert - var expectedMessages = new[] + Tuple[] expectedMessages = { Tuple.Create("Openen van project is gestart.", LogLevelConstant.Info), Tuple.Create(expectedErrorMessage, LogLevelConstant.Error), @@ -746,7 +746,7 @@ Action call = () => gui.Run(testFile); // Assert - var expectedMessages = new[] + Tuple[] expectedMessages = { Tuple.Create("Openen van project is gestart.", LogLevelConstant.Info), Tuple.Create(storageExceptionText, LogLevelConstant.Error), @@ -989,7 +989,7 @@ object[] dataInstancesWithViewDefinitions = gui.GetAllDataWithViewDefinitionsRecursively(rootData).OfType().ToArray(); // Assert - var expectedDataDefinitions = new[] + object[] expectedDataDefinitions = { rootData }; @@ -1050,7 +1050,7 @@ object[] dataInstancesWithViewDefinitions = gui.GetAllDataWithViewDefinitionsRecursively(rootData).OfType().ToArray(); // Assert - var expectedDataDefinitions = new[] + object[] expectedDataDefinitions = { rootData, rootChild Index: Core/Common/test/Core.Common.Gui.Test/Plugin/PluginBaseTest.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/test/Core.Common.Gui.Test/Plugin/PluginBaseTest.cs (.../PluginBaseTest.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/test/Core.Common.Gui.Test/Plugin/PluginBaseTest.cs (.../PluginBaseTest.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -58,6 +58,7 @@ // Assert Assert.AreEqual(gui, plugin.Gui); } + mocks.VerifyAll(); } Index: Core/Common/test/Core.Common.Gui.Test/PropertyBag/PropertySpecDescriptorTest.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/test/Core.Common.Gui.Test/PropertyBag/PropertySpecDescriptorTest.cs (.../PropertySpecDescriptorTest.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/test/Core.Common.Gui.Test/PropertyBag/PropertySpecDescriptorTest.cs (.../PropertySpecDescriptorTest.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -319,6 +319,7 @@ { return IsPropertyReadOnly; } + throw new NotImplementedException(); } @@ -344,6 +345,7 @@ { return IsPropertyBrowsable; } + throw new NotImplementedException(); } Index: Core/Common/test/Core.Common.Integration.Test/Ringtoets/Application.Ringtoets/GuiCoreIntegrationTest.cs =================================================================== diff -u -r67284323e2785c651633d9c52049ba12a9c70e6a -r6842ead5ca2d0d93fc6f28815980a6fa792f57fc --- Core/Common/test/Core.Common.Integration.Test/Ringtoets/Application.Ringtoets/GuiCoreIntegrationTest.cs (.../GuiCoreIntegrationTest.cs) (revision 67284323e2785c651633d9c52049ba12a9c70e6a) +++ Core/Common/test/Core.Common.Integration.Test/Ringtoets/Application.Ringtoets/GuiCoreIntegrationTest.cs (.../GuiCoreIntegrationTest.cs) (revision 6842ead5ca2d0d93fc6f28815980a6fa792f57fc) @@ -66,6 +66,7 @@ gui.Plugins.Add(new RingtoetsPlugin()); gui.Run(); } + mocks.VerifyAll(); } @@ -96,6 +97,7 @@ WpfTestHelper.ShowModal((Control) gui.MainWindow, () => callCount++); Assert.AreEqual(1, callCount); } + mocks.VerifyAll(); } @@ -117,6 +119,7 @@ WpfTestHelper.ShowModal((Control) gui.MainWindow); } + mocks.VerifyAll(); } }