Patch: Add Comparison Operators for Centerings
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Patch: Add Comparison Operators for Centerings



Resolves Pooma QMTrack issue 'centering_comparison'.

2001-10-04  Jeffrey D. Oldham  <oldham@xxxxxxxxxxxxxxxx>

        * FieldCentering.h (operator==): New function to compare two
        centerings with the same dimension.
        (operator!=): Likewise.
        * tests/Centerings.cpp (main): Add tests of comparison operators.

Tested by       running tests/Centerings.cpp
Approved by     Stephen Smith
Applied to      mainline

Thanks,
Jeffrey D. Oldham
oldham@xxxxxxxxxxxxxxxx
Index: FieldCentering.h
===================================================================
RCS file: /home/pooma/Repository/r2/src/Field/FieldCentering.h,v
retrieving revision 1.2
diff -c -p -r1.2 FieldCentering.h
*** FieldCentering.h	2001/08/30 19:02:36	1.2
--- FieldCentering.h	2001/10/01 17:01:42
*************** std::ostream &operator<<(std::ostream &o
*** 491,496 ****
--- 491,517 ----
  
  
  //-----------------------------------------------------------------------------
+ // Provide == and != comparison operators for centerings.
+ //-----------------------------------------------------------------------------
+ 
+ template <int Dim>
+ bool operator==(const Centering<Dim> &centering1, const Centering<Dim> &centering2) 
+ {
+   return
+     centering1.centeringType() == centering2.centeringType() &&
+     centering1.discontinuous() == centering2.discontinuous() &&
+     centering1.orientations() == centering2.orientations() &&
+     centering1.positions() == centering2.positions();
+ }
+ 
+ template <int Dim>
+ bool operator!=(const Centering<Dim> &centering1, const Centering<Dim> &centering2) 
+ {
+   return !(centering1 == centering2);
+ }
+ 
+ 
+ //-----------------------------------------------------------------------------
  // Define CanonicalCentering's static members.
  //-----------------------------------------------------------------------------
  
Index: tests/Centerings.cpp
===================================================================
RCS file: /home/pooma/Repository/r2/src/Field/tests/Centerings.cpp,v
retrieving revision 1.1
diff -c -p -r1.1 Centerings.cpp
*** tests/Centerings.cpp	2001/08/30 01:15:18	1.1
--- tests/Centerings.cpp	2001/10/01 17:01:42
***************
*** 31,41 ****
--- 31,43 ----
  
  #include "Pooma/Fields.h"
  #include "Field/FieldCentering.h"
+ #include "Utilities/Tester.h"
  
  
  int main(int argc, char *argv[])
  {
    Pooma::initialize(argc, argv);
+   Pooma::Tester tester(argc, argv);
  
    // Explicitly obtain the centerings.
    CanonicalCentering<2> centering2;
*************** int main(int argc, char *argv[])
*** 52,59 ****
    std::cout << canonicalCentering<2>(CellType, Continuous) << std::endl;
    std::cout << canonicalCentering<3>(FaceType, Discontinuous, XDim | YDim) << std::endl;
  
    Pooma::finalize();
!   return 0; 
  }
  
  // ACL:rcsinfo
--- 54,68 ----
    std::cout << canonicalCentering<2>(CellType, Continuous) << std::endl;
    std::cout << canonicalCentering<3>(FaceType, Discontinuous, XDim | YDim) << std::endl;
  
+   // Briefly test the comparison operators.
+   tester.check(cell == canonicalCentering<2>(CellType, Continuous));
+   tester.check(cell != centering2(FaceType, Continuous, XDim | YDim));
+   tester.check(allFace == centering3(FaceType, Continuous, XDim | YDim));
+   tester.check(centering3(FaceType, Continuous, XDim | YDim) == allFace);
+ 
+   int ret = tester.results("Centerings");
    Pooma::finalize();
!   return ret; 
  }
  
  // ACL:rcsinfo