%%% -*- mode: erlang -*- %%% The MIT License %%% %%% Copyright (C) 2011-2016 by Joseph Wayne Norton %%% Copyright (C) 2002 by Joe Armstrong %%% %%% Permission is hereby granted, free of charge, to any person obtaining a copy %%% of this software and associated documentation files (the "Software"), to deal %%% in the Software without restriction, including without limitation the rights %%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell %%% copies of the Software, and to permit persons to whom the Software is %%% furnished to do so, subject to the following conditions: %%% %%% The above copyright notice and this permission notice shall be included in %%% all copies or substantial portions of the Software. %%% %%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR %%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, %%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE %%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER %%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, %%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN %%% THE SOFTWARE. +NAME("test"). +VSN("ubf2.0"). +TYPES info() :: info; description() :: description; services() :: services; contract() :: contract; serviceList() :: [ubfstring()]; dummy() :: {dummy, dummyrecord()}; dummyrecord() :: #dummyrecord{foo::integer(), bar::binary()}; dummy1a() :: atom(ascii,nonempty,nonundefined); dummy1b() :: atom(asciiprintable,nonempty,nonundefined); dummy3a() :: binary(ascii,nonempty); dummy3b() :: binary(asciiprintable,nonempty); dummy4() :: any(nonempty,nonundefined); dummy5() :: #dummy5{hoge1::1, hoge2::two, hoge3::3.0, hoge4::<<"4">>}; password() :: ubfstring(); file() :: ubfstring(); noSuchFile() :: {error, noSuchFile}; doubleInt() :: [integer()]; upCase() :: ubfstring(); logon() :: {logon, password()}; ls() :: ls; files() :: {files, [ubfstring()]} "request a list of file"; callback() :: {callback, none()}; getFile() :: {get, file()}; okFile() :: {ok, binary()}; stop() :: stop; yes() :: yes; ack() :: ack; error() :: error; ok() :: ok; intList() :: [integer()]; propList() :: ubfproplist(); testAmbiguities() :: testAmbiguities; foo() :: #foo{attribute1::term()}; callbackOnItsWay() :: callbackOnItsWay. +STATE start logon() => ok() & active | error() & stop. +STATE active ls() => files() & active; callback() => callbackOnItsWay() & active; getFile() => okFile() & active | noSuchFile() & stop; stop() => none() & stop; testAmbiguities() => yes() & funny; EVENT => callback(); EVENT <= callback(). +STATE funny ubfstring() => upCase() & funny; intList() => doubleInt() & funny; propList() => propList() & funny; stop() => ack() & start. +ANYSTATE dummy() => dummy(); dummy1a() => dummy1a(); dummy1b() => dummy1b(); dummy3a() => dummy3a(); dummy3b() => dummy3b(); dummy4() => dummy4(); dummy5() => dummy5(); foo() => term(); info() => ubfstring(); description() => ubfstring(); services() => serviceList(); contract() => term().