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

View file

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