added makefile, fixed problems with tests
This commit is contained in:
parent
e4753b2c07
commit
6ee945379f
8 changed files with 58 additions and 36 deletions
28
Makefile
Normal file
28
Makefile
Normal file
|
@ -0,0 +1,28 @@
|
|||
ERLC=erlc
|
||||
ERLCFLAGS=-o
|
||||
SRCDIR=src
|
||||
TESTDIR=tests
|
||||
BEAMDIR=./ebin
|
||||
|
||||
all: compile erlang_js
|
||||
|
||||
compile:
|
||||
@ mkdir -p $(BEAMDIR) ;
|
||||
@ $(ERLC) $(ERLCFLAGS) $(BEAMDIR) $(SRCDIR)/*.erl ;
|
||||
|
||||
erlang_js:
|
||||
$(MAKE) -C erlang_js/
|
||||
|
||||
test: compile erlang_js
|
||||
@ mkdir -p $(BEAMDIR) ;
|
||||
@ $(ERLC) $(ERLCFLAGS) $(BEAMDIR) $(TESTDIR)/*.erl ;
|
||||
@ cd $(BEAMDIR) ; erl -noinput -eval 'eunit:test({dir, "."}, [verbose]), init:stop()' ;
|
||||
|
||||
clean:
|
||||
@ rm -rf $(BEAMDIR)/*.beam ;
|
||||
@ rm -rf erl_crush.dump ;
|
||||
@ echo "==> clean ggs" ;
|
||||
@ $(MAKE) -C erlang_js/ clean
|
||||
|
||||
run:
|
||||
@ erl -sname ggs -mnesia -boot start_sasl -pa erlang_js/ebin/ -pa ebin -pa src -s start_ggs
|
|
@ -65,7 +65,7 @@ handle_call({join_table, Table}, From, State) ->
|
|||
{FromPlayer, _Ref} = From,
|
||||
Tables = State#co_state.tables,
|
||||
case lists:keyfind(Table, 1, Tables) of
|
||||
{TableID, TablePID} ->
|
||||
{_TableID, TablePID} ->
|
||||
ggs_table:add_player(TablePID, FromPlayer),
|
||||
{reply, {ok, TablePID}, State};
|
||||
false ->
|
||||
|
@ -84,7 +84,7 @@ handle_call({create_table, {force, TableID}}, From, State) ->
|
|||
handle_call(_Message, _From, State) ->
|
||||
{noreply, State}.
|
||||
|
||||
handle_cast({stop, Reason}, State) ->
|
||||
handle_cast({stop, _Reason}, _State) ->
|
||||
{stop, normal, state};
|
||||
|
||||
handle_cast(_Message, State) ->
|
||||
|
|
|
@ -45,7 +45,7 @@ handle_call(_Message, _From, State) ->
|
|||
handle_cast(_Message, State) ->
|
||||
{noreply, State}.
|
||||
|
||||
handle_info({tcp, _Socket, RawData}, State) ->
|
||||
handle_info({tcp, _Socket, _RawData}, State) ->
|
||||
io:format("Got connect request!~n"),
|
||||
{noreply, State};
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ user_command(GameVM, Player, Command, Args) ->
|
|||
|
||||
loop(Table) ->
|
||||
receive
|
||||
{define, SourceCode} ->
|
||||
{define, _SourceCode} ->
|
||||
loop(Table);
|
||||
{user_command, _User, Command, _Args, _From, _Ref} ->
|
||||
io:format("GameVM received a message~n"),
|
||||
|
|
|
@ -60,7 +60,7 @@ loop(#pl_state{token = Token, socket = Socket, table = Table} = State) ->
|
|||
io:format("Notifying table..~n"),
|
||||
ggs_table:notify_game(Table, Token, Data),
|
||||
loop(State);
|
||||
{notify, From, Message} ->
|
||||
{notify, _From, Message} ->
|
||||
gen_tcp:send(Socket, Message),
|
||||
loop(State)
|
||||
end.
|
||||
|
|
|
@ -5,8 +5,7 @@
|
|||
|
||||
%% gen_server callbacks
|
||||
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
|
||||
terminate/2, code_change/3, notify_all_players/2, notify_game/3,
|
||||
add_player/2]).
|
||||
terminate/2, code_change/3]).
|
||||
|
||||
-record(state, { players, game_vm } ).
|
||||
|
||||
|
@ -15,7 +14,9 @@
|
|||
add_player/2,
|
||||
remove_player/2,
|
||||
stop/1,
|
||||
notify/3]).
|
||||
notify/3,
|
||||
notify_all_players/2,
|
||||
notify_game/3]).
|
||||
|
||||
|
||||
%% ----------------------------------------------------------------------
|
||||
|
@ -24,6 +25,7 @@
|
|||
% @doc returns a new table
|
||||
start_link() ->
|
||||
{ok, Pid} = gen_server:start_link(?MODULE, [], []),
|
||||
Pid.
|
||||
|
||||
%% @private
|
||||
call(Pid, Msg) ->
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
-module(ggs_player_test).
|
||||
-include_lib("eunit/include/eunit.hrl").
|
||||
-import(ggs_player).
|
||||
|
||||
%% @doc start_link should always return ok for any valid socket. A valid socket
|
||||
%% should always return {ok, Pid} and {error, Reason} otherwise.
|
||||
|
@ -10,9 +9,9 @@ start_link_test() ->
|
|||
%% @doc Given that start_link returned {ok, Player}. Notify shall always return ok and
|
||||
%% deliver a specified message through the socket.
|
||||
notify_test() ->
|
||||
Player = start_link("bad arg"),
|
||||
Player = ggs_player:start_link("bad arg"),
|
||||
Message = {"something", ""},
|
||||
Ret = ggs_player:notify(Player, self(), Message)
|
||||
Ret = ggs_player:notify(Player, self(), Message),
|
||||
?assertNot(ok =:= Ret).
|
||||
|
||||
%% @doc Given that start_link returned {ok, Player}. get_token shall always return a valid
|
||||
|
@ -23,6 +22,6 @@ get_token_test() ->
|
|||
%% @doc Given that start_link returned {ok, Pid}. There shouldn't be possible to
|
||||
%% execute this function with the same Player and Table arguments twice.
|
||||
stop_test() ->
|
||||
Player = start_link(something),
|
||||
Player = ggs_player:start_link(something),
|
||||
Table = test,
|
||||
ok = stop(Player, Table).
|
||||
ok = ggs_player:stop(Player, Table).
|
||||
|
|
|
@ -1,45 +1,38 @@
|
|||
-module(ggs_table_test).
|
||||
-include_lib("eunit/include/eunit.hrl").
|
||||
-import(ggs_table).
|
||||
|
||||
|
||||
% @private
|
||||
start_link_test() ->
|
||||
Table = start_link(),
|
||||
Table = ggs_table:start_link(),
|
||||
?assertNot(Table =:= undefined).
|
||||
|
||||
% @private
|
||||
add_player_test() ->
|
||||
Table = start_link(),
|
||||
Table = ggs_table:start_link(),
|
||||
Player = test_player,
|
||||
add_player(Table, Player),
|
||||
ggs_table:add_player(Table, Player),
|
||||
{ok, [Player]} = gen_server:call(Table, get_player_list).
|
||||
|
||||
% @private
|
||||
remove_player_test() ->
|
||||
Table = start_link(),
|
||||
Table = ggs_table:start_link(),
|
||||
Player = test_player,
|
||||
Player2 = test_player2,
|
||||
add_player(Table, Player),
|
||||
ggs_table:add_player(Table, Player),
|
||||
{ok, [Player]} = gen_server:call(Table, get_player_list),
|
||||
add_player(Table, Player2),
|
||||
ggs_table:add_player(Table, Player2),
|
||||
{ok, [Player2, Player]} = gen_server:call(Table, get_player_list),
|
||||
remove_player(Table, Player),
|
||||
ggs_table:remove_player(Table, Player),
|
||||
{ok, [Player2]} = gen_server:call(Table, get_player_list),
|
||||
remove_player(Table, Player2),
|
||||
ggs_table:remove_player(Table, Player2),
|
||||
{ok, []} = gen_server:call(Table, get_player_list).
|
||||
|
||||
% @private
|
||||
stop_test() ->
|
||||
Table = start_link(),
|
||||
ok = stop(Table).
|
||||
Table = ggs_table:start_link(),
|
||||
ok = ggs_table:stop(Table).
|
||||
|
||||
% @private
|
||||
notify_test() ->
|
||||
Table = start_link(),
|
||||
Table = ggs_table:start_link(),
|
||||
Player = test_player,
|
||||
Message = {server, define, "function helloWorld(x) { }"},
|
||||
ok = notify(Table, Player, Message).
|
||||
ok = ggs_table:notify(Table, Player, Message),
|
||||
Message2 = {game, "helloWorld", "test"},
|
||||
ok = notify(Table, Player, Message2).
|
||||
ok = ggs_table:notify(Table, Player, Message2).
|
||||
|
||||
|
|
Reference in a new issue