Advertisement
TwITe

Untitled

Aug 21st, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.86 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cassert>
  4. using namespace std;
  5.  
  6. vector <int> vector_map;
  7.  
  8. void destroy_vector_map() {
  9.     vector_map.clear();
  10. }
  11.  
  12. int get_element(int key) {
  13.     for (int i = 0; i < vector_map.size(); i += 2) {
  14.         if (vector_map[i] == key) {
  15.             return vector_map[i + 1];
  16.         }
  17.     }
  18.     throw std::runtime_error("invalid key");
  19. }
  20.  
  21. bool find_element(int key) {
  22.     for (int i = 0; i < vector_map.size(); i += 2) {
  23.         if (vector_map[i] == key) {
  24.             return true;
  25.         }
  26.     }
  27.     return false;
  28. }
  29.  
  30. void add_element(int key, int value) {
  31.     if (!find_element(key)) {
  32.         vector_map.push_back(key);
  33.         vector_map.push_back(value);
  34.         return;
  35.     }
  36.     for (int i = 0; i < vector_map.size(); i += 2) {
  37.         if (vector_map[i] == key) {
  38.             vector_map[i + 1] = value;
  39.         }
  40.     }
  41. }
  42.  
  43. bool delete_element(int key) {
  44.     for (int i = 0; i < vector_map.size(); i += 2) {
  45.         if (vector_map[i] == key) {
  46.             vector_map.erase(vector_map.begin() + i, vector_map.begin() + i + 2);
  47.             return true;
  48.         }
  49.     }
  50.     return false;
  51. }
  52.  
  53. //Тесты
  54. void can_add_elements_to_vector_map_test() {
  55.     destroy_vector_map();
  56.  
  57.     for (int i = 0; i < 2000; i += 5) {
  58.         add_element(i, i + 2);
  59.     }
  60.     for (int i = 0; i < 2000; i += 5) {
  61.         assert(find_element(i) == true);
  62.     }
  63. }
  64.  
  65. void can_add_existed_elements_to_vector_map_test() {
  66.     destroy_vector_map();
  67.  
  68.     for (int i = 0; i < 2000; i += 5) {
  69.         add_element(i, i + 2);
  70.     }
  71.     for (int i = 0; i < 2000; i += 5) {
  72.         assert(find_element(i) == true);
  73.     }
  74.  
  75.     for (int i = 0; i < 2000; i += 5) {
  76.         add_element(i, i + 10);
  77.         int current_element = get_element(i);
  78.         assert(current_element == i + 10);
  79.     }
  80.     for (int i = 0; i < 2000; i += 5) {
  81.         assert(find_element(i) == true);
  82.     }
  83. }
  84.  
  85. void cannot_delete_not_existed_element_test() {
  86.     destroy_vector_map();
  87.  
  88.     for (int i = 0; i < 1000; i++) {
  89.         add_element(i, i + 2);
  90.     }
  91.  
  92.     assert(delete_element(1000) == false);
  93.     assert(delete_element(2000) == false);
  94.     assert(delete_element(2500) == false);
  95.     assert(delete_element(3000) == false);
  96. }
  97.  
  98. void can_delete_existed_element_test() {
  99.     destroy_vector_map();
  100.  
  101.     for (int i = 0; i < 10; i++) {
  102.         add_element(i, i + 2);
  103.     }
  104.  
  105.     assert(delete_element(2) == true);
  106.     assert(delete_element(5) == true);
  107.     assert(delete_element(6) == true);
  108.  
  109.     assert(find_element(2) == false);
  110.     assert(find_element(5) == false);
  111.     assert(find_element(0) == true);
  112.     assert(find_element(4) == true);
  113. }
  114.  
  115. void can_find_element_with_valid_key_test() {
  116.     destroy_vector_map();
  117.  
  118.     for (int i = 0; i < 10; i++) {
  119.         add_element(i, i + 2);
  120.     }
  121.  
  122.     for (int i = 0; i < 10; i++) {
  123.         assert(find_element(i) == true);
  124.     }
  125. }
  126.  
  127. void cannot_find_element_with_invalid_key_test() {
  128.     destroy_vector_map();
  129.  
  130.     for (int i = 0; i < 10; i++) {
  131.         add_element(i, i + 2);
  132.     }
  133.  
  134.     for (int i = 10; i < 100; i++) {
  135.         assert(find_element(i) == false);
  136.     }
  137. }
  138.  
  139. void can_get_element_with_valid_key_test() {
  140.     destroy_vector_map();
  141.  
  142.     for (int i = 0; i < 1000; i++) {
  143.         add_element(i, i + 2);
  144.     }
  145.  
  146.     for (int i = 0; i < 1000; i++) {
  147.         int current_element = get_element(i);
  148.         assert(current_element == i + 2);
  149.     }
  150. }
  151.  
  152. void cannot_get_element_with_invalid_key_test() {
  153.     destroy_vector_map();
  154.  
  155.     for (int i = 0; i < 100; i++) {
  156.         add_element(i, i + 2);
  157.     }
  158.  
  159.     bool invalid_key = false;
  160.  
  161.     try {
  162.         get_element(-1);
  163.     }
  164.     catch (...) {
  165.         invalid_key = true;
  166.     }
  167.  
  168.     assert(invalid_key == true);
  169.  
  170.     invalid_key = false;
  171.  
  172.     try {
  173.         get_element(1000);
  174.     }
  175.     catch (...) {
  176.         invalid_key = true;
  177.     }
  178.  
  179.     assert(invalid_key == true);
  180. }
  181.  
  182. int main() {
  183.     can_add_elements_to_vector_map_test();
  184.     can_add_existed_elements_to_vector_map_test();
  185.     cannot_delete_not_existed_element_test;
  186.     can_delete_existed_element_test();
  187.     can_find_element_with_valid_key_test();
  188.     cannot_find_element_with_invalid_key_test();
  189.     can_get_element_with_valid_key_test();
  190.     cannot_get_element_with_invalid_key_test();
  191.  
  192.     system("PAUSE");
  193.     return 0;
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement