Advertisement
TwITe

Untitled

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