快捷搜索:
当前位置: 银河手机版app > 幼儿园游戏大全 > 正文

给table增加测试代码

时间:2019-10-18 20:47来源:幼儿园游戏大全
测验驱动,先simple_table_test.exs 里扩大测试呢。 眼下想到的那样多,假诺脱漏后续扩展, 写测验代码比业务代码还是难, 利润是提前想下模块的api接口。 像本身这么一晃写那么多测量

测验驱动,先simple_table_test.exs 里扩大测试呢。

眼下想到的那样多,假诺脱漏后续扩展, 写测验代码比业务代码还是难,

利润是提前想下模块的api接口。

像本身这么一晃写那么多测量试验,其实也不对,反馈周期太长,测验驱动就没野趣了,

何况代码调节恐怕导致测验要再度调治。

(这里只是示例,以往就不这么搞了)

其他想了下, 像table那样的整装(意思是和煦调用其余模块)模块,

为了方便测量检验,依然应该分出2种分化风格的api。

一种是回来 {:ok, table} 和 {:error, reason}的,对接逻辑

一种是原原本本操作table的, 方便测试用。

上测验代码先,测量试验肯定会失利

图片 1图片 2

 test "开局:少于2个人的时候不能", %{table: table, player1: player1} do
       assert {:error, ErrorMsg.player_not_enough} == table |> SimpleTable.add_seat |> SimpleTable.start(player1)
  end

  test "开局:正在玩中不能", %{table: table, player1: player1} do
    assert {:error, ErrorMsg.can_not_start_when_playing} == table |> SimpleTable.set_playing |> SimpleTable.start(player1)
  end

  test "开局: 准备阶段且人数至少2, 且只有房主能开局", %{table: table, player1: player1, player2: player2} do
       table = table |> SimpleTable.set_creator(player1) 
                     |> SimpleTable.add_seat(player1) 
                     |> SimpleTable.add_seat(player2) 
      assert {:error, ErrorMsg.just_creator_can_start} == table |> SimpleTable.start(player2)
      assert {:ok, new_table} = table |> SimpleTable.start(player1)
      assert table |> SimpleTable.is_playing?
  end

  test "解散:正在玩中不能", %{table: table, player1: player1} do
    assert {:error, ErrorMsg.can_not_dismiss_when_playing} == table |> SimpleTable.set_playing |> SimpleTable.dismiss(player1)
  end

  test "解散:准备阶段只有房主可以", %{table: table, player1: player1, player2: player2} do
     table = table |> SimpleTable.set_creator(player1)
     assert {:error, ErrorMsg.just_creator_can_dismiss} == table |> SimpleTable.dismiss(player2)
     assert {:ok, new_table} = table |> SimpleTable.dismiss(player1) 
     assert new_table |> SimpleTable.is_dismiss?
  end 

  test "加入:正在玩中不能(以后支持?)", %{table: table, player1: player1} do
    assert {:error, ErrorMsg.can_not_join_new_player_when_playing} == table |> SimpleTable.set_playing |> SimpleTable.join(player1)
  end

  test "加入:准备阶段可以", %{table: table, player1: player1} do
    assert {:ok, _new_table} = table |> SimpleTable.join(player1) 
  end

  test "加入: 重复不可以", %{table: table, player1: player1} do
    assert {:error, ErrorMsg.repeated_join} == table |> SimpleTable.add_seat(player1) |> SimpleTable.join(player1)
  end

  test "退出:正在玩中不能(以后支持?)", %{table: table, player1: player1} do
    assert {:error, ErrorMsg.can_not_quit_when_playing} == table |> SimpleTable.set_playing |> SimpleTable.quit(player1)
  end

  test "退出:房主不能(以后支持?)", %{table: table, player1: player1} do
    assert {:error, ErrorMsg.can_not_quit_when_creator} == table |> SimpleTable.set_creator(player1) |> SimpleTable.quit(player1)
  end

  test "测试发牌", %{table: table, player1: player1, player2: player2} do
      cards = [{1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}]
      table = table |> SimpleTable.set_cards(cards)
                    |> SimpleTable.add_seat(player1)
                    |> SimpleTable.add_seat(player2)
                    |> SimpleTable.init_deal
      assert [{1, 1}, {1, 2}] == table |> SimpleTable.find_seat(player1) |> Seat.get_cards
      assert [{1, 3}, {1, 4}] == table |> SimpleTable.find_seat(player2) |> Seat.get_cards
  end

  test "补牌: 非玩中不能", %{table: table, player1: player1} do
     assert {:error, ErrorMsg.can_not_deal_when_not_playing} == table |> SimpleTable.deal_one(player1)
  end

  test "补牌: 已经翻牌不能", %{table: table, player1: player1} do
     seat = Seat.init(player1) |> Seat.open
     assert {:error, ErrorMsg.can_not_make_up_when_open} == table |> SimpleTable.update_seat(seat) |> SimpleTable.make_up(player1)
  end

  test "补牌: 已经三张了不能再补", %{table: table, player1: player1} do
     seat = Seat.init(player1) |> Seat.add_cards([1, 2, 3]) 
     assert {:error, ErrorMsg.can_not_make_up_when_full} == table |> SimpleTable.update_seat(seat) |> SimpleTable.make_up(player1)
  end

  test "翻牌: 不是天公牌不能", %{table: table, player1: player1} do
    seat = Seat.init(player1) |> Seat.add_cards([{1, 2}, {1, 5}])
    assert {:error, ErrorMsg.just_tian_gong_can_open} == table |> SimpleTable.update_seat(seat) |> SimpleTable.open(player1)
  end

  test "翻牌: 已经翻过了不能", %{table: table, player1: player1} do
    seat = Seat.init(player1) |> Seat.open
    assert {:error, ErrorMsg.repeated_open} == table |> SimpleTable.update_seat(seat) |> SimpleTable.open(player1)
  end

simple_table_test.exs

回头大家补上代码,让测量检验通过。

实质上数据操作的测量检验和逻辑操作的测量检验分为2个测验文件会更清晰点,

自己就不做了,照旧用1个文件。

 

编辑:幼儿园游戏大全 本文来源:给table增加测试代码

关键词:

  • 上一篇:没有了
  • 下一篇:没有了