mirror of
https://github.com/ubf/ubf.git
synced 2026-04-16 17:55:48 +00:00
102 lines
3.5 KiB
Erlang
102 lines
3.5 KiB
Erlang
%%% -*- mode: erlang -*-
|
|
|
|
%%% The MIT License
|
|
%%%
|
|
%%% Copyright (C) 2011-2016 by Joseph Wayne Norton <norton@alum.mit.edu>
|
|
%%% 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().
|