Advertisement
GeeckoDev

HybridTrie test template3

Dec 11th, 2014
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.49 KB | None | 0 0
  1. #include "hybridtrie.h"
  2. #include "test.h"
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. TEST(exists)
  8. {
  9.     cout << " exists";
  10.     HybridTrie t;
  11.  
  12.     ASSERT(!t.exists(""))
  13.  
  14.     t.insert("algav");
  15.     ASSERT(t.exists("algav") && !t.exists("alga") && !t.exists("a"))
  16.  
  17.     t.insert("alga");
  18.     ASSERT(t.exists("alga"))
  19.  
  20.     SUCCESS()
  21. }
  22.  
  23. TEST(countWords)
  24. {
  25.     cout << " countWords";
  26.     HybridTrie t;
  27.  
  28.     t.insert("");
  29.     ASSERT(t.countWords() == 0)
  30.  
  31.     t.insert("algav");
  32.     ASSERT(t.countWords() == 1)
  33.  
  34.     t.insert("algav");
  35.     ASSERT(t.countWords() == 1)
  36.  
  37.     t.insert("alga");
  38.     ASSERT(t.countWords() == 2)
  39.  
  40.     t.insert("test");
  41.     ASSERT(t.countWords() == 3)
  42.  
  43.     t.insert("akga");
  44.     ASSERT(t.countWords() == 4)
  45.  
  46.     SUCCESS()
  47. }
  48.  
  49. TEST(listWords)
  50. {
  51.     cout << " listWords";
  52.     HybridTrie t;
  53.  
  54.     ASSERT(t.listWords().empty())
  55.  
  56.     t.insert("algav");
  57.     t.insert("abc");
  58.     t.insert("helloworld");
  59.     t.insert("z");
  60.     t.insert("because");
  61.     t.insert("caused");
  62.     t.insert("cause");
  63.     t.insert("cauded");
  64.     t.insert("cauzed");
  65.     t.insert("hellozorld");
  66.     t.insert("algav");
  67.     ASSERT(t.listWords().at(0) == "abc")
  68.     ASSERT(t.listWords().at(1) == "algav")
  69.     ASSERT(t.listWords().at(2) == "because")
  70.     ASSERT(t.listWords().at(3) == "cauded")
  71.     ASSERT(t.listWords().at(4) == "cause")
  72.     ASSERT(t.listWords().at(5) == "caused")
  73.     ASSERT(t.listWords().at(6) == "cauzed")
  74.     ASSERT(t.listWords().at(7) == "helloworld")
  75.     ASSERT(t.listWords().at(8) == "hellozorld")
  76.     ASSERT(t.listWords().at(9) == "z")
  77.     ASSERT(t.listWords().size() == 10)
  78.  
  79.     SUCCESS()
  80. }
  81.  
  82. TEST(countNil)
  83. {
  84.     cout << " countNil";
  85.     HybridTrie t;  
  86.  
  87.     ASSERT(t.countNil() == 3)
  88.  
  89.     t.insert("m");
  90.     ASSERT(t.countNil() == 3)
  91.  
  92.     t.insert("ma");
  93.     ASSERT(t.countNil() == 5)
  94.    
  95.     t.insert("a");
  96.     ASSERT(t.countNil() == 7)
  97.  
  98.     t.insert("z");
  99.     ASSERT(t.countNil() == 9)
  100.  
  101.     SUCCESS()  
  102. }
  103.  
  104. TEST(height)
  105. {
  106.     cout << " height";
  107.     HybridTrie t;  
  108.  
  109.     ASSERT(t.height() == 1)
  110.  
  111.     t.insert("m");
  112.     ASSERT(t.height() == 1)
  113.  
  114.     t.insert("ma");
  115.     ASSERT(t.height() == 2)
  116.    
  117.     t.insert("a");
  118.     ASSERT(t.height() == 2)
  119.  
  120.     t.insert("z");
  121.     ASSERT(t.height() == 2)
  122.  
  123.     t.insert("abcdefghijklmnopqrstuvwxyz");
  124.     ASSERT(t.height() == 27)
  125.  
  126.     SUCCESS()  
  127. }
  128.  
  129. TEST(meanDepth)
  130. {
  131.     cout << " meanDepth";
  132.     HybridTrie t;
  133.  
  134.     ASSERT(t.meanDepth() == 1)
  135.  
  136.     t.insert("bbb");
  137.     ASSERT(t.meanDepth() == 3)
  138.  
  139.     t.insert("cb");
  140.     ASSERT(t.meanDepth() == 3)
  141.  
  142.     t.insert("abcde");
  143.     ASSERT(t.meanDepth() == 4)
  144.  
  145.     SUCCESS()
  146. }
  147.  
  148. TEST(prefix)
  149. {
  150.     cout << " prefix";
  151.     HybridTrie t;
  152.  
  153.     ASSERT(t.prefix("algav") == 0)
  154.  
  155.     t.insert("algav");
  156.     ASSERT(t.prefix("a") == 1)
  157.     ASSERT(t.prefix("al") == 1)
  158.     ASSERT(t.prefix("alg") == 1)
  159.     ASSERT(t.prefix("alga") == 1)
  160.     ASSERT(t.prefix("algav") == 1)
  161.  
  162.     t.insert("alaav");
  163.     t.insert("aagav");
  164.     ASSERT(t.prefix("a") == 3)
  165.     ASSERT(t.prefix("al") == 2)
  166.     ASSERT(t.prefix("aag") == 1)
  167.     ASSERT(t.prefix("d") == 0)
  168.  
  169.     SUCCESS()
  170. }
  171.  
  172. TEST(remove)
  173. {
  174.     cout << " remove";
  175.     HybridTrie t;
  176.  
  177.     t.insert("algav");
  178.     t.insert("alg");
  179.     t.remove("alga");
  180.     ASSERT(t.height() == 5)
  181.     ASSERT(t.prefix("a") == 2)
  182.  
  183.     t.remove("algav");
  184.     ASSERT(t.height() == 3)
  185.     ASSERT(t.prefix("a") == 1)
  186.  
  187.     t.remove("alg");
  188.     ASSERT(t.height() == 1)
  189.     ASSERT(t.prefix("a") == 0)
  190.  
  191.     SUCCESS()
  192. }
  193.  
  194. TEST(merge)
  195. {
  196.     cout << " merge";
  197.     HybridTrie ta;
  198.     HybridTrie tb;
  199.     HybridTrie tc;
  200.  
  201.     ta.insert("hello");
  202.     ta.insert("algav");
  203.     ta.insert("set");
  204.     tb.insert("algev");
  205.     tb.insert("ermaged");
  206.     tb.insert("success");
  207.     tb.insert("set");
  208.     tb.insert("alg");
  209.     tc = ta.merge(tb);
  210.     ASSERT(tc.listWords().at(0) == "alg")
  211.     ASSERT(tc.listWords().at(1) == "algav")
  212.     ASSERT(tc.listWords().at(2) == "algev")
  213.     ASSERT(tc.listWords().at(3) == "ermaged")
  214.     ASSERT(tc.listWords().at(4) == "hello")
  215.     ASSERT(tc.listWords().at(5) == "set")
  216.     ASSERT(tc.listWords().at(6) == "success")
  217.  
  218.     SUCCESS()
  219. }
  220.  
  221. int main(int argc, char *argv[])
  222. {
  223.     test_t test[] =
  224.     {
  225.         test_exists,
  226.         test_countWords,
  227.         test_listWords,
  228.         test_countNil,
  229.         test_height,
  230.         test_meanDepth,
  231.         test_prefix,
  232.         test_remove,
  233.         test_merge
  234.     };
  235.  
  236.     return test_run(test, sizeof(test) / sizeof(test_t));
  237. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement