etrobocon2018 feat.KatLab  770af34cce41ae9c30c41303275e1add2daae0c3 (with uncommitted changes)
 全て クラス 名前空間 ファイル 関数 変数 列挙型 列挙値 フレンド マクロ定義 ページ
BlockStrategyTest.cpp
[詳解]
1 
5 /* コンパイル(平木場)
6 $ g++-8 BlockStrategyTest.cpp ../src/BlockArea.cpp ../src/BlockStrategy.cpp gtest_main.o gtest-all.o
7 -I../include -I~/googletest/googletest/include
8 */
9 
10 #include "BlockStrategy.h" // このヘッダファイルのcppファイルをテスト
11 #include <gtest/gtest.h>
12 
13 using namespace BlockSideBySide;
14 
15 namespace etrobocon2018_test {
16  class BlockStrategyTest : public ::testing::Test {
17  protected:
18  virtual void SetUp() {}
19  BlockStrategy b{ 00000 };
20  std::array<std::shared_ptr<ColorBlockPlace>, BLOCK_NUM> getColorBlockPlaceArray()
21  {
22  return b.colorBlockPlaceArray;
23  }
24 
25  // BlockArea getBlockArea() { return b.blockArea; }
26  };
27 
28  TEST_F(BlockStrategyTest, createColorBlockPlace)
29  {
30  auto b = getColorBlockPlaceArray();
31  ASSERT_EQ(b[0]->getColor(), GameColor::RED);
32  ASSERT_EQ(b[2]->getColor(), GameColor::BLUE);
33  ASSERT_EQ(b[5]->getColor(), GameColor::GREEN);
34  ASSERT_EQ(b[7]->getColor(), GameColor::YELLOW);
35  ASSERT_EQ(b[9]->getColor(), GameColor::YELLOW);
36  ASSERT_EQ(b[11]->getColor(), GameColor::GREEN);
37  ASSERT_EQ(b[12]->getColor(), GameColor::BLUE);
38  ASSERT_EQ(b[14]->getColor(), GameColor::RED);
39  }
40 
41  TEST_F(BlockStrategyTest, connectColorBlockPlace)
42  {
43  auto b = getColorBlockPlaceArray();
44  ASSERT_EQ(b[0]->black_line[Direction::WEST], b[1]);
45  ASSERT_EQ(b[2]->black_line[Direction::EAST], b[1]);
46  ASSERT_EQ(b[5]->black_line[Direction::SOUTH], b[9]);
47  ASSERT_EQ(b[7]->black_line[Direction::NORTH], b[3]);
48  ASSERT_EQ(b[9]->black_line[Direction::EAST], b[8]);
49  ASSERT_EQ(b[11]->black_line[Direction::SOUTH], b[15]);
50  ASSERT_EQ(b[12]->black_line[Direction::WEST], b[13]);
51  ASSERT_EQ(b[14]->black_line[Direction::NORTH], b[10]);
52  }
53 
54  TEST_F(BlockStrategyTest, putColorBlockPlace)
55  {
56  BlockStrategy b{ 84722 };
57  ASSERT_EQ(b.blockArea.colorBlockPlaceArray[1]->hasBlock(), true);
58  ASSERT_EQ(b.blockArea.colorBlockPlaceArray[4]->hasBlock(), true);
59  ASSERT_EQ(b.blockArea.colorBlockPlaceArray[10]->hasBlock(), true);
60  ASSERT_EQ(b.blockArea.colorBlockPlaceArray[15]->hasBlock(), true);
61  ASSERT_EQ(b.blockArea.colorBlockPlaceArray[2]->hasBlock(), false);
62  ASSERT_EQ(b.blockArea.colorBlockPlaceArray[6]->hasBlock(), false);
63  ASSERT_EQ(b.blockArea.colorBlockPlaceArray[8]->hasBlock(), false);
64  ASSERT_EQ(b.blockArea.colorBlockPlaceArray[9]->hasBlock(), false);
65  ASSERT_EQ(b.blockArea.colorBlockPlaceArray[11]->hasBlock(), false);
66  ASSERT_EQ(b.blockArea.colorBlockPlaceArray[13]->hasBlock(), false);
67  }
68 
69  TEST_F(BlockStrategyTest, getDirection)
70  {
71  BlockStrategy b{ 84722 };
72  ASSERT_EQ(b.blockArea.getDirection(1, 2), Direction::WEST);
73  ASSERT_EQ(b.blockArea.getDirection(1, 5), Direction::SOUTH);
74  ASSERT_EQ(b.blockArea.getDirection(1, 0), Direction::EAST);
75  ASSERT_EQ(b.blockArea.getDirection(8, 4), Direction::NORTH);
76  ASSERT_EQ(b.blockArea.getDirection(5, 9), Direction::SOUTH);
77  }
78 } // namespace etrobocon2018_test
TEST_F(BlockStrategyTest, getDirection)
std::array< std::shared_ptr< ColorBlockPlace >, BLOCK_NUM > getColorBlockPlaceArray()