Mercurial > repos > IBBoard.NUnit
changeset 2:405baf327de2
Re #46: Add NUnit helper methods
* Improve additional information message
* Improve handling of mis-matched length arrays
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 21 Aug 2010 14:53:48 +0000 |
parents | 4dad6872ca5a |
children | ec154ad8dd7f |
files | Constraints/ArrayContainsConstraint.cs |
diffstat | 1 files changed, 32 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/Constraints/ArrayContainsConstraint.cs Sat Aug 21 14:24:27 2010 +0000 +++ b/Constraints/ArrayContainsConstraint.cs Sat Aug 21 14:53:48 2010 +0000 @@ -37,21 +37,22 @@ bool isMatch = true; idx = NOT_FOUND; - if (containedObjs.Length != array.Length) + int max = Math.Min(array.Length, containedObjs.Length); + + for (int i = 0; i < max; i++) + { + if (!EqualityChecker.AreEqual(containedObjs[i], array[i])) + { + isMatch = false; + idx = i; + break; + } + } + + if (isMatch && containedObjs.Length != array.Length) { isMatch = false; - } - else - { - for (int i = 0; i < containedObjs.Length; i++) - { - if (!EqualityChecker.AreEqual(containedObjs[i], array[i])) - { - isMatch = false; - idx = i; - break; - } - } + idx = max; } return isMatch; @@ -67,6 +68,10 @@ { writer.WriteExpectedValue(containedObjs[0]); } + else if (idx >= containedObjs.Length) + { + writer.Write("End of array"); + } else { writer.WriteExpectedValue(containedObjs[idx]); @@ -85,6 +90,10 @@ { writer.WriteActualValue(actualArray[0]); } + else if (idx >= actualArray.Length) + { + writer.Write("End of array"); + } else { writer.WriteActualValue(actualArray[idx]); @@ -95,9 +104,17 @@ { base.WriteMessageTo(writer); - if (idx != NOT_FOUND) + if (idx >= containedObjs.Length) + { + writer.WriteMessageLine("Unexpected value at index {0}", idx); + } + else if (idx >= ((object[])actual).Length) { - writer.WriteMessageLine("Incorrect value at {0}", idx); + writer.WriteMessageLine("Expected value at index {0}", idx); + } + else if (idx != NOT_FOUND) + { + writer.WriteMessageLine("Incorrect value at index {0}", idx); } } }