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