added makefile, fixed problems with tests

This commit is contained in:
Jeena Paradies 2011-02-22 03:11:35 +01:00
parent e4753b2c07
commit 6ee945379f
8 changed files with 58 additions and 36 deletions

28
Makefile Normal file
View 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

View file

@ -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) ->

View file

@ -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};

View file

@ -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"),

View file

@ -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.

View file

@ -5,17 +5,18 @@
%% 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 } ).
%% API
-export([start_link/0,
add_player/2,
remove_player/2,
stop/1,
notify/3]).
add_player/2,
remove_player/2,
stop/1,
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) ->

View file

@ -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).

View file

@ -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).