From 0361558f4bd4be9c907959d2c4fbc0c4c4d88ff2 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Sun, 6 Feb 2011 19:25:36 +0100 Subject: [PATCH 01/29] added js_helper module --- src/js_helper.erl | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/js_helper.erl diff --git a/src/js_helper.erl b/src/js_helper.erl new file mode 100644 index 0000000..efb38f4 --- /dev/null +++ b/src/js_helper.erl @@ -0,0 +1,8 @@ +-module(js_helper). +-export([test/0, echo/1]). + +test() -> + {ok, test}. + +echo(String) -> + {ok, String}. \ No newline at end of file From ee4059ac5a1d308f1020ff8385de9579b93a4a2a Mon Sep 17 00:00:00 2001 From: Kallfaktorn Date: Mon, 21 Feb 2011 20:43:00 +0100 Subject: [PATCH 02/29] getItem, setItem complete. Added scripts. --- mnesia/build_db | 4 ++++ mnesia/build_test_db | 4 ++++ mnesia/ggs_db.erl | 47 ++++++++++++++++++++++++++++++++++++++++++ mnesia/ggs_db.hrl | 6 ++++++ mnesia/ggs_db_test.erl | 31 ++++++++++++++++++++++++++++ mnesia/test_db | 3 +++ 6 files changed, 95 insertions(+) create mode 100755 mnesia/build_db create mode 100755 mnesia/build_test_db create mode 100644 mnesia/ggs_db.erl create mode 100644 mnesia/ggs_db.hrl create mode 100644 mnesia/ggs_db_test.erl create mode 100755 mnesia/test_db diff --git a/mnesia/build_db b/mnesia/build_db new file mode 100755 index 0000000..0aa2042 --- /dev/null +++ b/mnesia/build_db @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + + erlc -o . ggs_db.erl + erlc -o . ggs_db_test.erl diff --git a/mnesia/build_test_db b/mnesia/build_test_db new file mode 100755 index 0000000..f5aa938 --- /dev/null +++ b/mnesia/build_test_db @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +./build_db +./test_db diff --git a/mnesia/ggs_db.erl b/mnesia/ggs_db.erl new file mode 100644 index 0000000..5067e16 --- /dev/null +++ b/mnesia/ggs_db.erl @@ -0,0 +1,47 @@ +%%%%---------------------------------------------------- +%%% @author Mattias Pettersson +%%% @copyright 2011 Mattias Pettersson +%%% @doc Database for runtime game variable storage. +%%% @end + +-module(ggs_db). +-import(mnesia). +-export([init/0,setItem/4,getItem/3]). +-include("ggs_db.hrl"). + +%%----------------------------------------------------- +%% Creation +%%----------------------------------------------------- +init() -> + mnesia:create_table(data, [{attributes, record_info(fields, data)}]). + +%%----------------------------------------------------- +%% Test +%%----------------------------------------------------- + +%test_data() -> +% set(0, "Hello"), +% get(0). + +%%----------------------------------------------------- +%% Insertions +%%----------------------------------------------------- +setItem(Db,Ns,Key,Value) -> + Fun = fun() -> + Data = #data{key = {Db,Ns,Key}, value = Value}, + mnesia:write(Data) + end, + mnesia:transaction(Fun). + + + +%%----------------------------------------------------- +%% Querries +%%----------------------------------------------------- +getItem(Db,Ns,Key) -> + Fun = fun() -> + [Data] = mnesia:read(data, {Db,Ns,Key}), + Data#data.value + end, + mnesia:transaction(Fun). + diff --git a/mnesia/ggs_db.hrl b/mnesia/ggs_db.hrl new file mode 100644 index 0000000..bc13c3a --- /dev/null +++ b/mnesia/ggs_db.hrl @@ -0,0 +1,6 @@ +%% gamedb.hrl + +-record(player, {id, name}). +-record(data, {key, value}). + + diff --git a/mnesia/ggs_db_test.erl b/mnesia/ggs_db_test.erl new file mode 100644 index 0000000..4baaaed --- /dev/null +++ b/mnesia/ggs_db_test.erl @@ -0,0 +1,31 @@ +-module(ggs_db_test). +%-compile({no_auto_import,[get/1,set/2]}). +-include_lib("eunit/include/eunit.hrl"). + +%ggs_db_test_() -> +% {spawn, +% {setup, fun setup/0, fun cleanup/1,[ fun ggs_db_test/0 ]} +% }. + + +%Key should be a tuple of two elements +setup_test() -> + mnesia:start(), + ggs_db:init(), + ggs_db:setItem("dbname","nsname","keyname","Hello"), + ?assertMatch({atomic,"Hello"},ggs_db:getItem("dbname","nsname","keyname")), + mnesia:stop(). + +%cleanup(Val) -> +% mnesia:stop(). + + + +%tests() -> +% ggs_db_test(). + +%ggs_db_test() -> +% ggs_db:set(0, "Hello"), + %io:format("~s",[Val]), +% ?assertMatch({atomic,"Hello"},ggs_db:get(0)). + diff --git a/mnesia/test_db b/mnesia/test_db new file mode 100755 index 0000000..958b005 --- /dev/null +++ b/mnesia/test_db @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +erl -eval 'eunit:test(ggs_db_test), q().' From e55e0bd8a3003cfc1ae5f8740fd7249b4b021dba Mon Sep 17 00:00:00 2001 From: Kallfaktorn Date: Mon, 21 Feb 2011 22:31:25 +0100 Subject: [PATCH 03/29] length(Db,Ns) and tests for get,set and length. --- mnesia/ggs_db.erl | 10 +++++++++- mnesia/ggs_db_test.erl | 11 +++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/mnesia/ggs_db.erl b/mnesia/ggs_db.erl index 5067e16..0b59822 100644 --- a/mnesia/ggs_db.erl +++ b/mnesia/ggs_db.erl @@ -6,7 +6,8 @@ -module(ggs_db). -import(mnesia). --export([init/0,setItem/4,getItem/3]). +%-compile({no_auto_import,[length/2]}). +-export([init/0,setItem/4,getItem/3,length/2]). -include("ggs_db.hrl"). %%----------------------------------------------------- @@ -45,3 +46,10 @@ getItem(Db,Ns,Key) -> end, mnesia:transaction(Fun). +length(Db,Ns) -> + Fun = fun() -> + Keys = mnesia:all_keys(data), + length(lists:filter(fun({A,B,_}) -> ((A==Db) and (B==Ns)) end, Keys)) + end, + {atomic, Ret} = mnesia:transaction(Fun), + Ret. diff --git a/mnesia/ggs_db_test.erl b/mnesia/ggs_db_test.erl index 4baaaed..0e65593 100644 --- a/mnesia/ggs_db_test.erl +++ b/mnesia/ggs_db_test.erl @@ -9,11 +9,18 @@ %Key should be a tuple of two elements -setup_test() -> +get_set_test() -> mnesia:start(), ggs_db:init(), ggs_db:setItem("dbname","nsname","keyname","Hello"), - ?assertMatch({atomic,"Hello"},ggs_db:getItem("dbname","nsname","keyname")), + ?assertMatch({atomic,"Hello"},ggs_db:getItem("dbname","nsname","keyname")). + +length_test() -> + ggs_db:setItem(1,1,2,"112"), + ggs_db:setItem(1,2,2,"122"), + ggs_db:setItem(1,1,3,"113"), + ggs_db:setItem(1,1,4,"114"), + ?assertEqual(ggs_db:length(1,1), 3), mnesia:stop(). %cleanup(Val) -> From c66d1cef69fb032287f28ceea23a95de55f306f9 Mon Sep 17 00:00:00 2001 From: Kallfaktorn Date: Mon, 21 Feb 2011 22:59:11 +0100 Subject: [PATCH 04/29] removeItem with test. --- mnesia/ggs_db.erl | 13 ++++++++++++- mnesia/ggs_db_test.erl | 8 ++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/mnesia/ggs_db.erl b/mnesia/ggs_db.erl index 0b59822..1c15536 100644 --- a/mnesia/ggs_db.erl +++ b/mnesia/ggs_db.erl @@ -7,7 +7,7 @@ -module(ggs_db). -import(mnesia). %-compile({no_auto_import,[length/2]}). --export([init/0,setItem/4,getItem/3,length/2]). +-export([init/0,setItem/4,getItem/3,removeItem/3,length/2]). -include("ggs_db.hrl"). %%----------------------------------------------------- @@ -35,6 +35,15 @@ setItem(Db,Ns,Key,Value) -> mnesia:transaction(Fun). +%%----------------------------------------------------- +%% Deletions +%%----------------------------------------------------- +removeItem(Db,Ns,Key) -> + Fun = fun() -> + mnesia:delete({data,{Db,Ns,Key}}) + end, + mnesia:transaction(Fun). + %%----------------------------------------------------- %% Querries @@ -53,3 +62,5 @@ length(Db,Ns) -> end, {atomic, Ret} = mnesia:transaction(Fun), Ret. + + diff --git a/mnesia/ggs_db_test.erl b/mnesia/ggs_db_test.erl index 0e65593..e15ddf4 100644 --- a/mnesia/ggs_db_test.erl +++ b/mnesia/ggs_db_test.erl @@ -9,7 +9,7 @@ %Key should be a tuple of two elements -get_set_test() -> +getItem_setItem_test() -> mnesia:start(), ggs_db:init(), ggs_db:setItem("dbname","nsname","keyname","Hello"), @@ -20,7 +20,11 @@ length_test() -> ggs_db:setItem(1,2,2,"122"), ggs_db:setItem(1,1,3,"113"), ggs_db:setItem(1,1,4,"114"), - ?assertEqual(ggs_db:length(1,1), 3), + ?assertEqual(ggs_db:length(1,1), 3). + +removeItem_test() -> + ggs_db:removeItem(1,1,4), + ?assertNot(ggs_db:getItem(1,1,4) =:= {atomic,"114"}), mnesia:stop(). %cleanup(Val) -> From 8b978934c70b9b1755bdf13f8c494337609d6434 Mon Sep 17 00:00:00 2001 From: Kallfaktorn Date: Mon, 21 Feb 2011 23:55:20 +0100 Subject: [PATCH 05/29] key with test. --- mnesia/ggs_db.erl | 11 +++++++++-- mnesia/ggs_db_test.erl | 7 +++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/mnesia/ggs_db.erl b/mnesia/ggs_db.erl index 1c15536..9c7cb3c 100644 --- a/mnesia/ggs_db.erl +++ b/mnesia/ggs_db.erl @@ -7,7 +7,7 @@ -module(ggs_db). -import(mnesia). %-compile({no_auto_import,[length/2]}). --export([init/0,setItem/4,getItem/3,removeItem/3,length/2]). +-export([init/0,setItem/4,getItem/3,removeItem/3,key/3,length/2]). -include("ggs_db.hrl"). %%----------------------------------------------------- @@ -63,4 +63,11 @@ length(Db,Ns) -> {atomic, Ret} = mnesia:transaction(Fun), Ret. - +key(Db,Ns,Position) -> + Fun = fun() -> + Keys = mnesia:all_keys(data), + Rest = lists:filter(fun({A,B,_}) -> ((A==Db) and (B==Ns)) end, Keys), + lists:nth(Position, Rest) + end, + {atomic, Ret} = mnesia:transaction(Fun), + Ret. diff --git a/mnesia/ggs_db_test.erl b/mnesia/ggs_db_test.erl index e15ddf4..a1a2ff1 100644 --- a/mnesia/ggs_db_test.erl +++ b/mnesia/ggs_db_test.erl @@ -24,9 +24,12 @@ length_test() -> removeItem_test() -> ggs_db:removeItem(1,1,4), - ?assertNot(ggs_db:getItem(1,1,4) =:= {atomic,"114"}), - mnesia:stop(). + ?assertNot(ggs_db:getItem(1,1,4) =:= {atomic,"114"}). + %mnesia:stop(). +key_test() -> + ?assert(ggs_db:key(1,1,2) =:= {1,1,3}), + mnesia:stop(). %cleanup(Val) -> % mnesia:stop(). From 276a1837383eb9604f30d6d9070d8ccfdffa7463 Mon Sep 17 00:00:00 2001 From: Kallfaktorn Date: Tue, 22 Feb 2011 00:14:11 +0100 Subject: [PATCH 06/29] clear with test. --- mnesia/ggs_db.erl | 13 ++++++++++++- mnesia/ggs_db_test.erl | 11 +++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/mnesia/ggs_db.erl b/mnesia/ggs_db.erl index 9c7cb3c..eef1415 100644 --- a/mnesia/ggs_db.erl +++ b/mnesia/ggs_db.erl @@ -7,7 +7,7 @@ -module(ggs_db). -import(mnesia). %-compile({no_auto_import,[length/2]}). --export([init/0,setItem/4,getItem/3,removeItem/3,key/3,length/2]). +-export([init/0,setItem/4,getItem/3,removeItem/3,key/3,clear/2,length/2]). -include("ggs_db.hrl"). %%----------------------------------------------------- @@ -71,3 +71,14 @@ key(Db,Ns,Position) -> end, {atomic, Ret} = mnesia:transaction(Fun), Ret. + + +clear(Db,Ns) -> + Fun = fun() -> + Keys = mnesia:all_keys(data), + Rest = lists:filter(fun({A,B,_}) -> ((A==Db) and (B==Ns)) end, Keys), + lists:map(fun({A,B,C}) -> removeItem(A,B,C) end, Rest) + end, + {atomic, Ret} = mnesia:transaction(Fun), + Ret. + diff --git a/mnesia/ggs_db_test.erl b/mnesia/ggs_db_test.erl index a1a2ff1..ea6e12e 100644 --- a/mnesia/ggs_db_test.erl +++ b/mnesia/ggs_db_test.erl @@ -25,15 +25,14 @@ length_test() -> removeItem_test() -> ggs_db:removeItem(1,1,4), ?assertNot(ggs_db:getItem(1,1,4) =:= {atomic,"114"}). - %mnesia:stop(). key_test() -> - ?assert(ggs_db:key(1,1,2) =:= {1,1,3}), + ?assert(ggs_db:key(1,1,2) =:= {1,1,3}). + +clear_test() -> + ggs_db:clear(1,1), + ?assert(ggs_db:length(1,1) =:= 0), mnesia:stop(). -%cleanup(Val) -> -% mnesia:stop(). - - %tests() -> % ggs_db_test(). From a7ffc843437e66ca5996f8965a884c2d43ad16d1 Mon Sep 17 00:00:00 2001 From: Kallfaktorn Date: Tue, 22 Feb 2011 00:18:13 +0100 Subject: [PATCH 07/29] refactoring. --- mnesia/ggs_db.erl | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/mnesia/ggs_db.erl b/mnesia/ggs_db.erl index eef1415..912d349 100644 --- a/mnesia/ggs_db.erl +++ b/mnesia/ggs_db.erl @@ -45,6 +45,16 @@ removeItem(Db,Ns,Key) -> mnesia:transaction(Fun). +clear(Db,Ns) -> + Fun = fun() -> + Keys = mnesia:all_keys(data), + Rest = lists:filter(fun({A,B,_}) -> ((A==Db) and (B==Ns)) end, Keys), + lists:map(fun({A,B,C}) -> removeItem(A,B,C) end, Rest) + end, + {atomic, Ret} = mnesia:transaction(Fun), + Ret. + + %%----------------------------------------------------- %% Querries %%----------------------------------------------------- @@ -73,12 +83,4 @@ key(Db,Ns,Position) -> Ret. -clear(Db,Ns) -> - Fun = fun() -> - Keys = mnesia:all_keys(data), - Rest = lists:filter(fun({A,B,_}) -> ((A==Db) and (B==Ns)) end, Keys), - lists:map(fun({A,B,C}) -> removeItem(A,B,C) end, Rest) - end, - {atomic, Ret} = mnesia:transaction(Fun), - Ret. From 073c4d49b01b057094ce47e5b8ffaf4a12e9c923 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 22 Feb 2011 00:35:54 +0100 Subject: [PATCH 08/29] merged rewrite and master --- .gitignore | 1 + mnesia/gamedb.erl | 50 ----------------------- src/.ggs_connection.erl.swp | Bin 12288 -> 0 bytes src/.ggs_server.erl.swo | Bin 12288 -> 0 bytes src/ggs_table.erl | 78 ------------------------------------ src/js_helper.erl | 8 ---- tests/ggs_table_test.erl | 44 ++++++++++++++++++++ 7 files changed, 45 insertions(+), 136 deletions(-) delete mode 100644 mnesia/gamedb.erl delete mode 100644 src/.ggs_connection.erl.swp delete mode 100644 src/.ggs_server.erl.swo delete mode 100644 src/js_helper.erl create mode 100644 tests/ggs_table_test.erl diff --git a/.gitignore b/.gitignore index d176978..f6b93e9 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ *.dump *.beam Mnesia.* +*.swo diff --git a/mnesia/gamedb.erl b/mnesia/gamedb.erl deleted file mode 100644 index 751eb92..0000000 --- a/mnesia/gamedb.erl +++ /dev/null @@ -1,50 +0,0 @@ -%%%%---------------------------------------------------- -%%% @author Mattias Pettersson -%%% @copyright 2011 Mattias Pettersson -%%% @doc Database for runtime game variable storage. -%%% @end - - Test Mnesia --module(gamedb). --import(mnesia). --export([init/0,insert_player/1,example_player/0,read_player/1,test_player/0]). --include("gamedb.hrl"). - -%%----------------------------------------------------- -%% Creation -%%----------------------------------------------------- -init() -> - mnesia:create_table(player, [{attributes, record_info(fields, player)}]). - -%%----------------------------------------------------- -%% Test -%%----------------------------------------------------- -test_player() -> - insert_player(example_player()), - read_player(0001). - -example_player() -> - #player{id = 0001, - name = "Tux"}. - -%%----------------------------------------------------- -%% Insertions -%%----------------------------------------------------- -insert_player(Player) -> - Fun = fun() -> - mnesia:write(Player) - end, - mnesia:transaction(Fun). - - -%%----------------------------------------------------- -%% Querries -%%----------------------------------------------------- -read_player(Player_Key) -> - Fun = fun() -> - [P] = mnesia:read(player, Player_Key), - Name = P#player.name, - io:format("Player name: ~s~n",[Name]) - end, - mnesia:transaction(Fun). - diff --git a/src/.ggs_connection.erl.swp b/src/.ggs_connection.erl.swp deleted file mode 100644 index 0c009f8287377d2e3763a3fb7610231c3237d3fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2O>Z1E7{^^+M0qKoqMo?8TdkN?XJ3-EAceGwl!%h3+pLndm(^7W&e$W5 zH=){YkdU|{!I^9M0Eiwz;sQv$@CmqagL`?A;O}|aYywf~wg)QN%3m`c+m9drp2wC} z@pkLxTARMpSRg2`6LRL$wf0X-7s$022}!jSJV-*tG&jx1l^q@@QXbcO@O^*UU^7v2 zpjaG-V$kF&Vt8D+veitL-y955&zC}QUx!jO(0X9RzF7j6z#|igm=49FN1 zorLbcO2}R4b0~m(Xd7xnSD`;o5%LH0JMre&y z^<_eSfqsPUL0>^0^cM8jON4v_-GN5XD)c7wJoFs&EOa0D7QTi)hWbziItx9(`pg>d znswS@30MM_fF)oFSOWih0yHZFE521sA2M4uN3~j?rI2cs zUSH|Z6&6J)MQs)%b%ft6aU`VTNp#y_!hO$iBmXLIxzsbX$Mn(!1M_{JXy>Z=UUSI~ z6G6niQ1qpv!-Ta5CfkPGeY#$L=44BCi-HeSx3 zr`>COFEh~_kKfH)4CP{9s+eh~f^HN87EKbA{Y)i~N^ZoRwDjOQ7G4@JT+2OZ9P%LV zS6YNWf%Mk54E9MPZnC{qrddI+=F;l*jn$1qXhz6hv=^CM3>cRqkZZ;nT1^;k#d6J6 zN_}Z=$I`x%amGI7YL}}bUbsvPbBJ2ZqJy9nvG7@{oxI0U;6;>2CbC)Ezpc1*3u!R1 zh}90b#>L#BKzzOT;MJ7#Gp8St`28$_R64T_V#sAHDiSD>N+V7kJY0G>2VL4KlG_Y= zSQ#lkOgRez)c+ z8=X?jj*O5x|G;o^y2h_24#=rcH|M9Ssh+BuZEmXO1Z^%9&kH@AsiYpuU>I@7+}}3) zo@?_JF3xl^nQ?R(v*a&<^vhu7dx++>|;O?y@+$5Y|N|GrN0mvvzuVYG#`0>1wNM zU}2o~fQcOR;J={Zju(~aNfTmXVvHeC4|?;UCW?f_tKaJG`2{LumV+eK$%mfmu6p(A z`(C~74PDNz9zQ{!OHUIVdkNWgb@s%Su?yshR|q-9eaY1I+Z?a5K=Rx4QMWfEgPD02 zHY5)+d0t_eW5-IFP&k=dEwn-=PBW2a!n*@wx{FpoD{$uuv}85){2p>}dMc|19T?wF zAA5A=&d2MXS^=$qRzNGD70?Q31+)TM0jsbJEl&t$KgIFiH1lr&ncn##iOW<*E;{ighfD7PlPykPXePA!RzLSt&!7t!* z@FBPaHb5CX4JN_E;5WqJYw!V3@i-4w!9MWU{r6yUX_vJE|1$+>|2QIQVVbCRn>S3V znjJc$+W&F~A0}CWEkc%y{UHeSjyX;*YhnhOjEOjOiZLk zIWUeM$9H7Hw>?^I`HpnCAC7E|C>0~2OVXCClO_&6BeR^k?bn!Lo%AZJp>NXYrb(@Z z4Jqu&$bU7EH_}8!&Gj+Xu!_tMIeJ@B_kOpw&jky-vxyx{q6SB^S}JHNO}de^9S5Jk z8B6Lq6oelYk6Er?<%V>djJFV-1EKP@?S<%rp;2FDqN#N-WKt88IFWW zvx6b-g{K>0&kZH>lbyEKwvoc8nMtK+v5wj`uJ1}?O<7)#71_d8QFF%MK~e|%uxvYx zEpC>+#atAJ!=;7d>O#?^Dj+B?>SRQIZ^7+3)HAiy=fZ$FYP0mLV$Vf4Dm=Q5oaaGE zWu4LFbI+}nf}zzRCwi;vB?p$+`+e8eN#pG|LtT`%8WYB(TI88J6KqI^;hEzS5)JJP ziE@-lr_N$o{8qEf1m#tlY}=4F?FyrkLp3){WZRl*s7FHLq2o7$TZNOw z8fW>~8cVDr#Kxq)_{l4ix#!G>TdGsi+zQkJQXT6~PqSP)-?Zs?=qs z%G{3VS9SKdq8p-ON;%doJ}8 z5{{{vRV+xV% code_change(_OldVsn, State, _Extra) -> {ok, State}. -%% @TODO: Please put these tests in a separate file. We can't compile this file if -%% they contain errors from switching vms -%% ---------------------------------------------------------------------- -% Tests - -%<<<<<<< HEAD -%start_link_test() -> -% Table = start_link(), -% ?assertNot(Table =:= undefined). - -%add_player_test() -> -% Table = start_link(), -% Player = test_player, -% add_player(Table, Player), -% {ok, [Player]} = gen_server:call(Table, get_player_list). - -%remove_player_test() -> -% Table = start_link(), -% Player = test_player, -% Player2 = test_player2, -% add_player(Table, Player), -% {ok, [Player]} = gen_server:call(Table, get_player_list), -% add_player(Table, Player2), -% {ok, [Player2, Player]} = gen_server:call(Table, get_player_list), -% remove_player(Table, Player), -% {ok, [Player2]} = gen_server:call(Table, get_player_list), -% remove_player(Table, Player2), -% {ok, []} = gen_server:call(Table, get_player_list). -% -%stop_test() -> -% Table = start_link(), -% ok = stop(Table). - -% @private -%notify_test() -> -% Table = start_link(), -% Player = test_player, -% Message = {server, define, "function helloWorld(x) { }"}, -% ok = notify(Table, Player, Message). -%======= -%%start_link_test() -> -% Table = start_link("123", none), -% ?assertNot(Table =:= undefined). -% -%add_player_test() -> -% Table = start_link("123", none), -% Player = test_player, -% add_player(Table, Player), -% {ok, [Player]} = gen_server:call(Table, get_player_list). - -%remove_player_test() -> -% Table = start_link("123", none), -% Player = test_player, -% Player2 = test_player2, -% add_player(Table, Player), -% {ok, [Player]} = gen_server:call(Table, get_player_list), -% add_player(Table, Player2), -% {ok, [Player2, Player]} = gen_server:call(Table, get_player_list), -% remove_player(Table, Player), -% {ok, [Player2]} = gen_server:call(Table, get_player_list), -% remove_player(Table, Player2), -% {ok, []} = gen_server:call(Table, get_player_list). -% -%stop_test() -> -% Table = start_link("123", none), -% ok = stop(Table). -% -%% @private -%notify_test() -> -% Table = start_link("123", none), -% Player = test_player, -% Message = {server, define, "function helloWorld(x) { }"}, -% ok = notify(Table, Player, Message). -%>>>>>>> jonte_rewrite - %Message2 = {game, "helloWorld", "test"}, - %ok = notify(Table, Player, Message2). - diff --git a/src/js_helper.erl b/src/js_helper.erl deleted file mode 100644 index efb38f4..0000000 --- a/src/js_helper.erl +++ /dev/null @@ -1,8 +0,0 @@ --module(js_helper). --export([test/0, echo/1]). - -test() -> - {ok, test}. - -echo(String) -> - {ok, String}. \ No newline at end of file diff --git a/tests/ggs_table_test.erl b/tests/ggs_table_test.erl new file mode 100644 index 0000000..5757456 --- /dev/null +++ b/tests/ggs_table_test.erl @@ -0,0 +1,44 @@ +-include_lib("eunit/include/eunit.hrl"). +-import(ggs_table). + + +% @private +start_link_test() -> + Table = start_link(), + ?assertNot(Table =:= undefined). + +% @private +add_player_test() -> + Table = start_link(), + Player = test_player, + add_player(Table, Player), + {ok, [Player]} = gen_server:call(Table, get_player_list). + +% @private +remove_player_test() -> + Table = start_link(), + Player = test_player, + Player2 = test_player2, + add_player(Table, Player), + {ok, [Player]} = gen_server:call(Table, get_player_list), + add_player(Table, Player2), + {ok, [Player2, Player]} = gen_server:call(Table, get_player_list), + remove_player(Table, Player), + {ok, [Player2]} = gen_server:call(Table, get_player_list), + remove_player(Table, Player2), + {ok, []} = gen_server:call(Table, get_player_list). + +% @private +stop_test() -> + Table = start_link(), + ok = stop(Table). + +% @private +notify_test() -> + Table = start_link(), + Player = test_player, + Message = {server, define, "function helloWorld(x) { }"}, + ok = notify(Table, Player, Message). + Message2 = {game, "helloWorld", "test"}, + ok = notify(Table, Player, Message2). + From eb3925bebdd99f6eee8402688ea7dbceed2e9549 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 22 Feb 2011 00:39:15 +0100 Subject: [PATCH 09/29] fixed issues with tests --- tests/ggs_player_test.erl | 1 + tests/ggs_table_test.erl | 1 + 2 files changed, 2 insertions(+) diff --git a/tests/ggs_player_test.erl b/tests/ggs_player_test.erl index be38135..66900d6 100644 --- a/tests/ggs_player_test.erl +++ b/tests/ggs_player_test.erl @@ -1,3 +1,4 @@ +-module(ggs_player_test). -include_lib("eunit/include/eunit.hrl"). -import(ggs_player). diff --git a/tests/ggs_table_test.erl b/tests/ggs_table_test.erl index 5757456..7a270ed 100644 --- a/tests/ggs_table_test.erl +++ b/tests/ggs_table_test.erl @@ -1,3 +1,4 @@ +-module(ggs_table_test). -include_lib("eunit/include/eunit.hrl"). -import(ggs_table). From e4753b2c074c01ac2f08e981cbbed88c5e0e64dc Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 22 Feb 2011 00:49:43 +0100 Subject: [PATCH 10/29] minor changes --- erlang_js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erlang_js b/erlang_js index 2f2785f..709b568 160000 --- a/erlang_js +++ b/erlang_js @@ -1 +1 @@ -Subproject commit 2f2785fafb0da6db75810eb6fa97d09c58257588 +Subproject commit 709b568efbc99c954507d1593bc5633f900bc5dc From bf4d7439233b33770b92bcb0b464204c34baeabc Mon Sep 17 00:00:00 2001 From: Kallfaktorn Date: Tue, 22 Feb 2011 01:09:55 +0100 Subject: [PATCH 11/29] ggs_db.erl only init and stop left to do. ggs_db.test.erl only init and stop left todo. Everything else is done with these two files. --- erlang_js | 2 +- {mnesia => src}/ggs_db.erl | 0 {mnesia => tests}/ggs_db_test.erl | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename {mnesia => src}/ggs_db.erl (100%) rename {mnesia => tests}/ggs_db_test.erl (100%) diff --git a/erlang_js b/erlang_js index 709b568..5350ed2 160000 --- a/erlang_js +++ b/erlang_js @@ -1 +1 @@ -Subproject commit 709b568efbc99c954507d1593bc5633f900bc5dc +Subproject commit 5350ed21606606dbee5ecb07e974f2abb9106270 diff --git a/mnesia/ggs_db.erl b/src/ggs_db.erl similarity index 100% rename from mnesia/ggs_db.erl rename to src/ggs_db.erl diff --git a/mnesia/ggs_db_test.erl b/tests/ggs_db_test.erl similarity index 100% rename from mnesia/ggs_db_test.erl rename to tests/ggs_db_test.erl From 6ee945379f0c41e6f12bb26f9626165dbdbfdb6e Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 22 Feb 2011 03:11:35 +0100 Subject: [PATCH 12/29] added makefile, fixed problems with tests --- Makefile | 28 ++++++++++++++++++++++++++++ src/ggs_coordinator.erl | 4 ++-- src/ggs_dispatcher.erl | 2 +- src/ggs_gamevm_e.erl | 2 +- src/ggs_player.erl | 2 +- src/ggs_table.erl | 14 ++++++++------ tests/ggs_player_test.erl | 9 ++++----- tests/ggs_table_test.erl | 33 +++++++++++++-------------------- 8 files changed, 58 insertions(+), 36 deletions(-) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5c0e61d --- /dev/null +++ b/Makefile @@ -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 diff --git a/src/ggs_coordinator.erl b/src/ggs_coordinator.erl index 733ff8d..83f7e14 100644 --- a/src/ggs_coordinator.erl +++ b/src/ggs_coordinator.erl @@ -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) -> diff --git a/src/ggs_dispatcher.erl b/src/ggs_dispatcher.erl index 49dcf4b..11dd729 100644 --- a/src/ggs_dispatcher.erl +++ b/src/ggs_dispatcher.erl @@ -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}; diff --git a/src/ggs_gamevm_e.erl b/src/ggs_gamevm_e.erl index 76b9350..6ca4e1b 100644 --- a/src/ggs_gamevm_e.erl +++ b/src/ggs_gamevm_e.erl @@ -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"), diff --git a/src/ggs_player.erl b/src/ggs_player.erl index af92ad9..27c73d0 100644 --- a/src/ggs_player.erl +++ b/src/ggs_player.erl @@ -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. diff --git a/src/ggs_table.erl b/src/ggs_table.erl index 4715e79..9ddc7d6 100644 --- a/src/ggs_table.erl +++ b/src/ggs_table.erl @@ -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) -> diff --git a/tests/ggs_player_test.erl b/tests/ggs_player_test.erl index 66900d6..efe7530 100644 --- a/tests/ggs_player_test.erl +++ b/tests/ggs_player_test.erl @@ -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). diff --git a/tests/ggs_table_test.erl b/tests/ggs_table_test.erl index 7a270ed..c10effb 100644 --- a/tests/ggs_table_test.erl +++ b/tests/ggs_table_test.erl @@ -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). From 17356692c67ee3125b05151247de9d65f3e975d3 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 22 Feb 2011 03:14:48 +0100 Subject: [PATCH 13/29] latest erlang_js update --- erlang_js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erlang_js b/erlang_js index 5350ed2..709b568 160000 --- a/erlang_js +++ b/erlang_js @@ -1 +1 @@ -Subproject commit 5350ed21606606dbee5ecb07e974f2abb9106270 +Subproject commit 709b568efbc99c954507d1593bc5633f900bc5dc From 597070f2d608781f797cd7982249e568a1135239 Mon Sep 17 00:00:00 2001 From: Kallfaktorn Date: Tue, 22 Feb 2011 11:18:13 +0100 Subject: [PATCH 14/29] added ggs_db.hrl to src --- {mnesia => src}/ggs_db.hrl | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {mnesia => src}/ggs_db.hrl (100%) diff --git a/mnesia/ggs_db.hrl b/src/ggs_db.hrl similarity index 100% rename from mnesia/ggs_db.hrl rename to src/ggs_db.hrl From 0c530dde5d1d7bffc2d107c5301a3bc432f028a5 Mon Sep 17 00:00:00 2001 From: Kallfaktorn Date: Tue, 22 Feb 2011 12:36:36 +0100 Subject: [PATCH 15/29] clear(GameToken) aded. --- erlang_js | 2 +- src/ggs_db.erl | 52 +++++++++++++++++++++++++------------------ tests/ggs_db_test.erl | 6 ++++- 3 files changed, 36 insertions(+), 24 deletions(-) diff --git a/erlang_js b/erlang_js index 709b568..5350ed2 160000 --- a/erlang_js +++ b/erlang_js @@ -1 +1 @@ -Subproject commit 709b568efbc99c954507d1593bc5633f900bc5dc +Subproject commit 5350ed21606606dbee5ecb07e974f2abb9106270 diff --git a/src/ggs_db.erl b/src/ggs_db.erl index 912d349..b21bab2 100644 --- a/src/ggs_db.erl +++ b/src/ggs_db.erl @@ -7,7 +7,7 @@ -module(ggs_db). -import(mnesia). %-compile({no_auto_import,[length/2]}). --export([init/0,setItem/4,getItem/3,removeItem/3,key/3,clear/2,length/2]). +-export([init/0,setItem/4,getItem/3,removeItem/3,key/3,clear/2,clear/1,length/2]). -include("ggs_db.hrl"). %%----------------------------------------------------- @@ -27,9 +27,9 @@ init() -> %%----------------------------------------------------- %% Insertions %%----------------------------------------------------- -setItem(Db,Ns,Key,Value) -> +setItem(GameToken,Ns,Key,Value) -> Fun = fun() -> - Data = #data{key = {Db,Ns,Key}, value = Value}, + Data = #data{key = {GameToken,Ns,Key}, value = Value}, mnesia:write(Data) end, mnesia:transaction(Fun). @@ -38,45 +38,53 @@ setItem(Db,Ns,Key,Value) -> %%----------------------------------------------------- %% Deletions %%----------------------------------------------------- -removeItem(Db,Ns,Key) -> +removeItem(GameToken,Ns,Key) -> Fun = fun() -> - mnesia:delete({data,{Db,Ns,Key}}) + mnesia:delete({data,{GameToken,Ns,Key}}) end, mnesia:transaction(Fun). -clear(Db,Ns) -> +clear(GameToken,Ns) -> Fun = fun() -> Keys = mnesia:all_keys(data), - Rest = lists:filter(fun({A,B,_}) -> ((A==Db) and (B==Ns)) end, Keys), + Rest = lists:filter(fun({A,B,_}) -> ((A==GameToken) and (B==Ns)) end, Keys), lists:map(fun({A,B,C}) -> removeItem(A,B,C) end, Rest) end, {atomic, Ret} = mnesia:transaction(Fun), Ret. - -%%----------------------------------------------------- -%% Querries -%%----------------------------------------------------- -getItem(Db,Ns,Key) -> - Fun = fun() -> - [Data] = mnesia:read(data, {Db,Ns,Key}), - Data#data.value - end, - mnesia:transaction(Fun). - -length(Db,Ns) -> +clear(GameToken) -> Fun = fun() -> Keys = mnesia:all_keys(data), - length(lists:filter(fun({A,B,_}) -> ((A==Db) and (B==Ns)) end, Keys)) + Rest = lists:filter(fun({A,_,_}) -> (A==GameToken) end, Keys), + lists:map(fun({A,B,C}) -> removeItem(A,B,C) end, Rest) end, {atomic, Ret} = mnesia:transaction(Fun), Ret. -key(Db,Ns,Position) -> +%%----------------------------------------------------- +%% Querries +%%----------------------------------------------------- +getItem(GameToken,Ns,Key) -> + Fun = fun() -> + [Data] = mnesia:read(data, {GameToken,Ns,Key}), + Data#data.value + end, + mnesia:transaction(Fun). + +length(GameToken,Ns) -> Fun = fun() -> Keys = mnesia:all_keys(data), - Rest = lists:filter(fun({A,B,_}) -> ((A==Db) and (B==Ns)) end, Keys), + length(lists:filter(fun({A,B,_}) -> ((A==GameToken) and (B==Ns)) end, Keys)) + end, + {atomic, Ret} = mnesia:transaction(Fun), + Ret. + +key(GameToken,Ns,Position) -> + Fun = fun() -> + Keys = mnesia:all_keys(data), + Rest = lists:filter(fun({A,B,_}) -> ((A==GameToken) and (B==Ns)) end, Keys), lists:nth(Position, Rest) end, {atomic, Ret} = mnesia:transaction(Fun), diff --git a/tests/ggs_db_test.erl b/tests/ggs_db_test.erl index ea6e12e..5f990c8 100644 --- a/tests/ggs_db_test.erl +++ b/tests/ggs_db_test.erl @@ -31,7 +31,11 @@ key_test() -> clear_test() -> ggs_db:clear(1,1), - ?assert(ggs_db:length(1,1) =:= 0), + ?assert(ggs_db:length(1,1) =:= 0). + +clear_GameToken_test() -> + ggs_db:clear(1), + ?assert((ggs_db:length(1,1) + ggs_db:length(1,2)) =:= 0), mnesia:stop(). %tests() -> From 873e88eefdc90afeb3b676928ef02d9a02cb7085 Mon Sep 17 00:00:00 2001 From: Kallfaktorn Date: Tue, 22 Feb 2011 12:42:22 +0100 Subject: [PATCH 16/29] Removed init from ggs_db. --- src/ggs_db.erl | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/ggs_db.erl b/src/ggs_db.erl index b21bab2..5d2ee61 100644 --- a/src/ggs_db.erl +++ b/src/ggs_db.erl @@ -10,12 +10,6 @@ -export([init/0,setItem/4,getItem/3,removeItem/3,key/3,clear/2,clear/1,length/2]). -include("ggs_db.hrl"). -%%----------------------------------------------------- -%% Creation -%%----------------------------------------------------- -init() -> - mnesia:create_table(data, [{attributes, record_info(fields, data)}]). - %%----------------------------------------------------- %% Test %%----------------------------------------------------- From 0c76c85d8fcc3fe551b9a2d6c49a27fa57f4b844 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 22 Feb 2011 13:55:38 +0100 Subject: [PATCH 17/29] added test for one module --- Makefile | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 5c0e61d..cc165a3 100644 --- a/Makefile +++ b/Makefile @@ -7,22 +7,30 @@ BEAMDIR=./ebin all: compile erlang_js compile: - @ mkdir -p $(BEAMDIR) ; - @ $(ERLC) $(ERLCFLAGS) $(BEAMDIR) $(SRCDIR)/*.erl ; + mkdir -p $(BEAMDIR) ; + $(ERLC) $(ERLCFLAGS) $(BEAMDIR) $(SRCDIR)/*.erl ; erlang_js: - $(MAKE) -C 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()' ; +test: + echo "==> test $(MOD)" ; + mkdir -p $(BEAMDIR) ; +ifeq ($(strip $(MOD)),) + $(ERLC) $(ERLCFLAGS) $(BEAMDIR) $(TESTDIR)/*.erl ; + cd $(BEAMDIR) ; erl -noinput -eval 'eunit:test({dir, "."}, [verbose]), init:stop()' ; +else + $(ERLC) $(ERLCFLAGS) $(BEAMDIR) $(TESTDIR)/$(MOD)_test.erl ; + cd $(BEAMDIR) ; erl -noinput -eval 'eunit:test($(MOD)_test, [verbose]), init:stop()' ; +endif clean: - @ rm -rf $(BEAMDIR)/*.beam ; - @ rm -rf erl_crush.dump ; - @ echo "==> clean ggs" ; - @ $(MAKE) -C erlang_js/ 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 + erl -sname ggs -mnesia -boot start_sasl -pa erlang_js/ebin/ -pa ebin -pa src -s start_ggs + + \ No newline at end of file From dcc1a6086f39a0c46bc70e0f05ee4e45b06103f8 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 22 Feb 2011 13:56:27 +0100 Subject: [PATCH 18/29] removed io --- src/ggs_table.erl | 12 ++++-------- tests/ggs_table_test.erl | 2 +- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/ggs_table.erl b/src/ggs_table.erl index 9ddc7d6..b696688 100644 --- a/src/ggs_table.erl +++ b/src/ggs_table.erl @@ -51,9 +51,6 @@ notify_all_players(Table, Message) -> gen_server:cast(Table, {notify_all_players, Message}). notify_game(Table, From, Message) -> - io:format("Notify game called on"), - erlang:display(Table), - io:format("~n"), gen_server:cast(Table, {notify_game, Message, From}). %% ---------------------------------------------------------------------- @@ -95,11 +92,10 @@ handle_cast({notify_game, Message, From}, #state { game_vm = GameVM } = State) - {noreply, State}; handle_cast({notify_all_players, Message}, #state{players = Players} = State) -> - io:format("Notifying all players... ~p~n", [Players]), - lists:foreach(fun(P) -> - io:format("Notifying ~p~n", [P]), - ggs_player:notify(P, "Server", Message) - end, Players), + lists:foreach( + fun(P) -> ggs_player:notify(P, "Server", Message) end, + Players + ), {noreply, State}; handle_cast(stop, State) -> diff --git a/tests/ggs_table_test.erl b/tests/ggs_table_test.erl index c10effb..8dbe11e 100644 --- a/tests/ggs_table_test.erl +++ b/tests/ggs_table_test.erl @@ -31,7 +31,7 @@ stop_test() -> notify_test() -> Table = ggs_table:start_link(), Player = test_player, - Message = {server, define, "function helloWorld(x) { }"}, + Message = {server, define, "function helloWorld(x) { }"}, ok = ggs_table:notify(Table, Player, Message), Message2 = {game, "helloWorld", "test"}, ok = ggs_table:notify(Table, Player, Message2). From ce7b7d2764e29db0d0a793b935fd205df1608f34 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 22 Feb 2011 13:57:07 +0100 Subject: [PATCH 19/29] removed init from export --- src/ggs_db.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ggs_db.erl b/src/ggs_db.erl index 5d2ee61..7661ae6 100644 --- a/src/ggs_db.erl +++ b/src/ggs_db.erl @@ -7,7 +7,7 @@ -module(ggs_db). -import(mnesia). %-compile({no_auto_import,[length/2]}). --export([init/0,setItem/4,getItem/3,removeItem/3,key/3,clear/2,clear/1,length/2]). +-export([setItem/4,getItem/3,removeItem/3,key/3,clear/2,clear/1,length/2]). -include("ggs_db.hrl"). %%----------------------------------------------------- From 059948d7c3b34d200666babf058e6e39b93bd229 Mon Sep 17 00:00:00 2001 From: Kallfaktorn Date: Tue, 22 Feb 2011 15:08:25 +0100 Subject: [PATCH 20/29] merge. --- src/ggs_db.erl | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/ggs_db.erl b/src/ggs_db.erl index 7661ae6..ec8e5a9 100644 --- a/src/ggs_db.erl +++ b/src/ggs_db.erl @@ -6,17 +6,20 @@ -module(ggs_db). -import(mnesia). -%-compile({no_auto_import,[length/2]}). --export([setItem/4,getItem/3,removeItem/3,key/3,clear/2,clear/1,length/2]). +-export([init/0,stop/0,setItem/4,getItem/3,removeItem/3,key/3,clear/2,clear/1,length/2]). -include("ggs_db.hrl"). %%----------------------------------------------------- -%% Test +%% Creation %%----------------------------------------------------- +init() -> + mnesia:create_schema([node()]), + mnesia:start(), + mnesia:create_table(data, [{attributes, record_info(fields, data)}]). + +stop() -> + mnesia:stop(). -%test_data() -> -% set(0, "Hello"), -% get(0). %%----------------------------------------------------- %% Insertions From 3751ba8c95c83644eb9e8a9af631081c84499c73 Mon Sep 17 00:00:00 2001 From: Kallfaktorn Date: Tue, 22 Feb 2011 16:44:39 +0100 Subject: [PATCH 21/29] Bad code. --- src/ggs_db.erl | 9 +++++---- src/ggs_db.hrl | 1 - tests/ggs_db_test.erl | 44 ++++++++++++++++++++++--------------------- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/src/ggs_db.erl b/src/ggs_db.erl index ec8e5a9..57ff5ac 100644 --- a/src/ggs_db.erl +++ b/src/ggs_db.erl @@ -5,15 +5,15 @@ %%% @end -module(ggs_db). --import(mnesia). -export([init/0,stop/0,setItem/4,getItem/3,removeItem/3,key/3,clear/2,clear/1,length/2]). --include("ggs_db.hrl"). +%-include("ggs_db.hrl"). +-record(data, {key, value}). %%----------------------------------------------------- %% Creation %%----------------------------------------------------- init() -> - mnesia:create_schema([node()]), +% mnesia:create_schema([node()]), mnesia:start(), mnesia:create_table(data, [{attributes, record_info(fields, data)}]). @@ -68,7 +68,8 @@ getItem(GameToken,Ns,Key) -> [Data] = mnesia:read(data, {GameToken,Ns,Key}), Data#data.value end, - mnesia:transaction(Fun). + {atomic, Ret} = mnesia:transaction(Fun), + Ret. length(GameToken,Ns) -> Fun = fun() -> diff --git a/src/ggs_db.hrl b/src/ggs_db.hrl index bc13c3a..b7f1f4c 100644 --- a/src/ggs_db.hrl +++ b/src/ggs_db.hrl @@ -1,6 +1,5 @@ %% gamedb.hrl --record(player, {id, name}). -record(data, {key, value}). diff --git a/tests/ggs_db_test.erl b/tests/ggs_db_test.erl index 5f990c8..dcebdb9 100644 --- a/tests/ggs_db_test.erl +++ b/tests/ggs_db_test.erl @@ -10,33 +10,35 @@ %Key should be a tuple of two elements getItem_setItem_test() -> - mnesia:start(), ggs_db:init(), - ggs_db:setItem("dbname","nsname","keyname","Hello"), - ?assertMatch({atomic,"Hello"},ggs_db:getItem("dbname","nsname","keyname")). + ggs_db:setItem("dbname","nsname","keyname1","Hello"), + ggs_db:setItem("dbname","nsname","keyname2","Hello"), + ggs_db:setItem("dbname","nsname","keyname3","Hello"), + %system:wait(2000), + ggs_db:getItem("dbname","nsname","keyname"). -length_test() -> - ggs_db:setItem(1,1,2,"112"), - ggs_db:setItem(1,2,2,"122"), - ggs_db:setItem(1,1,3,"113"), - ggs_db:setItem(1,1,4,"114"), - ?assertEqual(ggs_db:length(1,1), 3). +%length_test() -> +% ggs_db:setItem(1,1,2,"112"), +% ggs_db:setItem(1,2,2,"122"), +% ggs_db:setItem(1,1,3,"113"), +% ggs_db:setItem(1,1,4,"114"), +% ?assertEqual(ggs_db:length(1,1), 3). -removeItem_test() -> - ggs_db:removeItem(1,1,4), - ?assertNot(ggs_db:getItem(1,1,4) =:= {atomic,"114"}). +%removeItem_test() -> +% ggs_db:removeItem(1,1,4), +% ?assertNot(ggs_db:getItem(1,1,4) =:= {atomic,"114"}). -key_test() -> - ?assert(ggs_db:key(1,1,2) =:= {1,1,3}). +%key_test() -> +% ?assert(ggs_db:key(1,1,2) =:= {1,1,3}). -clear_test() -> - ggs_db:clear(1,1), - ?assert(ggs_db:length(1,1) =:= 0). +%clear_test() -> +% ggs_db:clear(1,1), +% ?assert(ggs_db:length(1,1) =:= 0). -clear_GameToken_test() -> - ggs_db:clear(1), - ?assert((ggs_db:length(1,1) + ggs_db:length(1,2)) =:= 0), - mnesia:stop(). +%clear_GameToken_test() -> +% ggs_db:clear(1), +% ?assert((ggs_db:length(1,1) + ggs_db:length(1,2)) =:= 0), +% ggs_db:stop(). %tests() -> % ggs_db_test(). From 0a67224c97bbb6e3235bc98d4c9cae6211f9f4c9 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 22 Feb 2011 16:08:16 +0100 Subject: [PATCH 22/29] more beautiful code --- Makefile | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index cc165a3..14f07de 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ ERLC=erlc ERLCFLAGS=-o SRCDIR=src TESTDIR=tests -BEAMDIR=./ebin +BEAMDIR=ebin all: compile erlang_js @@ -31,6 +31,13 @@ clean: $(MAKE) -C erlang_js/ clean run: - erl -sname ggs -mnesia -boot start_sasl -pa erlang_js/ebin/ -pa ebin -pa src -s start_ggs + erl \ + -sname ggs \ + -mnesia dir '"/tmp/ggs"' \ + -boot start_sasl \ + -pa erlang_js/ebin/ \ + -pa ebin \ + -pa src \ + -s start_ggs \ No newline at end of file From 2a884cb9a7e9159b8559a462e89cca348d689af0 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 22 Feb 2011 16:09:53 +0100 Subject: [PATCH 23/29] fixed problem with getItem() --- src/ggs_db.erl | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/ggs_db.erl b/src/ggs_db.erl index 57ff5ac..5e5e727 100644 --- a/src/ggs_db.erl +++ b/src/ggs_db.erl @@ -64,12 +64,11 @@ clear(GameToken) -> %% Querries %%----------------------------------------------------- getItem(GameToken,Ns,Key) -> - Fun = fun() -> - [Data] = mnesia:read(data, {GameToken,Ns,Key}), - Data#data.value - end, - {atomic, Ret} = mnesia:transaction(Fun), - Ret. + Fun = fun() -> + mnesia:read(data, {GameToken,Ns,Key}) + end, + {atomic, [Ret]} = mnesia:transaction(Fun), + Ret#data.value. length(GameToken,Ns) -> Fun = fun() -> From a544484f1a25cefad9299ba80054d4b2906bfe87 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 22 Feb 2011 17:28:41 +0100 Subject: [PATCH 24/29] Fixed problem with erlang_js make where it wouldn't make --- Makefile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 14f07de..d40790a 100644 --- a/Makefile +++ b/Makefile @@ -10,8 +10,8 @@ compile: mkdir -p $(BEAMDIR) ; $(ERLC) $(ERLCFLAGS) $(BEAMDIR) $(SRCDIR)/*.erl ; -erlang_js: - $(MAKE) -C erlang_js/ ; +erlang_js: force_look + cd erlang_js ; $(MAKE) $(MFLAGS); test: echo "==> test $(MOD)" ; @@ -40,4 +40,5 @@ run: -pa src \ -s start_ggs - \ No newline at end of file +force_look: + true \ No newline at end of file From 4591a29c21e5e36a79720f44a49b84dab53e06e7 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 22 Feb 2011 19:48:07 +0100 Subject: [PATCH 25/29] removed unnecessary files --- HOWTO | 21 --------------------- build | 6 ------ build_test | 8 -------- client | 17 ----------------- echo_test | 20 -------------------- mnesia/.gamedb.erl.swp | Bin 12288 -> 0 bytes mnesia/build_db | 4 ---- mnesia/build_test_db | 4 ---- mnesia/gamedb.hrl | 6 ------ mnesia/gamedb_usage.txt | 12 ------------ mnesia/test_db | 3 --- start | 3 --- start_test | 3 --- start_test_shell | 3 --- 14 files changed, 110 deletions(-) delete mode 100644 HOWTO delete mode 100755 build delete mode 100755 build_test delete mode 100644 client delete mode 100755 echo_test delete mode 100644 mnesia/.gamedb.erl.swp delete mode 100755 mnesia/build_db delete mode 100755 mnesia/build_test_db delete mode 100644 mnesia/gamedb.hrl delete mode 100644 mnesia/gamedb_usage.txt delete mode 100755 mnesia/test_db delete mode 100755 start delete mode 100755 start_test delete mode 100755 start_test_shell diff --git a/HOWTO b/HOWTO deleted file mode 100644 index 2d28ea8..0000000 --- a/HOWTO +++ /dev/null @@ -1,21 +0,0 @@ -PREREQUISITES: -python version 2.x set to default. - -INSTALL -1. Cd into directory where you to have the project -2. git clone git@github.com:jeena/GGS.git (remember to have a local key) -3. cd GGS/ -4. git submodule init -5. git submodule update -6. cd erlang_js -7. make -8. make test (Optional. It has to work though.) -10. cd ../ -11. ./build -12. - -USAGE -1. start a second terminal -2. in new terminal do command: ./python_client 9000 -3. back to first terminal -4. ./start diff --git a/build b/build deleted file mode 100755 index a9c1c79..0000000 --- a/build +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -for i in `find src -name "*.erl"` -do - erlc -o ebin $i -done \ No newline at end of file diff --git a/build_test b/build_test deleted file mode 100755 index 2f9d630..0000000 --- a/build_test +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -./build - -for i in `find tests -name "*.erl"` -do - erlc -o ebin_test $i -done diff --git a/client b/client deleted file mode 100644 index dff11aa..0000000 --- a/client +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env ruby -wKU - -require 'socket' # Sockets are in standard library - -hostname = 'localhost' -port = 7000 - -s = TCPSocket.open(hostname, port) - - - -s.print(q.chop) - -while line = s.gets # Read lines from the socket - puts "Got Echo: " + line.chop # And print with platform line terminator -end -s.close # Close the socket when done diff --git a/echo_test b/echo_test deleted file mode 100755 index 1bbff1f..0000000 --- a/echo_test +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env ruby -wKU - -require 'socket' # Sockets are in standard library - -hostname = 'localhost' -port = 7000 - -print "Which port @ loclhost?" -port = gets - -s = TCPSocket.open(hostname, port.chop) - -s.print("__hello 0") - -while true - line = s.gets # Read lines from the socket - puts ">> " + line.chop # And print with platform line terminator - s.print(gets.chop) -end -s.close # Close the socket when done diff --git a/mnesia/.gamedb.erl.swp b/mnesia/.gamedb.erl.swp deleted file mode 100644 index 469b1f85b2ecf7663f6f99f957c41243aa53c9d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2zfTlF6vqcEQBk9XjV9wE^c~uUwxG9A3wj3SpnmAjS;oFXpP_fq7W5WsLG#cJs2}=` z*tenA&^%Ow94N`@1lEK?CIUo&2oM1xKm>@u|3rXec*zmXaifJFiH1>upT8UXg)*~~ z>5#r#WV<)}R~3ve1=%yL;PBeT2;Jn`8LfGIzc+H@1JWO|Mq+22omqCbw2|9xebwV&MdL9H&}jaz%JyTka;4q><#@S!BC3>)Gzy4_c#PjEwfs92d$g zeDw@9$s((11KAk4Xhgj&_xgNpO&Ft9Jx0hyu4N<8?xOOSg8Y(_Z5Pkd9xtpfAbI60 zlk|Vj0invbZ5$|a&pud5`Hgn$%6u+6_TAF$9KtKfl`zmIKWF2tIK{3yRjS4AN?}1q zeKFlpwTffYEh!vShrbk{ec%Od40`En@qpXv@LICLF(fp^C$W{KAKaj^+l+SvsEbH) z>}FiYzERkptP}oRXk`n+an@anrYxtnjUZgrs@XD}k2uvTuc1mxM0`dXBXtxd^zbqf jn-*N!@$V9T6Fa9h3+=0-$)+b%yW9vo`z7sdlVX1X$Qr-k diff --git a/mnesia/build_db b/mnesia/build_db deleted file mode 100755 index 0aa2042..0000000 --- a/mnesia/build_db +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash - - erlc -o . ggs_db.erl - erlc -o . ggs_db_test.erl diff --git a/mnesia/build_test_db b/mnesia/build_test_db deleted file mode 100755 index f5aa938..0000000 --- a/mnesia/build_test_db +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash - -./build_db -./test_db diff --git a/mnesia/gamedb.hrl b/mnesia/gamedb.hrl deleted file mode 100644 index 1ae9c8f..0000000 --- a/mnesia/gamedb.hrl +++ /dev/null @@ -1,6 +0,0 @@ -%% gamedb.hrl - --record(player, {id, name}). - - - diff --git a/mnesia/gamedb_usage.txt b/mnesia/gamedb_usage.txt deleted file mode 100644 index b3a07a0..0000000 --- a/mnesia/gamedb_usage.txt +++ /dev/null @@ -1,12 +0,0 @@ -1. From terminal: erl -mnesia dir '"/home/user/dir/to/GGS/GameDB.Player"' -2. mnesia:create_schema([node()]). -3. mnesia:start(). -4. c(gamedb). -5. gamedb:init(). -6. mnesia:info(). -7. gamedb:test_player(). - -Last output should be: - Player name: Tux - {atomic,ok} - diff --git a/mnesia/test_db b/mnesia/test_db deleted file mode 100755 index 958b005..0000000 --- a/mnesia/test_db +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -erl -eval 'eunit:test(ggs_db_test), q().' diff --git a/start b/start deleted file mode 100755 index 6de5737..0000000 --- a/start +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -erl -sname ggs -mnesia -boot start_sasl -pa erlang_js/ebin/ -pa ebin -pa src -s start_ggs diff --git a/start_test b/start_test deleted file mode 100755 index 76050c1..0000000 --- a/start_test +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -erl -boot start_sasl -pa ebin_test -pa erlang_js/ebin/ -pa ebin -pa src -eval 'ggs_coordinator_test:test().' diff --git a/start_test_shell b/start_test_shell deleted file mode 100755 index f2135c4..0000000 --- a/start_test_shell +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -erl -boot start_sasl -pa ebin_test -pa erlang_js/ebin/ -pa erlv8/ebin -pa ebin -pa src From c38b2120abf774537410a0b4c7632a6771cf8888 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 22 Feb 2011 19:48:33 +0100 Subject: [PATCH 26/29] merged with HOWTO --- README | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/README b/README index 853cc89..9aa5357 100644 --- a/README +++ b/README @@ -1,3 +1,35 @@ GGS is a Generic Game Server -Check out http://ggs-kandidat.blogspot.com/ \ No newline at end of file +Check out http://ggs-kandidat.blogspot.com/ + +PREREQUISITES: +python version 2.x set to default. + +INSTALL +1. cd into directory where you to have the project +2. git clone git@github.com:jeena/GGS.git (remember to have a local key) +3. cd GGS/ +4. git submodule init +5. git submodule update + +USAGE +1. start a second terminal +2. in new terminal do command: ./python_client 9000 +3. back to first terminal +4. make run + +MAKE +To compile modules (even erlang_js): + make + +To run server: + make run + +To clean (even erlang_js): + make clean + +To compile and run all tests: + make test + +To compile and run one test: + make test MOD=ggs_modulename # (must have /tests/ggs_modulename_test.erl) From 8a1a520ac0e2760835318c75b3d7981d3c545ae9 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 22 Feb 2011 19:49:57 +0100 Subject: [PATCH 27/29] moved tests to own file --- src/ggs_gamevm.erl | 31 ------------------------------- tests/ggs_gamevm_test.erl | 31 +++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 31 deletions(-) create mode 100644 tests/ggs_gamevm_test.erl diff --git a/src/ggs_gamevm.erl b/src/ggs_gamevm.erl index 6dd19a7..babee27 100644 --- a/src/ggs_gamevm.erl +++ b/src/ggs_gamevm.erl @@ -97,34 +97,3 @@ code_change(_OldVsn, State, _Extra) -> js_escape(S) -> lists:flatmap(fun($\') -> [$\\, $\']; (X) -> [X] end, S). -%% ---------------------------------------------------------------------- -% Tests - -start_link_test() -> - erlang_js:start(), %% @TODO: should only be done once - GameVM = start_link(test_table), - ?assertNot(GameVM =:= undefined). - -define_test() -> - GameVM = start_link(test_table), - define(GameVM, "function hello(test) { return test; }"), - ?assertMatch(<<"jeena">>, gen_server:call(GameVM, {eval, "hello('jeena')"})). - -stop_test() -> - GameVM = start_link(test_table), - ok = stop(GameVM). - -user_command_test() -> - GameVM = start_link(test_table), - define(GameVM, "var t = '';\nfunction userCommand(user, command, args) { t = user + command + args; }\n"), - user_command(GameVM, "'jeena", "thecommand", "theargs'"), - ?assertMatch(<<"'jeenathecommandtheargs'">>, gen_server:call(GameVM, {eval, "t;"})). - -js_erlang_test() -> - GameVM = start_link(test_table), - define(GameVM, "var t = '';\nfunction userCommand(user, command, args) { t = callErlang('erlang time') + ''; }\n"), - user_command(GameVM, "", "", ""), - {A, B, C} = erlang:time(), - T = "{" ++ integer_to_list(A) ++ ", " ++ integer_to_list(B) ++ ", " ++ integer_to_list(C) ++ "}", - ?assertMatch(T, binary_to_list(gen_server:call(GameVM, {eval, "t;"}))). - diff --git a/tests/ggs_gamevm_test.erl b/tests/ggs_gamevm_test.erl new file mode 100644 index 0000000..1689dd1 --- /dev/null +++ b/tests/ggs_gamevm_test.erl @@ -0,0 +1,31 @@ +-module(ggs_gamevm_test). +-include_lib("eunit/include/eunit.hrl"). + +start_link_test() -> + erlang_js:start(), %% @TODO: should only be done once + GameVM = start_link(test_table), + ?assertNot(GameVM =:= undefined). + +define_test() -> + GameVM = start_link(test_table), + define(GameVM, "function hello(test) { return test; }"), + ?assertMatch(<<"jeena">>, gen_server:call(GameVM, {eval, "hello('jeena')"})). + +stop_test() -> + GameVM = start_link(test_table), + ok = stop(GameVM). + +user_command_test() -> + GameVM = start_link(test_table), + define(GameVM, "var t = '';\nfunction userCommand(user, command, args) { t = user + command + args; }\n"), + user_command(GameVM, "'jeena", "thecommand", "theargs'"), + ?assertMatch(<<"'jeenathecommandtheargs'">>, gen_server:call(GameVM, {eval, "t;"})). + +js_erlang_test() -> + GameVM = start_link(test_table), + define(GameVM, "var t = '';\nfunction userCommand(user, command, args) { t = callErlang('erlang time') + ''; }\n"), + user_command(GameVM, "", "", ""), + {A, B, C} = erlang:time(), + T = "{" ++ integer_to_list(A) ++ ", " ++ integer_to_list(B) ++ ", " ++ integer_to_list(C) ++ "}", + ?assertMatch(T, binary_to_list(gen_server:call(GameVM, {eval, "t;"}))). + From 21b2b9aeda38e84280ee9d0b9e1c451e89043567 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 22 Feb 2011 19:51:48 +0100 Subject: [PATCH 28/29] readded tests after fix --- tests/ggs_db_test.erl | 54 ++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/tests/ggs_db_test.erl b/tests/ggs_db_test.erl index dcebdb9..0ee4686 100644 --- a/tests/ggs_db_test.erl +++ b/tests/ggs_db_test.erl @@ -12,39 +12,31 @@ getItem_setItem_test() -> ggs_db:init(), ggs_db:setItem("dbname","nsname","keyname1","Hello"), - ggs_db:setItem("dbname","nsname","keyname2","Hello"), - ggs_db:setItem("dbname","nsname","keyname3","Hello"), - %system:wait(2000), - ggs_db:getItem("dbname","nsname","keyname"). + ggs_db:setItem("dbname","nsname","keyname2","Hello2"), + ggs_db:setItem("dbname2","nsname","keyname1","Hello3"), + ggs_db:setItem("dbname2","nsname","keyname1","Hello4"), + ggs_db:setItem("dbname3","nsname","keyname1","Hello5"), + "Hello" = ggs_db:getItem("dbname","nsname","keyname1"). -%length_test() -> -% ggs_db:setItem(1,1,2,"112"), -% ggs_db:setItem(1,2,2,"122"), -% ggs_db:setItem(1,1,3,"113"), -% ggs_db:setItem(1,1,4,"114"), -% ?assertEqual(ggs_db:length(1,1), 3). +length_test() -> + ggs_db:setItem(1,1,2,"112"), + ggs_db:setItem(1,2,2,"122"), + ggs_db:setItem(1,1,3,"113"), + ggs_db:setItem(1,1,4,"114"), + ?assertEqual(ggs_db:length(1,1), 3). -%removeItem_test() -> -% ggs_db:removeItem(1,1,4), -% ?assertNot(ggs_db:getItem(1,1,4) =:= {atomic,"114"}). +removeItem_test() -> + ggs_db:removeItem(1,1,4), + ?assertNot(ggs_db:getItem(1,1,4) =:= "114"). -%key_test() -> -% ?assert(ggs_db:key(1,1,2) =:= {1,1,3}). +key_test() -> + ?assert(ggs_db:key(1,1,2) =:= {1,1,3}). -%clear_test() -> -% ggs_db:clear(1,1), -% ?assert(ggs_db:length(1,1) =:= 0). - -%clear_GameToken_test() -> -% ggs_db:clear(1), -% ?assert((ggs_db:length(1,1) + ggs_db:length(1,2)) =:= 0), -% ggs_db:stop(). - -%tests() -> -% ggs_db_test(). - -%ggs_db_test() -> -% ggs_db:set(0, "Hello"), - %io:format("~s",[Val]), -% ?assertMatch({atomic,"Hello"},ggs_db:get(0)). +clear_test() -> + ggs_db:clear(1,1), + ?assert(ggs_db:length(1,1) =:= 0). +clear_GameToken_test() -> + ggs_db:clear(1), + ?assert((ggs_db:length(1,1) + ggs_db:length(1,2)) =:= 0), + ggs_db:stop(). From 0aac25cd42c89d6b70c9b49e3adfefa521992058 Mon Sep 17 00:00:00 2001 From: niklas Date: Wed, 23 Feb 2011 22:29:10 +0100 Subject: [PATCH 29/29] Fixed getItem in ggs_db --- src/ggs_db.erl | 20 +++++++++--------- tests/ggs_db_test.erl | 47 ++++++++++++++++++++++++------------------- 2 files changed, 36 insertions(+), 31 deletions(-) diff --git a/src/ggs_db.erl b/src/ggs_db.erl index 5e5e727..29665a3 100644 --- a/src/ggs_db.erl +++ b/src/ggs_db.erl @@ -41,7 +41,6 @@ removeItem(GameToken,Ns,Key) -> end, mnesia:transaction(Fun). - clear(GameToken,Ns) -> Fun = fun() -> Keys = mnesia:all_keys(data), @@ -61,14 +60,18 @@ clear(GameToken) -> Ret. %%----------------------------------------------------- -%% Querries +%% Queries %%----------------------------------------------------- getItem(GameToken,Ns,Key) -> - Fun = fun() -> - mnesia:read(data, {GameToken,Ns,Key}) - end, - {atomic, [Ret]} = mnesia:transaction(Fun), - Ret#data.value. + Fun = fun() -> + mnesia:read(data, {GameToken,Ns,Key}) + end, + case mnesia:transaction(Fun) of + {atomic, []} -> + {error}; + {atomic, [Ret]} -> + Ret#data.value +end. length(GameToken,Ns) -> Fun = fun() -> @@ -86,6 +89,3 @@ key(GameToken,Ns,Position) -> end, {atomic, Ret} = mnesia:transaction(Fun), Ret. - - - diff --git a/tests/ggs_db_test.erl b/tests/ggs_db_test.erl index 0ee4686..f2608f1 100644 --- a/tests/ggs_db_test.erl +++ b/tests/ggs_db_test.erl @@ -9,34 +9,39 @@ %Key should be a tuple of two elements -getItem_setItem_test() -> - ggs_db:init(), - ggs_db:setItem("dbname","nsname","keyname1","Hello"), - ggs_db:setItem("dbname","nsname","keyname2","Hello2"), - ggs_db:setItem("dbname2","nsname","keyname1","Hello3"), - ggs_db:setItem("dbname2","nsname","keyname1","Hello4"), - ggs_db:setItem("dbname3","nsname","keyname1","Hello5"), - "Hello" = ggs_db:getItem("dbname","nsname","keyname1"). +getItem_setItem_test() -> + ggs_db:init(), + ggs_db:setItem("dbname","nsname","keyname1","Hello"), + ggs_db:setItem("dbname","nsname","keyname2","Hello2"), + ggs_db:setItem("dbname2","nsname","keyname1","Hello3"), + ggs_db:setItem("dbname2","nsname","keyname1","Hello4"), + ggs_db:setItem("dbname3","nsname","keyname1","Hello5"), + "Hello" = ggs_db:getItem("dbname","nsname","keyname1"). +%Test the length function of our database length_test() -> - ggs_db:setItem(1,1,2,"112"), - ggs_db:setItem(1,2,2,"122"), - ggs_db:setItem(1,1,3,"113"), - ggs_db:setItem(1,1,4,"114"), - ?assertEqual(ggs_db:length(1,1), 3). + ggs_db:setItem(1,1,2,"112"), + ggs_db:setItem(1,2,2,"122"), + ggs_db:setItem(1,1,3,"113"), + ggs_db:setItem(1,1,4,"114"), + ?assertEqual(ggs_db:length(1,1), 3). +%Test if we can remove correctly from the database removeItem_test() -> - ggs_db:removeItem(1,1,4), - ?assertNot(ggs_db:getItem(1,1,4) =:= "114"). + ggs_db:removeItem(1,1,4), + ?assertNot(ggs_db:getItem(1,1,4) =:= "114"). +%Test the key function key_test() -> - ?assert(ggs_db:key(1,1,2) =:= {1,1,3}). + ?assert(ggs_db:key(1,1,2) =:= {1,1,2}). +%Test the clear function(for gametoken and ns) clear_test() -> - ggs_db:clear(1,1), - ?assert(ggs_db:length(1,1) =:= 0). + ggs_db:clear(1,1), + ?assert(ggs_db:length(1,1) =:= 0). +%Test the clear function(gametoken) clear_GameToken_test() -> - ggs_db:clear(1), - ?assert((ggs_db:length(1,1) + ggs_db:length(1,2)) =:= 0), - ggs_db:stop(). + ggs_db:clear(1), + ?assert((ggs_db:length(1,1) + ggs_db:length(1,2)) =:= 0), + ggs_db:stop().