Advertisement
TwITe

Untitled

Aug 21st, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.25 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(get_element(i) == i + 2);
  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.     bool valid_key = true;
  156.  
  157.     try {
  158.         get_element(10);
  159.     }
  160.     catch (...) {
  161.         valid_key = false;
  162.     }
  163.  
  164.     assert(valid_key == true);
  165.  
  166.     valid_key = true;
  167.  
  168.     try {
  169.         get_element(10);
  170.     }
  171.     catch (...) {
  172.         valid_key = false;
  173.     }
  174.  
  175.     assert(valid_key == true);
  176.  
  177. }
  178.  
  179. void cannot_get_element_with_invalid_key_test() {
  180.     destroy_vector_map();
  181.  
  182.     for (int i = 0; i < 100; i++) {
  183.         add_element(i, i + 2);
  184.     }
  185.  
  186.     bool invalid_key = false;
  187.  
  188.     try {
  189.         get_element(-1);
  190.     }
  191.     catch (...) {
  192.         invalid_key = true;
  193.     }
  194.  
  195.     assert(invalid_key == true);
  196.  
  197.     invalid_key = false;
  198.  
  199.     try {
  200.         get_element(1000);
  201.     }
  202.     catch (...) {
  203.         invalid_key = true;
  204.     }
  205.  
  206.     assert(invalid_key == true);
  207. }
  208.  
  209. int main() {
  210.     can_add_elements_to_vector_map_test();
  211.     can_add_existed_elements_to_vector_map_test();
  212.     cannot_delete_not_existed_element_test;
  213.     can_delete_existed_element_test();
  214.     can_find_element_with_valid_key_test();
  215.     cannot_find_element_with_invalid_key_test();
  216.     can_get_element_with_valid_key_test();
  217.     cannot_get_element_with_invalid_key_test();
  218.  
  219.     system("PAUSE");
  220.     return 0;
  221. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement