Browse Source

add non integer to value() generator

git-svn-id: http://svn.ulf.wiger.net/gproc/branches/experimental-0906/gproc@31 f3948e33-8234-0410-8a80-a07eae3b6c4d
jwnorton 15 years ago
parent
commit
e298302a17
2 changed files with 13 additions and 13 deletions
  1. 9 11
      src/Unit-Quick-Files/gproc_eqc.erl
  2. 4 2
      src/gproc.erl

+ 9 - 11
src/Unit-Quick-Files/gproc_eqc.erl

@@ -7,7 +7,6 @@
 
 -module(gproc_eqc).
 
-
 -include("eqc.hrl").
 -include("eqc_statem.hrl").
 
@@ -17,18 +16,13 @@
 %% QUESTIONS:
 %%
 %%  - does set_value for Class==a make sense?
-%%
+%%  - shouldn't mreg return {true, keys()} rather than the {true,
+%%    objects()} upon success?
 
 %%
-%% TODO Now:
+%% TODO:
 %%
-%%  - add non integer to value() generator
 %%  - implement mreg
-%%
-
-%%
-%% TODO Later:
-%%
 %%  - implement send
 %%  - implement info
 %%  - implement select
@@ -85,7 +79,8 @@ command(S) ->
                   %% unregister
                   , {call,?MODULE,unreg,          [elements(S#state.pids), key()]}
                   %% many register
-                  %%, {call,?MODULE,mreg,         [elements(S#state.pids), class(), scope(), list({name(), value()})]}
+                  %%, {call,?MODULE,mreg,           [elements(S#state.pids), class(), scope()
+                  %%                                 , list({name(), value()})]}
 
                   %% set_value
                   , {call,?MODULE,set_value,      [elements(S#state.pids), key(), value()]}
@@ -115,10 +110,13 @@ name() -> elements([x,y,z,w]).
 key() -> #key{class=class(), scope=scope(), name=name()}.
 
 %% generator value
-value() -> int().
+value() -> frequency([{8, int()}, {1, undefined}, {1, make_ref()}]).
 
 
 %% helpers
+is_register_ok(_S,_Pid,#key{class=Class},Value)
+  when Class == c, not is_integer(Value) ->
+    false;
 is_register_ok(S,Pid,Key,_Value) ->
     [] == [ Pid1 || #reg{pid=Pid1,key=Key1}
                         <- S#state.regs, is_register_eq(Pid,Key,Pid1,Key1) ].

+ 4 - 2
src/gproc.erl

@@ -99,8 +99,10 @@ mreg(T, g, KVL) ->
     ?CHK_DIST,
     gproc_dist:mreg(T, KVL);
 mreg(T, l, KVL) when T==a; T==n ->
-    if is_list(KVL) -> call({mreg, T, l, KVL});
-       true -> erlang:error(badarg)
+    if is_list(KVL) ->
+            call({mreg, T, l, KVL});
+       true ->
+            erlang:error(badarg)
     end;
 mreg(p, l, KVL) ->
     local_mreg(p, KVL);