Advertisement
AlexSSH

regex aut test

Apr 30th, 2024 (edited)
671
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 28.06 KB | None | 0 0
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <set>
  4. #include <stack>
  5. #include <string>
  6. #include <vector>
  7.  
  8. using namespace std;
  9.  
  10. // -------- Шаблоны тестирующих функций ----------
  11. #pragma region TEST_LIB
  12.  
  13. template<typename T, typename U>
  14. void
  15. AssertEqualImpl(const T &t, const U &u, const std::string &t_str, const std::string &u_str, const std::string &file,
  16.                 const std::string &func, unsigned line, const std::string &hint) {
  17.     if (t != u) {
  18.         std::cout << std::boolalpha;
  19.         std::cout << file << "(" << line << "): " << func << ": ";
  20.         std::cout << "ASSERT_EQUAL(" << t_str << ", " << u_str << ") failed: ";
  21.         std::cout << t << " != " << u << ".";
  22.         if (!hint.empty()) {
  23.             std::cout << " Hint: " << hint;
  24.         }
  25.         std::cout << std::endl;
  26.         abort();
  27.     }
  28. }
  29.  
  30. #define ASSERT_EQUAL(a, b) AssertEqualImpl((a), (b), #a, #b, __FILE__, __FUNCTION__, __LINE__, ""s)
  31.  
  32. #define ASSERT_EQUAL_HINT(a, b, hint) AssertEqualImpl((a), (b), #a, #b, __FILE__, __FUNCTION__, __LINE__, (hint))
  33.  
  34. void
  35. AssertImpl(bool value, const std::string &expr_str, const std::string &file, const std::string &func, unsigned line,
  36.            const std::string &hint) {
  37.     if (!value) {
  38.         cout << file << "("s << line << "): "s << func << ": "s;
  39.         cout << "ASSERT("s << expr_str << ") failed."s;
  40.         if (!hint.empty()) {
  41.             cout << " Hint: "s << hint;
  42.         }
  43.         cout << endl;
  44.         abort();
  45.     }
  46. }
  47.  
  48. #define ASSERT(expr) AssertImpl(!!(expr), #expr, __FILE__, __FUNCTION__, __LINE__, ""s)
  49.  
  50. #define ASSERT_HINT(expr, hint) AssertImpl(!!(expr), #expr, __FILE__, __FUNCTION__, __LINE__, (hint))
  51.  
  52. template<typename T, typename U>
  53. void RunTestImpl(T &test, U &func) {
  54.     test();
  55.     std::cerr << func << " OK" << std::endl;
  56. }
  57.  
  58. #define RUN_TEST(func)  RunTestImpl((func), #func)
  59.  
  60. #pragma endregion TEST_LIB
  61. // -------- Конец шаблонов тестирующих функций ----------
  62.  
  63. class Automation {
  64. public:
  65.     explicit Automation(const std::string &regexp) :
  66.      // TODO
  67.     }
  68.  
  69.     [[nodiscard]] bool recognizes(std::string_view text) const {
  70.         // TODO
  71.     }
  72.  
  73. private:
  74.  // TODO
  75.  
  76. };
  77.  
  78. class AutomationTester {
  79.     // -------- Тестирующие функций ----------
  80.  
  81. #pragma region TESTS
  82.  
  83.     static void Test5thSymbolFromEndIs1() {
  84.         Automation automation(""); // 5-ый символ с конца равен 1
  85.  
  86.         ASSERT(!automation.recognizes(""));
  87.  
  88.         ASSERT(!automation.recognizes("0"));
  89.         ASSERT(!automation.recognizes("1"));
  90.  
  91.         ASSERT(!automation.recognizes("00"));
  92.         ASSERT(!automation.recognizes("01"));
  93.         ASSERT(!automation.recognizes("10"));
  94.         ASSERT(!automation.recognizes("11"));
  95.  
  96.         ASSERT(!automation.recognizes("000"));
  97.         ASSERT(!automation.recognizes("001"));
  98.         ASSERT(!automation.recognizes("010"));
  99.         ASSERT(!automation.recognizes("011"));
  100.         ASSERT(!automation.recognizes("100"));
  101.         ASSERT(!automation.recognizes("101"));
  102.         ASSERT(!automation.recognizes("110"));
  103.         ASSERT(!automation.recognizes("111"));
  104.        
  105.         ASSERT(!automation.recognizes("0000"));
  106.         ASSERT(!automation.recognizes("0001"));
  107.         ASSERT(!automation.recognizes("0010"));
  108.         ASSERT(!automation.recognizes("0011"));
  109.         ASSERT(!automation.recognizes("0100"));
  110.         ASSERT(!automation.recognizes("0101"));
  111.         ASSERT(!automation.recognizes("0110"));
  112.         ASSERT(!automation.recognizes("0111"));
  113.         ASSERT(!automation.recognizes("1000"));
  114.         ASSERT(!automation.recognizes("1001"));
  115.         ASSERT(!automation.recognizes("1010"));
  116.         ASSERT(!automation.recognizes("1011"));
  117.         ASSERT(!automation.recognizes("1100"));
  118.         ASSERT(!automation.recognizes("1101"));
  119.         ASSERT(!automation.recognizes("1110"));
  120.         ASSERT(!automation.recognizes("1111"));
  121.  
  122.         ASSERT(!automation.recognizes("00000"));
  123.         ASSERT(!automation.recognizes("00001"));
  124.         ASSERT(!automation.recognizes("00010"));
  125.         ASSERT(!automation.recognizes("00011"));
  126.         ASSERT(!automation.recognizes("00100"));
  127.         ASSERT(!automation.recognizes("00101"));
  128.         ASSERT(!automation.recognizes("00110"));
  129.         ASSERT(!automation.recognizes("00111"));
  130.         ASSERT(!automation.recognizes("01000"));
  131.         ASSERT(!automation.recognizes("01001"));
  132.         ASSERT(!automation.recognizes("01010"));
  133.         ASSERT(!automation.recognizes("01011"));
  134.         ASSERT(!automation.recognizes("01100"));
  135.         ASSERT(!automation.recognizes("01101"));
  136.         ASSERT(!automation.recognizes("01110"));
  137.         ASSERT(!automation.recognizes("01111"));
  138.         ASSERT(automation.recognizes("10000"));
  139.         ASSERT(automation.recognizes("10001"));
  140.         ASSERT(automation.recognizes("10010"));
  141.         ASSERT(automation.recognizes("10011"));
  142.         ASSERT(automation.recognizes("10100"));
  143.         ASSERT(automation.recognizes("10101"));
  144.         ASSERT(automation.recognizes("10110"));
  145.         ASSERT(automation.recognizes("10111"));
  146.         ASSERT(automation.recognizes("11000"));
  147.         ASSERT(automation.recognizes("11001"));
  148.         ASSERT(automation.recognizes("11010"));
  149.         ASSERT(automation.recognizes("11011"));
  150.         ASSERT(automation.recognizes("11100"));
  151.         ASSERT(automation.recognizes("11101"));
  152.         ASSERT(automation.recognizes("11110"));
  153.         ASSERT(automation.recognizes("11111"));
  154.  
  155.         ASSERT(!automation.recognizes("000000"));
  156.         ASSERT(!automation.recognizes("000001"));
  157.         ASSERT(!automation.recognizes("000010"));
  158.         ASSERT(!automation.recognizes("000011"));
  159.         ASSERT(!automation.recognizes("000100"));
  160.         ASSERT(!automation.recognizes("000101"));
  161.         ASSERT(!automation.recognizes("000110"));
  162.         ASSERT(!automation.recognizes("000111"));
  163.         ASSERT(!automation.recognizes("001000"));
  164.         ASSERT(!automation.recognizes("001001"));
  165.         ASSERT(!automation.recognizes("001010"));
  166.         ASSERT(!automation.recognizes("001011"));
  167.         ASSERT(!automation.recognizes("001100"));
  168.         ASSERT(!automation.recognizes("001101"));
  169.         ASSERT(!automation.recognizes("001110"));
  170.         ASSERT(!automation.recognizes("001111"));
  171.         ASSERT(automation.recognizes("010000"));
  172.         ASSERT(automation.recognizes("010001"));
  173.         ASSERT(automation.recognizes("010010"));
  174.         ASSERT(automation.recognizes("010011"));
  175.         ASSERT(automation.recognizes("010100"));
  176.         ASSERT(automation.recognizes("010101"));
  177.         ASSERT(automation.recognizes("010110"));
  178.         ASSERT(automation.recognizes("010111"));
  179.         ASSERT(automation.recognizes("011000"));
  180.         ASSERT(automation.recognizes("011001"));
  181.         ASSERT(automation.recognizes("011010"));
  182.         ASSERT(automation.recognizes("011011"));
  183.         ASSERT(automation.recognizes("011100"));
  184.         ASSERT(automation.recognizes("011101"));
  185.         ASSERT(automation.recognizes("011110"));
  186.         ASSERT(automation.recognizes("011111"));
  187.         ASSERT(!automation.recognizes("100000"));
  188.         ASSERT(!automation.recognizes("100001"));
  189.         ASSERT(!automation.recognizes("100010"));
  190.         ASSERT(!automation.recognizes("100011"));
  191.         ASSERT(!automation.recognizes("100100"));
  192.         ASSERT(!automation.recognizes("100101"));
  193.         ASSERT(!automation.recognizes("100110"));
  194.         ASSERT(!automation.recognizes("100111"));
  195.         ASSERT(!automation.recognizes("101000"));
  196.         ASSERT(!automation.recognizes("101001"));
  197.         ASSERT(!automation.recognizes("101010"));
  198.         ASSERT(!automation.recognizes("101011"));
  199.         ASSERT(!automation.recognizes("101100"));
  200.         ASSERT(!automation.recognizes("101101"));
  201.         ASSERT(!automation.recognizes("101110"));
  202.         ASSERT(!automation.recognizes("101111"));
  203.         ASSERT(automation.recognizes("110000"));
  204.         ASSERT(automation.recognizes("110001"));
  205.         ASSERT(automation.recognizes("110010"));
  206.         ASSERT(automation.recognizes("110011"));
  207.         ASSERT(automation.recognizes("110100"));
  208.         ASSERT(automation.recognizes("110101"));
  209.         ASSERT(automation.recognizes("110110"));
  210.         ASSERT(automation.recognizes("110111"));
  211.         ASSERT(automation.recognizes("111000"));
  212.         ASSERT(automation.recognizes("111001"));
  213.         ASSERT(automation.recognizes("111010"));
  214.         ASSERT(automation.recognizes("111011"));
  215.         ASSERT(automation.recognizes("111100"));
  216.         ASSERT(automation.recognizes("111101"));
  217.         ASSERT(automation.recognizes("111110"));
  218.         ASSERT(automation.recognizes("111111"));
  219.     }
  220.  
  221.     static void Test11After00() {
  222.         Automation automation(""); // За каждой парой символов 00 следует пара символов 11
  223.  
  224.         ASSERT(automation.recognizes(""));
  225.  
  226.         ASSERT(automation.recognizes("0"));
  227.         ASSERT(automation.recognizes("1"));
  228.  
  229.         ASSERT(!automation.recognizes("00"));
  230.         ASSERT(automation.recognizes("01"));
  231.         ASSERT(automation.recognizes("10"));
  232.         ASSERT(automation.recognizes("11"));
  233.  
  234.         ASSERT(!automation.recognizes("000"));
  235.         ASSERT(!automation.recognizes("001"));
  236.         ASSERT(automation.recognizes("010"));
  237.         ASSERT(automation.recognizes("011"));
  238.         ASSERT(!automation.recognizes("100"));
  239.         ASSERT(automation.recognizes("101"));
  240.         ASSERT(automation.recognizes("110"));
  241.         ASSERT(automation.recognizes("111"));
  242.  
  243.         ASSERT(!automation.recognizes("0000"));
  244.         ASSERT(!automation.recognizes("0001"));
  245.         ASSERT(!automation.recognizes("0010"));
  246.         ASSERT(automation.recognizes("0011"));
  247.         ASSERT(!automation.recognizes("0100"));
  248.         ASSERT(automation.recognizes("0101"));
  249.         ASSERT(automation.recognizes("0110"));
  250.         ASSERT(automation.recognizes("0111"));
  251.         ASSERT(!automation.recognizes("1000"));
  252.         ASSERT(!automation.recognizes("1001"));
  253.         ASSERT(automation.recognizes("1010"));
  254.         ASSERT(automation.recognizes("1011"));
  255.         ASSERT(!automation.recognizes("1100"));
  256.         ASSERT(automation.recognizes("1101"));
  257.         ASSERT(automation.recognizes("1110"));
  258.         ASSERT(automation.recognizes("1111"));
  259.  
  260.         ASSERT(!automation.recognizes("00000"));
  261.         ASSERT(!automation.recognizes("00001"));
  262.         ASSERT(!automation.recognizes("00010"));
  263.         ASSERT(!automation.recognizes("00011"));
  264.         ASSERT(!automation.recognizes("00100"));
  265.         ASSERT(!automation.recognizes("00101"));
  266.         ASSERT(automation.recognizes("00110"));
  267.         ASSERT(automation.recognizes("00111"));
  268.         ASSERT(!automation.recognizes("01000"));
  269.         ASSERT(!automation.recognizes("01001"));
  270.         ASSERT(automation.recognizes("01010"));
  271.         ASSERT(automation.recognizes("01011"));
  272.         ASSERT(!automation.recognizes("01100"));
  273.         ASSERT(automation.recognizes("01101"));
  274.         ASSERT(automation.recognizes("01110"));
  275.         ASSERT(automation.recognizes("01111"));
  276.         ASSERT(!automation.recognizes("10000"));
  277.         ASSERT(!automation.recognizes("10001"));
  278.         ASSERT(!automation.recognizes("10010"));
  279.         ASSERT(automation.recognizes("10011"));
  280.         ASSERT(!automation.recognizes("10100"));
  281.         ASSERT(automation.recognizes("10101"));
  282.         ASSERT(automation.recognizes("10110"));
  283.         ASSERT(automation.recognizes("10111"));
  284.         ASSERT(!automation.recognizes("11000"));
  285.         ASSERT(!automation.recognizes("11001"));
  286.         ASSERT(automation.recognizes("11010"));
  287.         ASSERT(automation.recognizes("11011"));
  288.         ASSERT(!automation.recognizes("11100"));
  289.         ASSERT(automation.recognizes("11101"));
  290.         ASSERT(automation.recognizes("11110"));
  291.         ASSERT(automation.recognizes("11111"));
  292.  
  293.         ASSERT(!automation.recognizes("000000"));
  294.         ASSERT(!automation.recognizes("000001"));
  295.         ASSERT(!automation.recognizes("000010"));
  296.         ASSERT(!automation.recognizes("000011"));
  297.         ASSERT(!automation.recognizes("000100"));
  298.         ASSERT(!automation.recognizes("000101"));
  299.         ASSERT(!automation.recognizes("000110"));
  300.         ASSERT(!automation.recognizes("000111"));
  301.         ASSERT(!automation.recognizes("001000"));
  302.         ASSERT(!automation.recognizes("001001"));
  303.         ASSERT(!automation.recognizes("001010"));
  304.         ASSERT(!automation.recognizes("001011"));
  305.         ASSERT(!automation.recognizes("001100"));
  306.         ASSERT(automation.recognizes("001101"));
  307.         ASSERT(automation.recognizes("001110"));
  308.         ASSERT(automation.recognizes("001111"));
  309.         ASSERT(!automation.recognizes("010000"));
  310.         ASSERT(!automation.recognizes("010001"));
  311.         ASSERT(!automation.recognizes("010010"));
  312.         ASSERT(automation.recognizes("010011"));
  313.         ASSERT(!automation.recognizes("010100"));
  314.         ASSERT(automation.recognizes("010101"));
  315.         ASSERT(automation.recognizes("010110"));
  316.         ASSERT(automation.recognizes("010111"));
  317.         ASSERT(!automation.recognizes("011000"));
  318.         ASSERT(!automation.recognizes("011001"));
  319.         ASSERT(automation.recognizes("011010"));
  320.         ASSERT(automation.recognizes("011011"));
  321.         ASSERT(!automation.recognizes("011100"));
  322.         ASSERT(automation.recognizes("011101"));
  323.         ASSERT(automation.recognizes("011110"));
  324.         ASSERT(automation.recognizes("011111"));
  325.         ASSERT(!automation.recognizes("100000"));
  326.         ASSERT(!automation.recognizes("100001"));
  327.         ASSERT(!automation.recognizes("100010"));
  328.         ASSERT(!automation.recognizes("100011"));
  329.         ASSERT(!automation.recognizes("100100"));
  330.         ASSERT(!automation.recognizes("100101"));
  331.         ASSERT(automation.recognizes("100110"));
  332.         ASSERT(automation.recognizes("100111"));
  333.         ASSERT(!automation.recognizes("101000"));
  334.         ASSERT(!automation.recognizes("101001"));
  335.         ASSERT(automation.recognizes("101010"));
  336.         ASSERT(automation.recognizes("101011"));
  337.         ASSERT(!automation.recognizes("101100"));
  338.         ASSERT(automation.recognizes("101101"));
  339.         ASSERT(automation.recognizes("101110"));
  340.         ASSERT(automation.recognizes("101111"));
  341.         ASSERT(!automation.recognizes("110000"));
  342.         ASSERT(!automation.recognizes("110001"));
  343.         ASSERT(!automation.recognizes("110010"));
  344.         ASSERT(automation.recognizes("110011"));
  345.         ASSERT(!automation.recognizes("110100"));
  346.         ASSERT(automation.recognizes("110101"));
  347.         ASSERT(automation.recognizes("110110"));
  348.         ASSERT(automation.recognizes("110111"));
  349.         ASSERT(!automation.recognizes("111000"));
  350.         ASSERT(!automation.recognizes("111001"));
  351.         ASSERT(automation.recognizes("111010"));
  352.         ASSERT(automation.recognizes("111011"));
  353.         ASSERT(!automation.recognizes("111100"));
  354.         ASSERT(automation.recognizes("111101"));
  355.         ASSERT(automation.recognizes("111110"));
  356.         ASSERT(automation.recognizes("111111"));
  357.  
  358.         ASSERT(!automation.recognizes("0000000"));
  359.         ASSERT(!automation.recognizes("0000001"));
  360.         ASSERT(!automation.recognizes("0000010"));
  361.         ASSERT(!automation.recognizes("0000011"));
  362.         ASSERT(!automation.recognizes("0000100"));
  363.         ASSERT(!automation.recognizes("0000101"));
  364.         ASSERT(!automation.recognizes("0000110"));
  365.         ASSERT(!automation.recognizes("0000111"));
  366.         ASSERT(!automation.recognizes("0001000"));
  367.         ASSERT(!automation.recognizes("0001001"));
  368.         ASSERT(!automation.recognizes("0001010"));
  369.         ASSERT(!automation.recognizes("0001011"));
  370.         ASSERT(!automation.recognizes("0001100"));
  371.         ASSERT(!automation.recognizes("0001101"));
  372.         ASSERT(!automation.recognizes("0001110"));
  373.         ASSERT(!automation.recognizes("0001111"));
  374.         ASSERT(!automation.recognizes("0010000"));
  375.         ASSERT(!automation.recognizes("0010001"));
  376.         ASSERT(!automation.recognizes("0010010"));
  377.         ASSERT(!automation.recognizes("0010011"));
  378.         ASSERT(!automation.recognizes("0010100"));
  379.         ASSERT(!automation.recognizes("0010101"));
  380.         ASSERT(!automation.recognizes("0010110"));
  381.         ASSERT(!automation.recognizes("0010111"));
  382.         ASSERT(!automation.recognizes("0011000"));
  383.         ASSERT(!automation.recognizes("0011001"));
  384.         ASSERT(automation.recognizes("0011010"));
  385.         ASSERT(automation.recognizes("0011011"));
  386.         ASSERT(!automation.recognizes("0011100"));
  387.         ASSERT(automation.recognizes("0011101"));
  388.         ASSERT(automation.recognizes("0011110"));
  389.         ASSERT(automation.recognizes("0011111"));
  390.         ASSERT(!automation.recognizes("0100000"));
  391.         ASSERT(!automation.recognizes("0100001"));
  392.         ASSERT(!automation.recognizes("0100010"));
  393.         ASSERT(!automation.recognizes("0100011"));
  394.         ASSERT(!automation.recognizes("0100100"));
  395.         ASSERT(!automation.recognizes("0100101"));
  396.         ASSERT(automation.recognizes("0100110"));
  397.         ASSERT(automation.recognizes("0100111"));
  398.         ASSERT(!automation.recognizes("0101000"));
  399.         ASSERT(!automation.recognizes("0101001"));
  400.         ASSERT(automation.recognizes("0101010"));
  401.         ASSERT(automation.recognizes("0101011"));
  402.         ASSERT(!automation.recognizes("0101100"));
  403.         ASSERT(automation.recognizes("0101101"));
  404.         ASSERT(automation.recognizes("0101110"));
  405.         ASSERT(automation.recognizes("0101111"));
  406.         ASSERT(!automation.recognizes("0110000"));
  407.         ASSERT(!automation.recognizes("0110001"));
  408.         ASSERT(!automation.recognizes("0110010"));
  409.         ASSERT(automation.recognizes("0110011"));
  410.         ASSERT(!automation.recognizes("0110100"));
  411.         ASSERT(automation.recognizes("0110101"));
  412.         ASSERT(automation.recognizes("0110110"));
  413.         ASSERT(automation.recognizes("0110111"));
  414.         ASSERT(!automation.recognizes("0111000"));
  415.         ASSERT(!automation.recognizes("0111001"));
  416.         ASSERT(automation.recognizes("0111010"));
  417.         ASSERT(automation.recognizes("0111011"));
  418.         ASSERT(!automation.recognizes("0111100"));
  419.         ASSERT(automation.recognizes("0111101"));
  420.         ASSERT(automation.recognizes("0111110"));
  421.         ASSERT(automation.recognizes("0111111"));
  422.         ASSERT(!automation.recognizes("1000000"));
  423.         ASSERT(!automation.recognizes("1000001"));
  424.         ASSERT(!automation.recognizes("1000010"));
  425.         ASSERT(!automation.recognizes("1000011"));
  426.         ASSERT(!automation.recognizes("1000100"));
  427.         ASSERT(!automation.recognizes("1000101"));
  428.         ASSERT(!automation.recognizes("1000110"));
  429.         ASSERT(!automation.recognizes("1000111"));
  430.         ASSERT(!automation.recognizes("1001000"));
  431.         ASSERT(!automation.recognizes("1001001"));
  432.         ASSERT(!automation.recognizes("1001010"));
  433.         ASSERT(!automation.recognizes("1001011"));
  434.         ASSERT(!automation.recognizes("1001100"));
  435.         ASSERT(automation.recognizes("1001101"));
  436.         ASSERT(automation.recognizes("1001110"));
  437.         ASSERT(automation.recognizes("1001111"));
  438.         ASSERT(!automation.recognizes("1010000"));
  439.         ASSERT(!automation.recognizes("1010001"));
  440.         ASSERT(!automation.recognizes("1010010"));
  441.         ASSERT(automation.recognizes("1010011"));
  442.         ASSERT(!automation.recognizes("1010100"));
  443.         ASSERT(automation.recognizes("1010101"));
  444.         ASSERT(automation.recognizes("1010110"));
  445.         ASSERT(automation.recognizes("1010111"));
  446.         ASSERT(!automation.recognizes("1011000"));
  447.         ASSERT(!automation.recognizes("1011001"));
  448.         ASSERT(automation.recognizes("1011010"));
  449.         ASSERT(automation.recognizes("1011011"));
  450.         ASSERT(!automation.recognizes("1011100"));
  451.         ASSERT(automation.recognizes("1011101"));
  452.         ASSERT(automation.recognizes("1011110"));
  453.         ASSERT(automation.recognizes("1011111"));
  454.         ASSERT(!automation.recognizes("1100000"));
  455.         ASSERT(!automation.recognizes("1100001"));
  456.         ASSERT(!automation.recognizes("1100010"));
  457.         ASSERT(!automation.recognizes("1100011"));
  458.         ASSERT(!automation.recognizes("1100100"));
  459.         ASSERT(!automation.recognizes("1100101"));
  460.         ASSERT(automation.recognizes("1100110"));
  461.         ASSERT(automation.recognizes("1100111"));
  462.         ASSERT(!automation.recognizes("1101000"));
  463.         ASSERT(!automation.recognizes("1101001"));
  464.         ASSERT(automation.recognizes("1101010"));
  465.         ASSERT(automation.recognizes("1101011"));
  466.         ASSERT(!automation.recognizes("1101100"));
  467.         ASSERT(automation.recognizes("1101101"));
  468.         ASSERT(automation.recognizes("1101110"));
  469.         ASSERT(automation.recognizes("1101111"));
  470.         ASSERT(!automation.recognizes("1110000"));
  471.         ASSERT(!automation.recognizes("1110001"));
  472.         ASSERT(!automation.recognizes("1110010"));
  473.         ASSERT(automation.recognizes("1110011"));
  474.         ASSERT(!automation.recognizes("1110100"));
  475.         ASSERT(automation.recognizes("1110101"));
  476.         ASSERT(automation.recognizes("1110110"));
  477.         ASSERT(automation.recognizes("1110111"));
  478.         ASSERT(!automation.recognizes("1111000"));
  479.         ASSERT(!automation.recognizes("1111001"));
  480.         ASSERT(automation.recognizes("1111010"));
  481.         ASSERT(automation.recognizes("1111011"));
  482.         ASSERT(!automation.recognizes("1111100"));
  483.         ASSERT(automation.recognizes("1111101"));
  484.         ASSERT(automation.recognizes("1111110"));
  485.         ASSERT(automation.recognizes("1111111"));
  486.     }
  487.  
  488.     static void Test101NotInText() {
  489.         Automation automation(""); // Не содержится 101 в качестве подстроки
  490.  
  491.         ASSERT(automation.recognizes(""));
  492.  
  493.         ASSERT(automation.recognizes("0"));
  494.         ASSERT(automation.recognizes("1"));
  495.  
  496.         ASSERT(automation.recognizes("00"));
  497.         ASSERT(automation.recognizes("01"));
  498.         ASSERT(automation.recognizes("10"));
  499.         ASSERT(automation.recognizes("11"));
  500.  
  501.         ASSERT(automation.recognizes("000"));
  502.         ASSERT(automation.recognizes("001"));
  503.         ASSERT(automation.recognizes("010"));
  504.         ASSERT(automation.recognizes("011"));
  505.         ASSERT(automation.recognizes("100"));
  506.         ASSERT(!automation.recognizes("101"));
  507.         ASSERT(automation.recognizes("110"));
  508.         ASSERT(automation.recognizes("111"));
  509.  
  510.         ASSERT(automation.recognizes("0000"));
  511.         ASSERT(automation.recognizes("0001"));
  512.         ASSERT(automation.recognizes("0010"));
  513.         ASSERT(automation.recognizes("0011"));
  514.         ASSERT(automation.recognizes("0100"));
  515.         ASSERT(!automation.recognizes("0101"));
  516.         ASSERT(automation.recognizes("0110"));
  517.         ASSERT(automation.recognizes("0111"));
  518.         ASSERT(automation.recognizes("1000"));
  519.         ASSERT(automation.recognizes("1001"));
  520.         ASSERT(!automation.recognizes("1010"));
  521.         ASSERT(!automation.recognizes("1011"));
  522.         ASSERT(automation.recognizes("1100"));
  523.         ASSERT(!automation.recognizes("1101"));
  524.         ASSERT(automation.recognizes("1110"));
  525.         ASSERT(automation.recognizes("1111"));
  526.  
  527.         ASSERT(automation.recognizes("00000"));
  528.         ASSERT(automation.recognizes("00001"));
  529.         ASSERT(automation.recognizes("00010"));
  530.         ASSERT(automation.recognizes("00011"));
  531.         ASSERT(automation.recognizes("00100"));
  532.         ASSERT(!automation.recognizes("00101"));
  533.         ASSERT(automation.recognizes("00110"));
  534.         ASSERT(automation.recognizes("00111"));
  535.         ASSERT(automation.recognizes("01000"));
  536.         ASSERT(automation.recognizes("01001"));
  537.         ASSERT(!automation.recognizes("01010"));
  538.         ASSERT(!automation.recognizes("01011"));
  539.         ASSERT(automation.recognizes("01100"));
  540.         ASSERT(!automation.recognizes("01101"));
  541.         ASSERT(automation.recognizes("01110"));
  542.         ASSERT(automation.recognizes("01111"));
  543.         ASSERT(automation.recognizes("10000"));
  544.         ASSERT(automation.recognizes("10001"));
  545.         ASSERT(automation.recognizes("10010"));
  546.         ASSERT(automation.recognizes("10011"));
  547.         ASSERT(!automation.recognizes("10100"));
  548.         ASSERT(!automation.recognizes("10101"));
  549.         ASSERT(!automation.recognizes("10110"));
  550.         ASSERT(!automation.recognizes("10111"));
  551.         ASSERT(automation.recognizes("11000"));
  552.         ASSERT(automation.recognizes("11001"));
  553.         ASSERT(!automation.recognizes("11010"));
  554.         ASSERT(!automation.recognizes("11011"));
  555.         ASSERT(automation.recognizes("11100"));
  556.         ASSERT(!automation.recognizes("11101"));
  557.         ASSERT(automation.recognizes("11110"));
  558.         ASSERT(automation.recognizes("11111"));
  559.  
  560.         ASSERT(automation.recognizes("000000"));
  561.         ASSERT(automation.recognizes("000001"));
  562.         ASSERT(automation.recognizes("000010"));
  563.         ASSERT(automation.recognizes("000011"));
  564.         ASSERT(automation.recognizes("000100"));
  565.         ASSERT(!automation.recognizes("000101"));
  566.         ASSERT(automation.recognizes("000110"));
  567.         ASSERT(automation.recognizes("000111"));
  568.         ASSERT(automation.recognizes("001000"));
  569.         ASSERT(automation.recognizes("001001"));
  570.         ASSERT(!automation.recognizes("001010"));
  571.         ASSERT(!automation.recognizes("001011"));
  572.         ASSERT(automation.recognizes("001100"));
  573.         ASSERT(!automation.recognizes("001101"));
  574.         ASSERT(automation.recognizes("001110"));
  575.         ASSERT(automation.recognizes("001111"));
  576.         ASSERT(automation.recognizes("010000"));
  577.         ASSERT(automation.recognizes("010001"));
  578.         ASSERT(automation.recognizes("010010"));
  579.         ASSERT(automation.recognizes("010011"));
  580.         ASSERT(!automation.recognizes("010100"));
  581.         ASSERT(!automation.recognizes("010101"));
  582.         ASSERT(!automation.recognizes("010110"));
  583.         ASSERT(!automation.recognizes("010111"));
  584.         ASSERT(automation.recognizes("011000"));
  585.         ASSERT(automation.recognizes("011001"));
  586.         ASSERT(!automation.recognizes("011010"));
  587.         ASSERT(!automation.recognizes("011011"));
  588.         ASSERT(automation.recognizes("011100"));
  589.         ASSERT(!automation.recognizes("011101"));
  590.         ASSERT(automation.recognizes("011110"));
  591.         ASSERT(automation.recognizes("011111"));
  592.         ASSERT(automation.recognizes("100000"));
  593.         ASSERT(automation.recognizes("100001"));
  594.         ASSERT(automation.recognizes("100010"));
  595.         ASSERT(automation.recognizes("100011"));
  596.         ASSERT(automation.recognizes("100100"));
  597.         ASSERT(!automation.recognizes("100101"));
  598.         ASSERT(automation.recognizes("100110"));
  599.         ASSERT(automation.recognizes("100111"));
  600.         ASSERT(!automation.recognizes("101000"));
  601.         ASSERT(!automation.recognizes("101001"));
  602.         ASSERT(!automation.recognizes("101010"));
  603.         ASSERT(!automation.recognizes("101011"));
  604.         ASSERT(!automation.recognizes("101100"));
  605.         ASSERT(!automation.recognizes("101101"));
  606.         ASSERT(!automation.recognizes("101110"));
  607.         ASSERT(!automation.recognizes("101111"));
  608.         ASSERT(automation.recognizes("110000"));
  609.         ASSERT(automation.recognizes("110001"));
  610.         ASSERT(automation.recognizes("110010"));
  611.         ASSERT(automation.recognizes("110011"));
  612.         ASSERT(!automation.recognizes("110100"));
  613.         ASSERT(!automation.recognizes("110101"));
  614.         ASSERT(!automation.recognizes("110110"));
  615.         ASSERT(!automation.recognizes("110111"));
  616.         ASSERT(automation.recognizes("111000"));
  617.         ASSERT(automation.recognizes("111001"));
  618.         ASSERT(!automation.recognizes("111010"));
  619.         ASSERT(!automation.recognizes("111011"));
  620.         ASSERT(automation.recognizes("111100"));
  621.         ASSERT(!automation.recognizes("111101"));
  622.         ASSERT(automation.recognizes("111110"));
  623.         ASSERT(automation.recognizes("111111"));
  624.     }
  625.  
  626. #pragma endregion TESTS
  627.  
  628.     // -------- Конец тестирующих функций ----------
  629.  
  630. public:
  631.     static void Test() {
  632.         RUN_TEST(Test5thSymbolFromEndIs1);
  633.         RUN_TEST(Test11After00);
  634.         RUN_TEST(Test101NotInText);
  635.     }
  636. };
  637.  
  638. int main() {
  639.     AutomationTester::Test();
  640.  
  641.     return 0;
  642. }
  643.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement