Доступ к аттрибуту класса Vector в Google Test - PullRequest
0 голосов
/ 02 апреля 2020

Player и Game - это два разных класса. Это в моем Game.h:

std::vector<Player*> players;

и

void setPlayers(Player**, int);

Это включено в мою игру. cpp:

std::vector<Player*> Game::getPlayers(){
  return this->players;
}

    /**
    * @brief Sets a Player in a particular position inside a vector named players
    */
void Game::setPlayers(Player** player_arg, int p_position){
  players[p_position] = *player_arg;
  std::cout << "Player pos: " << players[p_position]->getRole() << "\n";
}

В моем основном . cpp, они используются так:

while(1){
      Player* p;
      jump_to_choice:
        std::cout << "Please Enter your position: ";
        std::cin >> role_choice;
        (*p).setRole(role_choice);
        if(player_check[(*p).getRole()-1] == 0){
          //Adding a player to the Player* vector defined in game.h (players)
          one.setPlayers(&p, (*p).getRole()-1);
          player_check[(*p).getRole()-1] = 1;
          player_count++;
        }
    }
    return 0;
}

, где one - Игра. Я не могу написать тест для него.

Я пытаюсь это:

TEST(gameTest, setPlayersTest) {
    Player* p;
    Game g;
    (*p).setRole(2);
    g.setPlayers(&p, (*p).getRole()-1);
    EXPECT_EQ(1,g->(*players[1])->getRole());
}

Для этого я хочу получить доступ к вектору players, но не знаю, как это сделать. Я продолжаю получить это:

#define EXPECT_EQ(val1,val2) EXPECT_PRED_FORMAT2(::testing::internal:: EqHelper<GTEST_IS_NULL_LITERAL_(val1)>::Compare, val1, val2)
Expands to:

EXPECT_PRED_FORMAT2(::testing::internal:: EqHelper<GTEST_IS_NULL_LITERAL_(1)>::Compare, 1, g->(*players[1])->getRole())
expression must have pointer type
...