aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Tests/Common/VectorToleranceConstraint.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Tests/Common/VectorToleranceConstraint.cs')
-rw-r--r--OpenSim/Tests/Common/VectorToleranceConstraint.cs58
1 files changed, 58 insertions, 0 deletions
diff --git a/OpenSim/Tests/Common/VectorToleranceConstraint.cs b/OpenSim/Tests/Common/VectorToleranceConstraint.cs
new file mode 100644
index 0000000..1faf7dd
--- /dev/null
+++ b/OpenSim/Tests/Common/VectorToleranceConstraint.cs
@@ -0,0 +1,58 @@
1using System;
2using libsecondlife;
3using NUnit.Framework;
4
5namespace OpenSim.Tests.Common
6{
7 public class VectorToleranceConstraint : ANumericalToleranceConstraint
8 {
9 private LLVector3 _baseValue;
10 private LLVector3 _valueToBeTested;
11
12 public VectorToleranceConstraint(LLVector3 baseValue, double tolerance) : base(tolerance)
13 {
14 _baseValue = baseValue;
15 }
16
17 ///<summary>
18 ///Test whether the constraint is satisfied by a given value
19 ///</summary>
20 ///<param name="valueToBeTested">The value to be tested</param>
21 ///<returns>
22 ///True for success, false for failure
23 ///</returns>
24 public override bool Matches(object valueToBeTested)
25 {
26 if (valueToBeTested == null)
27 {
28 throw new ArgumentException("Constraint cannot be used upon null values.");
29 }
30 if (valueToBeTested.GetType() != typeof (LLVector3))
31 {
32 throw new ArgumentException("Constraint cannot be used upon non vector values.");
33 }
34
35 _valueToBeTested = (LLVector3) valueToBeTested;
36
37 if ( IsWithinDoubleConstraint(_valueToBeTested.X,_baseValue.X) &&
38 IsWithinDoubleConstraint(_valueToBeTested.Y,_baseValue.Y) &&
39 IsWithinDoubleConstraint(_valueToBeTested.Z,_baseValue.Z) )
40 {
41 return true;
42 }
43
44 return false;
45 }
46
47 public override void WriteDescriptionTo(MessageWriter writer)
48 {
49 writer.WriteExpectedValue(
50 string.Format("A value {0} within tolerance of plus or minus {1}", _baseValue, _tolerance));
51 }
52
53 public override void WriteActualValueTo(MessageWriter writer)
54 {
55 writer.WriteActualValue(_valueToBeTested);
56 }
57 }
58}