Advertisement
TwITe

Untitled

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