Charj Arrays: (in)equality comparison operators
authorPhil Miller <mille121@illinois.edu>
Tue, 9 Nov 2010 16:48:06 +0000 (10:48 -0600)
committerPhil Miller <mille121@illinois.edu>
Wed, 8 Dec 2010 03:34:48 +0000 (21:34 -0600)
src/langs/charj/src/charj/libs/Array.cpp
src/langs/charj/src/charj/libs/Array.h

index 63423cbc7d7422e512ece1d6206b0750c3ad6394..c7f9b4e7881b7a34045aca5099e7cb4b16c297b6 100644 (file)
@@ -153,6 +153,11 @@ struct VectorTest : public ArrayTest {
     if (dot(&inc, &ones) != N*(N+1)/2)
       return false;
 
+    if (ones == zeroes || ones == inc || zeroes == inc)
+      return false;
+    if (ones != ones || zeroes != zeroes || inc != inc)
+      return false;
+
     return true;
   }
 };
@@ -195,9 +200,13 @@ struct MatrixTest : public ArrayTest {
        if ((ident.access(i,j) == 1) != (i == j))
          return false;
       }
-
     }
 
+    if (zeroes == ones || zeroes == ident || ones == ident)
+      return false;
+    if (ones != ones || zeroes != zeroes || ident != ident)
+      return false;
+
     return true;
   }
 };
index 5460a4561b26a4fa636d8d392f3d991050f842a8..9e9043f2dc9dabc76890fc8d24cb6426210dd30c 100644 (file)
@@ -164,6 +164,24 @@ namespace CharjArray {
       for (int i = 0; i < domain.size(); ++i)
        block[i] = t;
     }
+
+    /// Do these arrays have the same shape and contents?
+    bool operator==(const Array &rhs) const
+    {
+      for (int i = 0; i < dims; ++i)
+       if (this->size(i) != rhs.size(i))
+         return false;
+
+      for (int i = 0; i < this->size(); ++i)
+       if (this->block[i] != rhs.block[i])
+         return false;
+
+      return true;
+    }
+    bool operator!=(const Array &rhs) const
+    {
+      return !(*this == rhs);
+    }
   };
 
   /**