Browse Source

部分修改

master
SisMaker 5 years ago
parent
commit
603c5fed7c
2 changed files with 109 additions and 2 deletions
  1. +107
    -0
      src/dataType/utGenTerm.erl
  2. +2
    -2
      src/docs/erlangApp相关.md

+ 107
- 0
src/dataType/utGenTerm.erl View File

@ -0,0 +1,107 @@
-module(utGenTerm).
-export([
any/0,
any/1,
genAtom/1,
genInteger/1,
genFloat/1,
genReference/1,
genPort/1,
genPid/1,
genTuple/1,
genList/1,
genShortString/1,
genString/1,
genBinary/1,
genBitstring/1,
genBignum/1,
genFunction/1
]).
any() ->
any(16).
any(MaxSize) when MaxSize =< 0 ->
Fun = choice(value_types()),
?MODULE:Fun(MaxSize);
any(MaxSize) ->
Fun = choice(all_types()),
?MODULE:Fun(MaxSize).
genAtom(MaxSize) ->
list_to_atom(genShortString(MaxSize)).
genInteger(_) ->
Value = case rand:uniform() < 0.5 of
true -> rand:uniform(127);
false -> rand:uniform(16#FFFFFFFF)
end,
case rand:uniform() < 0.5 of
true -> -1 * Value;
false -> Value
end.
genFloat(_) ->
rand:uniform() * float(16#FFFFFFFF).
genReference(_) ->
erlang:make_ref().
genPort(_) ->
Ports = erlang:ports(),
lists:nth(rand:uniform(length(Ports)), Ports).
genPid(_) ->
Pids = erlang:processes(),
lists:nth(rand:uniform(length(Pids)), Pids).
genTuple(MaxSize) ->
list_to_tuple(genList(MaxSize)).
genList(MaxSize) ->
Width = rand:uniform(MaxSize),
[any(MaxSize-Width) || _ <- lists:seq(1, Width)].
genShortString(_) ->
Size = rand:uniform(255),
[rand:uniform(127) || _ <- lists:seq(1, Size)].
genString(_) ->
Size = rand:uniform(4096),
[rand:uniform(127) || _ <- lists:seq(1, Size)].
genBinary(MaxSize) ->
list_to_binary(genString(MaxSize)).
genBitstring(MaxSize) ->
B = genBinary(MaxSize),
<<2:4/integer, B/binary>>.
genBignum(_) ->
16#FFFFFFFFFFFFFFFF + rand:uniform(16#FFFFFFFF).
genFunction(_) ->
choice(all_types()).
choice(Options) ->
lists:nth(rand:uniform(length(Options)), Options).
value_types() ->
[
gen_atom,
gen_integer,
gen_float,
gen_reference,
gen_port,
gen_pid,
gen_short_string,
gen_string,
gen_binary,
gen_bitstring,
gen_bignum,
gen_function
].
all_types() ->
value_types() ++ [gen_tuple, gen_list].

+ 2
- 2
src/docs/erlangApp相关.md View File

@ -12,8 +12,8 @@
{maxT,Time},%%app运行时间 单位毫秒
{registered,[mod]},%%指定app 名字模块,systools用来解决名字冲突
{included_applictions ,[XX]},%%指定子 app,只加载,但是不启动
{applictions,[xxxx]},%%启动自己的app前,将会首先启动此列表的app
{env,[xxxx]},%%配置app的env,可以使用application:get_env获取
{applictions,[xxxx]},%%启动自己的app前,appliation:ensure_all_started将会首先启动此列表的app application:start会检查该列表是否都启动
{env,[xxxx]},%%配置app的env,可以使用application:get_env(AppName, Key)获取
{mod,{xxx,args}},%%指定app启动模块,参数,对应自己app的application behavior
{start_phases,[{xxx,xxx}]]%%指定启动阶段一些操作,对应otp application start_phase函数
]

Loading…
Cancel
Save