testInterval.cpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #include "../Interval.hpp"
  14. #define TEST_REQUIRE(X);  if (!(X)) { 
  15.   ndbout_c("Test failed in line %d", __LINE__); testPassed = false; }
  16. int
  17. main () {
  18.   bool testPassed = true;
  19.   Interval a, b, c;
  20.   /**
  21.    *  isEmpty
  22.    */
  23.   TEST_REQUIRE(a.isEmpty());
  24.   a.set(3,1);
  25.   TEST_REQUIRE(a.isEmpty());
  26.   /**
  27.    *  isEqual
  28.    */
  29.   a.set(1,2);
  30.   TEST_REQUIRE(a.isEqual(1,2));
  31.   a.set(3,1);
  32.   TEST_REQUIRE(a.isEqual(1,0));  // The result should be normalized
  33.   /**
  34.    *  intervalAdd -- non-disjoint 
  35.    */
  36.   a.set(1,3);
  37.   b.set(3,10);
  38.   TEST_REQUIRE(intervalAdd(a, b, &c));
  39.   TEST_REQUIRE(c.isEqual(1,10));
  40.   a.set(3,10);
  41.   b.set(1,3);
  42.   TEST_REQUIRE(intervalAdd(a, b, &c));
  43.   TEST_REQUIRE(c.isEqual(1,10));
  44.   /**
  45.    *  intervalAdd -- consequtive
  46.    */
  47.   a.set(1,3);
  48.   b.set(4,10);
  49.   TEST_REQUIRE(intervalAdd(a, b, &c));
  50.   TEST_REQUIRE(c.isEqual(1,10));
  51.   a.set(4,10);
  52.   b.set(1,3);
  53.   TEST_REQUIRE(intervalAdd(a, b, &c));
  54.   TEST_REQUIRE(c.isEqual(1,10));
  55.   /**
  56.    *  intervalAdd -- disjoint
  57.    */
  58.   a.set(1,3);
  59.   b.set(5,10);
  60.   c.set(4711,4711);
  61.   TEST_REQUIRE(!intervalAdd(a, b, &c));  // This should not work
  62.   TEST_REQUIRE(c.isEqual(4711,4711));
  63.   a.set(5,10);
  64.   b.set(1,3);
  65.   c.set(4711,4711);
  66.   TEST_REQUIRE(!intervalAdd(a, b, &c));  // This should not work
  67.   TEST_REQUIRE(c.isEqual(4711,4711));
  68.   /**
  69.    *  intervalLeftMinus -- non-disjoint
  70.    */
  71.   a.set(1,3);
  72.   b.set(5,10);
  73.   intervalLeftMinus(a, b, &c);          
  74.   TEST_REQUIRE(c.isEmpty());
  75.   a.set(5,10);
  76.   b.set(1,3);
  77.   intervalLeftMinus(a, b, &c);          
  78.   TEST_REQUIRE(c.isEqual(5,10));
  79.   /**
  80.    *  intervalLeftMinus -- consequtive
  81.    */
  82.   a.set(1,3);
  83.   b.set(4,10);
  84.   intervalLeftMinus(a, b, &c);
  85.   TEST_REQUIRE(c.isEmpty());
  86.   a.set(4,10);
  87.   b.set(1,3);
  88.   intervalLeftMinus(a, b, &c);
  89.   TEST_REQUIRE(c.isEqual(4,10));
  90.   /**
  91.    *  intervalLeftMinus -- disjoint
  92.    */
  93.   a.set(1,3);
  94.   b.set(5,10);
  95.   intervalLeftMinus(a, b, &c);
  96.   TEST_REQUIRE(c.isEmpty());
  97.   a.set(5,10);
  98.   b.set(1,3);
  99.   intervalLeftMinus(a, b, &c);
  100.   TEST_REQUIRE(c.isEqual(5,10));
  101.   
  102.   ndbout << "Test " << (testPassed ? "passed" : "failed") << "." << endl;
  103. }