48{
   50    {
   51 
   52        unsigned int curRow         = 0;
   53        unsigned int curColumn      = 0;
   54        std::tie(curRow, curColumn) = Policy::Advance(3, 3, curRow, curColumn);
   55        BOOST_CHECK_EQUAL(1, curRow);
   56        BOOST_CHECK_EQUAL(0, curColumn);
   57 
   58        std::tie(curRow, curColumn) = Policy::Advance(3, 3, curRow, curColumn);
   59        BOOST_CHECK_EQUAL(2, curRow);
   60        BOOST_CHECK_EQUAL(0, curColumn);
   61 
   62        std::tie(curRow, curColumn) = Policy::Advance(3, 3, curRow, curColumn);
   63        BOOST_CHECK_EQUAL(0, curRow);
   64        BOOST_CHECK_EQUAL(1, curColumn);
   65 
   66        std::tie(curRow, curColumn) = Policy::Advance(3, 3, curRow, curColumn);
   67        BOOST_CHECK_EQUAL(1, curRow);
   68        BOOST_CHECK_EQUAL(1, curColumn);
   69 
   70        std::tie(curRow, curColumn) = Policy::Advance(3, 3, curRow, curColumn);
   71        BOOST_CHECK_EQUAL(2, curRow);
   72        BOOST_CHECK_EQUAL(1, curColumn);
   73 
   74        std::tie(curRow, curColumn) = Policy::Advance(3, 3, curRow, curColumn);
   75        BOOST_CHECK_EQUAL(0, curRow);
   76        BOOST_CHECK_EQUAL(2, curColumn);
   77 
   78        std::tie(curRow, curColumn) = Policy::Advance(3, 3, curRow, curColumn);
   79        BOOST_CHECK_EQUAL(1, curRow);
   80        BOOST_CHECK_EQUAL(2, curColumn);
   81 
   82        std::tie(curRow, curColumn) = Policy::Advance(3, 3, curRow, curColumn);
   83        BOOST_CHECK_EQUAL(2, curRow);
   84        BOOST_CHECK_EQUAL(2, curColumn);
   85 
   86        std::tie(curRow, curColumn) = Policy::Advance(3, 3, curRow, curColumn);
   87        BOOST_CHECK_EQUAL(std::numeric_limits<unsigned int>::max(), curRow);
   88        BOOST_CHECK_EQUAL(std::numeric_limits<unsigned int>::max(), curColumn);
   89    }
   90 
   91    {
   92 
   93        unsigned int curRow         = 0;
   94        unsigned int curColumn      = 0;
   95        std::tie(curRow, curColumn) = Policy::Advance(1, 1, curRow, curColumn);
   96        BOOST_CHECK_EQUAL(std::numeric_limits<unsigned int>::max(), curRow);
   97        BOOST_CHECK_EQUAL(std::numeric_limits<unsigned int>::max(), curColumn);
   98    }
   99 
  100    {
  101 
  102        unsigned int curRow         = 0;
  103        unsigned int curColumn      = 0;
  104        std::tie(curRow, curColumn) = Policy::Advance(2, 2, curRow, curColumn);
  105        BOOST_CHECK_EQUAL(1, curRow);
  106        BOOST_CHECK_EQUAL(0, curColumn);
  107 
  108        std::tie(curRow, curColumn) = Policy::Advance(2, 2, curRow, curColumn);
  109        BOOST_CHECK_EQUAL(0, curRow);
  110        BOOST_CHECK_EQUAL(1, curColumn);
  111 
  112        std::tie(curRow, curColumn) = Policy::Advance(2, 2, curRow, curColumn);
  113        BOOST_CHECK_EQUAL(1, curRow);
  114        BOOST_CHECK_EQUAL(1, curColumn);
  115 
  116        std::tie(curRow, curColumn) = Policy::Advance(2, 2, curRow, curColumn);
  117        BOOST_CHECK_EQUAL(std::numeric_limits<unsigned int>::max(), curRow);
  118        BOOST_CHECK_EQUAL(std::numeric_limits<unsigned int>::max(), curColumn);
  119    }
  120}
void RedirectCerrIfNeeded()