Fixed getItem in ggs_db

This commit is contained in:
niklas 2011-02-23 22:29:10 +01:00
parent 21b2b9aeda
commit 0aac25cd42
2 changed files with 36 additions and 31 deletions

View file

@ -41,7 +41,6 @@ removeItem(GameToken,Ns,Key) ->
end, end,
mnesia:transaction(Fun). mnesia:transaction(Fun).
clear(GameToken,Ns) -> clear(GameToken,Ns) ->
Fun = fun() -> Fun = fun() ->
Keys = mnesia:all_keys(data), Keys = mnesia:all_keys(data),
@ -61,14 +60,18 @@ clear(GameToken) ->
Ret. Ret.
%%----------------------------------------------------- %%-----------------------------------------------------
%% Querries %% Queries
%%----------------------------------------------------- %%-----------------------------------------------------
getItem(GameToken,Ns,Key) -> getItem(GameToken,Ns,Key) ->
Fun = fun() -> Fun = fun() ->
mnesia:read(data, {GameToken,Ns,Key}) mnesia:read(data, {GameToken,Ns,Key})
end, end,
{atomic, [Ret]} = mnesia:transaction(Fun), case mnesia:transaction(Fun) of
Ret#data.value. {atomic, []} ->
{error};
{atomic, [Ret]} ->
Ret#data.value
end.
length(GameToken,Ns) -> length(GameToken,Ns) ->
Fun = fun() -> Fun = fun() ->
@ -86,6 +89,3 @@ key(GameToken,Ns,Position) ->
end, end,
{atomic, Ret} = mnesia:transaction(Fun), {atomic, Ret} = mnesia:transaction(Fun),
Ret. Ret.

View file

@ -10,33 +10,38 @@
%Key should be a tuple of two elements %Key should be a tuple of two elements
getItem_setItem_test() -> getItem_setItem_test() ->
ggs_db:init(), ggs_db:init(),
ggs_db:setItem("dbname","nsname","keyname1","Hello"), ggs_db:setItem("dbname","nsname","keyname1","Hello"),
ggs_db:setItem("dbname","nsname","keyname2","Hello2"), ggs_db:setItem("dbname","nsname","keyname2","Hello2"),
ggs_db:setItem("dbname2","nsname","keyname1","Hello3"), ggs_db:setItem("dbname2","nsname","keyname1","Hello3"),
ggs_db:setItem("dbname2","nsname","keyname1","Hello4"), ggs_db:setItem("dbname2","nsname","keyname1","Hello4"),
ggs_db:setItem("dbname3","nsname","keyname1","Hello5"), ggs_db:setItem("dbname3","nsname","keyname1","Hello5"),
"Hello" = ggs_db:getItem("dbname","nsname","keyname1"). "Hello" = ggs_db:getItem("dbname","nsname","keyname1").
%Test the length function of our database
length_test() -> length_test() ->
ggs_db:setItem(1,1,2,"112"), ggs_db:setItem(1,1,2,"112"),
ggs_db:setItem(1,2,2,"122"), ggs_db:setItem(1,2,2,"122"),
ggs_db:setItem(1,1,3,"113"), ggs_db:setItem(1,1,3,"113"),
ggs_db:setItem(1,1,4,"114"), ggs_db:setItem(1,1,4,"114"),
?assertEqual(ggs_db:length(1,1), 3). ?assertEqual(ggs_db:length(1,1), 3).
%Test if we can remove correctly from the database
removeItem_test() -> removeItem_test() ->
ggs_db:removeItem(1,1,4), ggs_db:removeItem(1,1,4),
?assertNot(ggs_db:getItem(1,1,4) =:= "114"). ?assertNot(ggs_db:getItem(1,1,4) =:= "114").
%Test the key function
key_test() -> 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() -> clear_test() ->
ggs_db:clear(1,1), ggs_db:clear(1,1),
?assert(ggs_db:length(1,1) =:= 0). ?assert(ggs_db:length(1,1) =:= 0).
%Test the clear function(gametoken)
clear_GameToken_test() -> clear_GameToken_test() ->
ggs_db:clear(1), ggs_db:clear(1),
?assert((ggs_db:length(1,1) + ggs_db:length(1,2)) =:= 0), ?assert((ggs_db:length(1,1) + ggs_db:length(1,2)) =:= 0),
ggs_db:stop(). ggs_db:stop().