test_set.c

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 700 行 · 第 1/2 页

C
700
字号
  d1.remove(4.0);
  d2.put(0.0);
  d2.put(1.0);
  d2.put(4.0);
  d3.put(8.0);
  d4 = d0;
  d4.put(8.0);
  d5 = d1;
  d5.remove(8.0);
  d6.put(0.0);
  d6.put(1.0);
  d6.put(4.0);
  d6.put(8.0);
  TEST ("(d0 - d1) == d2", ((d0-d1) == d2), TRUE);
  TEST ("(d1 - d0) == d3", ((d1-d0) == d3), TRUE);
  TEST ("(d0 | d1) == d4", ((d0|d1) == d4), TRUE);
  TEST ("(d1 | d0) == d4", ((d1|d0) == d4), TRUE);
  TEST ("(d0 & d1) == d5", ((d0&d1) == d5), TRUE);
  TEST ("(d1 & d0) == d5", ((d1&d0) == d5), TRUE);
  TEST ("(d0 ^ d1) == d6", ((d0^d1) == d6), TRUE);
  TEST ("(d1 ^ d0) == d6", ((d1^d0) == d6), TRUE);
  d7 = d0;
  TEST ("d0 -= d1", (d0 -= d1, d0 == d2), TRUE);
  d0 = d7; d7=d1;
  TEST ("d1 -= d0", (d1 -= d0, d1 == d3), TRUE);
  d1 = d7; d7=d0;
  TEST ("d0 |= d1", (d0 |= d1, d0 == d4), TRUE);
  d0 = d7; d7=d1;
  TEST ("d1 |= d0", (d1 |= d0, d1 == d4), TRUE);
  d1 = d7; d7=d0;
  TEST ("d0 &= d1", (d0 &= d1, d0 == d5), TRUE);
  d0 = d7; d7=d1;
  TEST ("d1 &= d0", (d1 &= d0, d1 == d5), TRUE);
  d1 = d7; d7=d0;
  TEST ("d0 ^= d1", (d0 ^= d1, d0 == d6), TRUE);
  d0 = d7; d7=d1;
  TEST ("d1 ^= d0", (d1 ^= d0, d1 == d6), TRUE);
  d1 = d7; d7 = d0;
  TEST ("d0.set_difference(d1)", (d0.set_difference(d1), d0 == d2), TRUE);
  d0 = d7;
  TEST ("d0.set_union(d1)", (d0.set_union(d1), d0 == d4), TRUE);
  d0 = d7;
  TEST ("d0.set_intersection(d1)", (d0.set_intersection(d1), d0 == d5), TRUE);
  d0 = d7;
  TEST ("d0.set_xor(d1)", (d0.set_xor(d1), d0 == d6), TRUE);
  d0 = d7;
  d0.reset(), d1.reset();
  // Create sets containing the expected intersection, union, difference, and xor
  CoolSet<double> dint;
  CoolSet<double> dunion;
  CoolSet<double> ddif;
  CoolSet<double> dxor;

  {dint.put(9);}
  {dint.put(7);}
  {dint.put(5);}
  {dint.put(3);}
  {dint.put(6);}
  {dint.put(2);}
  {ddif.put(1);}
  {ddif.put(0);}
  {ddif.put(4);}
  {dunion.put(1);}
  {dunion.put(7);}
  {dunion.put(2);}
  {dunion.put(3);}
  {dunion.put(0);}
  {dunion.put(5);}
  {dunion.put(8);}
  {dunion.put(6);}
  {dunion.put(4);}
  {dunion.put(9);}
  {dxor.put(1);}
  {dxor.put(8);}
  {dxor.put(4);}
  {dxor.put(0);}

  CoolSet<double> ltemp1;
  CoolSet<double> ltemp2;
  CoolSet<double> ltemp3;
  CoolSet<double> ltemp4;

  d0.reset(), d1.reset();
  TEST_RUN ("d0.next_intersection(d1)", 
            while (d0.next_intersection(d1)) ltemp1.put(d0.value()),
            ltemp1 == dint, TRUE);
  d0.reset(), d1.reset();
  TEST_RUN ("d0.next_difference(d1)", 
            while (d0.next_difference(d1)) ltemp2.put(d0.value()),
            ltemp2 == ddif, TRUE);
  d0.reset(), d1.reset();
  TEST_RUN ("d0.next_union(d1)", 
            while (d0.next_union(d1)) ltemp3.put(d0.value()),
            ltemp3 == dunion, TRUE);
  d0.reset(), d1.reset();
  TEST_RUN ("d0.next_xor(d1)", 
            while (d0.next_xor(d1)) ltemp4.put(d0.value()),
            ltemp4 == dxor, TRUE);
}

void test_charP () {
  CoolSet<char*> color1;
  TEST ("CoolSet<char*> color1",color1.get_bucket_count(),3);
  TEST ("color1.capacity()", color1.capacity(), 24);
  CoolSet<char*> color2(20);
  TEST ("CoolSet<char*> color2(20)",color2.get_bucket_count(),3);
  TEST ("color2.capacity()", color2.capacity(), 24);
  CoolSet<char*> color3(25);
  TEST ("CoolSet<char*> color3(25)",color3.get_bucket_count(),7);
  TEST ("color3.capacity()", color3.capacity(), 56);
  CoolSet<char*> color4(color3);
  TEST ("CoolSet<char*> color4(color3)",color4.get_bucket_count(),7);
  TEST ("color3==color4", (color3==color4), TRUE);
  TEST ("color3 == color4", (color3 == color4), TRUE);
  TEST ("color2 == color3", (color2 == color3), TRUE);
  TEST ("color2 != color4", (color2 != color4), FALSE);
  TEST ("color1.reset()",(color1.reset(),1.0),1.0);
  TEST ("color1.put(\"RED\")", color1.put("RED"),TRUE);
  TEST ("color1.find(\"RED\")", color1.find("RED"), TRUE);
  TEST ("color1.value()", strcmp (color1.value(), "RED"), 0);
  TEST ("color1.length()", color1.length(), 1.0);
  TEST ("color1.put(\"YELLOW\")", color1.put("YELLOW"),TRUE);
  TEST ("color1.find(\"YELLOW\")", color1.find("YELLOW"), TRUE);
  TEST ("color1.put(\"MAGENTA\")", color1.put("MAGENTA"),TRUE);
  TEST ("color1.find(\"MAGENTA\")", color1.find("MAGENTA"), TRUE);
  TEST ("color1.put(\"BLUE\")", color1.put("BLUE"), TRUE);
  TEST ("color1.value()", strcmp (color1.value(), "BLUE"), 0);
  TEST ("color1.find(\"BLUE\")", color1.find("BLUE"), TRUE);
  TEST ("color1.value()", strcmp (color1.value(), "BLUE"), 0);
  TEST ("color1.put(\"ORANGE\")", color1.put("ORANGE"),TRUE);
  TEST ("color1.find(\"ORANGE\")", color1.find("ORANGE"), TRUE);
  TEST ("color1.put(\"WHITE\")", color1.put("WHITE"),TRUE);
  TEST ("color1.find(\"WHITE\")", color1.find("WHITE"), TRUE);
  TEST ("color1.put(\"BROWN\")", color1.put("BROWN"),TRUE);
  TEST ("color1.find(\"BROWN\")", color1.find("BROWN"), TRUE);
  TEST ("color1.put(\"BLACK\")", color1.put("BLACK"),TRUE);
  TEST ("color1.find(\"BLACK\")", color1.find("BLACK"), TRUE);
  TEST ("color1.put(\"GREY\")", color1.put("GREY"),TRUE);
  TEST ("color1.find(\"GREY\")", color1.find("GREY"), TRUE);
  TEST ("color1.get_bucket_count()", color1.get_bucket_count(), 3);
  TEST ("color1.length()", color1.length(), 9);
  TEST ("color1.remove(\"RED\")", color1.remove("RED"), TRUE);
  TEST ("color1.length()", color1.length(), 8);
  TEST ("color1.reset()",(color1.reset(),1.0),1.0);
  TEST ("color1.next()",color1.next(),TRUE);
  TEST ("color1.next()",color1.next(),TRUE);
  TEST ("color1.next()",color1.next(),TRUE);
  TEST ("color1.next()",color1.next(),TRUE);
  TEST ("color1.next()",color1.next(),TRUE);
  TEST ("color1.next()",color1.next(),TRUE);
  TEST ("color1.next()",color1.next(),TRUE);
  TEST ("color1.next()",color1.next(),TRUE);
  TEST ("color1.next()",color1.next(),FALSE);
  TEST ("color1.prev()",color1.prev(),TRUE);
  TEST ("color1.prev()",color1.prev(),TRUE);
  TEST ("color1.prev()",color1.prev(),TRUE);
  TEST ("color1.prev()",color1.prev(),TRUE);
  TEST ("color1.prev()",color1.prev(),TRUE);
  TEST ("color1.prev()",color1.prev(),TRUE);
  TEST ("color1.prev()",color1.prev(),TRUE);
  TEST ("color1.prev()",color1.prev(),TRUE);
  TEST ("color1.prev()",color1.prev(),FALSE);
  TEST ("color2=color1", (color2=color1,(color1==color2)), TRUE);
  TEST ("color2.resize(30)", color2.resize(30), TRUE);
  TEST ("color2.find(\"BROWN\")", color2.find("BROWN"), TRUE);
  TEST ("color2.value()", strcmp (color2.value(), "BROWN"), 0);
  TEST ("color2.find(\"MAGENTA\")", color2.find("MAGENTA"), TRUE);
  TEST ("color2.value()", strcmp (color2.value(), "MAGENTA"), 0);
  TEST ("color2.find(\"GREY\")", color2.find("GREY"), TRUE);
  TEST ("color2.value()", strcmp (color2.value(), "GREY"), 0);
  TEST ("color2.get_bucket_count()", color2.get_bucket_count(), 7);
  TEST ("color2.length()", color2.length(), 8);
  TEST ("color1.set_ratio(1.0)", (color1.set_ratio(1.0),1.0), 1.0);
  TEST ("color1.resize(30)", color1.resize(30), TRUE);
  TEST ("color1.get_bucket_count()", color1.get_bucket_count(), 7);
  TEST ("color1.find(\"YELLOW\")", color1.find("YELLOW"), TRUE);
  TEST ("color1.find(\"BLUE\")", color1.find("BLUE"), TRUE);
  TEST ("color1.find(\"WHITE\")", color1.find("WHITE"), TRUE);
  TEST ("color1.find(\"BLACK\")", color1.find("BLACK"), TRUE);
  TEST ("color1.resize(60)", color1.resize(60), TRUE);
  TEST ("color1.get_bucket_count()", color1.get_bucket_count(), 19);
  TEST ("color1.find(\"YELLOW\")", color1.find("YELLOW"), TRUE);
  TEST ("color1.value()", strcmp (color1.value(), "YELLOW"), 0);
  TEST ("color1.find(\"BLUE\")", color1.find("BLUE"), TRUE);
  TEST ("color1.value()", strcmp (color1.value(), "BLUE"), 0);
  TEST ("color1.find(\"WHITE\")", color1.find("WHITE"), TRUE);
  TEST ("color1.value()", strcmp (color1.value(), "WHITE"), 0);
  TEST ("color1.find(\"BLACK\")", color1.find("BLACK"), TRUE);
  TEST ("color1.value()", strcmp (color1.value(), "BLACK"), 0);
  TEST ("color1.remove()", color1.remove(), TRUE);
  TEST ("color1.find(\"BLACK\")", color1.find("BLACK"), FALSE);
  CoolSet<char*> color5(color2);
  TEST ("CoolSet<char*> Color5(color2)", (color5==color2), TRUE);
  TEST ("color5.remove(\"WHITE\")", color5.remove("WHITE"), TRUE);
  TEST ("color2.search(color5)", color2.search(color5), TRUE);
  TEST ("color1.clear()", (color1.clear(), color1.length()), 0);
  TEST ("color2.clear()", (color2.clear(), color2.length()), 0);
}

void test_charP_2 () {
  CoolSet<char*> color0;
  CoolSet<char*> color1;
  CoolSet<char*> color2;
  CoolSet<char*> color3;
  CoolSet<char*> color4;
  CoolSet<char*> color5; 
  CoolSet<char*> color6;
  CoolSet<char*> color7;
  color0.put("RED");
  color0.put("BLUE");
  color0.put("GREEN");
  color0.put("BLACK");
  color0.put("PURPLE");
  color0.put("GREY");
  color0.put("WHITE");
  color0.put("YELLOW");
  color0.put("ORANGE");
  color1.put("GREEN");
  color1.put("BLACK");
  color1.put("GREY");
  color1.put("WHITE");
  color1.put("ORANGE");
  color1.put("YELLOW");
  color1.put("MAGENTA");
  color1.put("PURPLE");
  color2.put("RED");
  color2.put("BLUE");
  color3.put("MAGENTA");
  color4 = color0;
  color4.put("MAGENTA");
  color5 = color1;
  color5.remove("MAGENTA");
  color6.put("RED");
  color6.put("BLUE");
  color6.put("MAGENTA");
  TEST ("(color0 - color1) == color2", ((color0-color1) == color2), TRUE);
  TEST ("(color1 - color0) == color3", ((color1-color0) == color3), TRUE);
  TEST ("(color0 | color1) == color4", ((color0|color1) == color4), TRUE);
  TEST ("(color1 | color0) == color4", ((color1|color0) == color4), TRUE);
  TEST ("(color0 & color1) == color5", ((color0&color1) == color5), TRUE);
  TEST ("(color1 & color0) == color5", ((color1&color0) == color5), TRUE);
  TEST ("(color0 ^ color1) == color6", ((color0^color1) == color6), TRUE);
  TEST ("(color1 ^ color0) == color6", ((color1^color0) == color6), TRUE);
  color7 = color0;
  TEST ("color0 -= color1", (color0 -= color1, color0 == color2), TRUE);
  color0 = color7; color7=color1;
  TEST ("color1 -= color0", (color1 -= color0, color1 == color3), TRUE);
  color1 = color7; color7=color0;
  TEST ("color0 |= color1", (color0 |= color1, color0 == color4), TRUE);
  color0 = color7; color7=color1;
  TEST ("color1 |= color0", (color1 |= color0, color1 == color4), TRUE);
  color1 = color7; color7=color0;
  TEST ("color0 &= color1", (color0 &= color1, color0 == color5), TRUE);
  color0 = color7; color7=color1;
  TEST ("color1 &= color0", (color1 &= color0, color1 == color5), TRUE);
  color1 = color7; color7=color0;
  TEST ("color0 ^= color1", (color0 ^= color1, color0 == color6), TRUE);
  color0 = color7; color7=color1;
  TEST ("color1 ^= color0", (color1 ^= color0, color1 == color6), TRUE);
  color1 = color7; color7 = color0;
  TEST ("color0.set_difference(color1)", (color0.set_difference(color1), color0 == color2), TRUE);
  color0 = color7;
  TEST ("color0.set_union(color1)", (color0.set_union(color1), color0 == color4), TRUE);
  color0 = color7;
  TEST ("color0.set_intersection(color1)", (color0.set_intersection(color1), color0 == color5), TRUE);
  color0 = color7;
  TEST ("color0.set_xor(color1)", (color0.set_xor(color1), color0 == color6), TRUE);
  color0 = color7;
  color0.reset(), color1.reset();
  TEST ("color0.next_intersection(color1)", color0.next_intersection(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"BLACK"),0);
  TEST ("color0.next_intersection(color1)", color0.next_intersection(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"PURPLE"),0);
  TEST ("color0.next_intersection(color1)", color0.next_intersection(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"WHITE"),0);
  TEST ("color0.next_intersection(color1)", color0.next_intersection(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"YELLOW"),0);
  TEST ("color0.next_intersection(color1)", color0.next_intersection(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"GREY"),0);
  TEST ("color0.next_intersection(color1)", color0.next_intersection(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"ORANGE"),0);
  TEST ("color0.next_intersection(color1)", color0.next_intersection(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"GREEN"),0);
  TEST ("color0.next_intersection(color1)", color0.next_intersection(color1), FALSE);
  color0.reset(), color1.reset();
  TEST ("color0.next_difference(color1)", color0.next_difference(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"RED"),0);
  TEST ("color0.next_difference(color1)", color0.next_difference(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"BLUE"),0);
  TEST ("color0.next_difference(color1)", color0.next_difference(color1), FALSE);
  color0.reset(), color1.reset();
  TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"RED"),0);
  TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"BLUE"),0);
  TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"BLACK"),0);
  TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"PURPLE"),0);
  TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"WHITE"),0);
  TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"YELLOW"),0);
  TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"GREY"),0);
  TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"ORANGE"),0);
  TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"GREEN"),0);
  TEST ("color0.next_union(color1)", color0.next_union(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"MAGENTA"),0);
  TEST ("color0.next_union(color1)", color0.next_union(color1), FALSE);
  color0.reset(), color1.reset();
  TEST ("color0.next_xor(color1)", color0.next_xor(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"RED"),0);
  TEST ("color0.next_xor(color1)", color0.next_xor(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"BLUE"),0);
  TEST ("color0.next_xor(color1)", color0.next_xor(color1), TRUE);
  TEST ("color0.value()", strcmp(color0.value(),"MAGENTA"),0);
  TEST ("color0.next_xor(color1)", color0.next_xor(color1), FALSE);
}


void test_leak () {
  for (;;) {
    test_int ();
    test_int_2 ();
    test_double ();
    test_double_2 ();
    test_charP ();
    test_charP_2 ();
  }
}

int main (void) {
  START("CoolSet");
  test_int ();
  test_int_2 ();
  test_double ();
  test_double_2 ();
  test_charP ();
  test_charP_2 ();
#if LEAK
  test_leak();
#endif
  SUMMARY();
  return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?