You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

99 regels
2.7 KiB

  1. //
  2. // Lol Engine
  3. //
  4. // Copyright: (c) 2010-2014 Sam Hocevar <sam@hocevar.net>
  5. // (c) 2013-2014 Benjamin "Touky" Huet <huet.benjamin@gmail.com>
  6. // (c) 2013-2014 Guillaume Bittoun <guillaume.bittoun@gmail.com>
  7. // This program is free software; you can redistribute it and/or
  8. // modify it under the terms of the Do What The Fuck You Want To
  9. // Public License, Version 2, as published by Sam Hocevar. See
  10. // http://www.wtfpl.net/ for more details.
  11. //
  12. #include <lol/engine-internal.h>
  13. #include <lolunit.h>
  14. namespace lol
  15. {
  16. class test_tree : public avl_tree<int, int>
  17. {
  18. public:
  19. int get_root_balance()
  20. {
  21. return this->m_root->get_balance();
  22. }
  23. };
  24. lolunit_declare_fixture(AvlTreeTest)
  25. {
  26. void SetUp() {}
  27. void TearDown() {}
  28. lolunit_declare_test(AvlTreeInsert)
  29. {
  30. test_tree tree;
  31. lolunit_assert_equal(tree.insert(1, 1), true);
  32. lolunit_assert_equal(tree.insert(2, 3), true);
  33. lolunit_assert_equal(tree.insert(2, 0), false);
  34. }
  35. lolunit_declare_test(AvlTreeBalanceCheck)
  36. {
  37. test_tree tree;
  38. lolunit_assert_equal(tree.insert(10, 1), true);
  39. lolunit_assert_equal(tree.get_root_balance(), 0);
  40. lolunit_assert_equal(tree.insert(20, 1), true);
  41. lolunit_assert_equal(tree.get_root_balance(), 1);
  42. lolunit_assert_equal(tree.insert(30, 1), true);
  43. lolunit_assert_equal(tree.get_root_balance(), 0);
  44. lolunit_assert_equal(tree.insert(00, 1), true);
  45. lolunit_assert_equal(tree.get_root_balance(), -1);
  46. lolunit_assert_equal(tree.insert(-10, 1), true);
  47. lolunit_assert_equal(tree.get_root_balance(), -1);
  48. lolunit_assert_equal(tree.insert(-20, 1), true);
  49. lolunit_assert_equal(tree.get_root_balance(), 0);
  50. lolunit_assert_equal(tree.insert(-20, 1), false);
  51. lolunit_assert_equal(tree.get_root_balance(), 0);
  52. lolunit_assert_equal(tree.insert(11, 1), true);
  53. lolunit_assert_equal(tree.get_root_balance(), 1);
  54. lolunit_assert_equal(tree.insert(13, 1), true);
  55. lolunit_assert_equal(tree.get_root_balance(), 1);
  56. }
  57. lolunit_declare_test(AvlTreeDeletion)
  58. {
  59. test_tree tree;
  60. lolunit_assert_equal(tree.insert(10, 1), true);
  61. lolunit_assert_equal(tree.get_root_balance(), 0);
  62. lolunit_assert_equal(tree.insert(20, 1), true);
  63. lolunit_assert_equal(tree.get_root_balance(), 1);
  64. lolunit_assert_equal(tree.insert(30, 1), true);
  65. lolunit_assert_equal(tree.get_root_balance(), 0);
  66. lolunit_assert_equal(tree.erase(30), true);
  67. lolunit_assert_equal(tree.insert(30, 1), true);
  68. lolunit_assert_equal(tree.erase(20), true);
  69. lolunit_assert_equal(tree.insert(20, 1), true);
  70. }
  71. };
  72. }