sverweij/mscgen_js

View on GitHub
src/samples/test01_all_possible_arcs.xu

Summary

Maintainability
Test Coverage
# test01: all possible arcs
msc {
  hscale="0.6", arcgradient="18", wordwraparcs="false", 
  watermark="This humongous fictive chart contains all arcs possible in xù. It can be used for spot checks and for performance evaluations.";

  0 [arclinecolor="transparent", arctextcolor="grey", linecolor="white", textcolor="white"],
  a, b, c, d, e, f, g, h, i, j, k;

  a -- b [label="left to right", linecolor="transparent", textcolor="grey"],
  b -- c [label="right to left", linecolor="transparent", textcolor="grey"],
  c -- d [label="left to right\nbi-directional\n\n", linecolor="transparent", textcolor="grey"],
  d -- e [label="right to left\nbi-directional\n\n", linecolor="transparent", textcolor="grey"],
  e -- f [label="left to right\nnon-directional\n\n", linecolor="transparent", textcolor="grey"],
  f -- g [label="left to right\nnon-directional\n\n", linecolor="transparent", textcolor="grey"],

  g -- h [label="left to right\nself reference\n\n", linecolor="transparent", textcolor="grey"],
  h -- i [label="right to left\nself reference\n\n", linecolor="transparent", textcolor="grey"],
  i -- j [label="bi-directional\nself reference\n\n", linecolor="transparent", textcolor="grey"],

  j -- k [label="non-directional\nself reference\n\n", linecolor="transparent", textcolor="grey"];
  
  0 -- a [label="signal"],
  a -> b [label="a -> b"],
  b <- c [label="b <- c"],
  c <-> d [label="c <-> d"],
  e <-> d [label="e <-> d"],
  e -- f [label="e -- f"],
  g -- f [label="g -- f"],
  g -> g [label="g -> g"],
  h <- h [label="h <- h"],
  i <-> i [label="i <-> i"],
  j -- j [label="j -- j"];
  
  0 -- a [label="method"],
  a => b [label="a => b"],
  b <= c [label="b <= c"],
  c <=> d [label="c <=> d"],
  e <=> d [label="e <=> d"],
  e == f [label="e == f"],
  g == f [label="g == f"],
  g => g [label="g => g"],
  h <= h [label="h <= h"],
  i <=> i [label="i <=> i"],
  j == j [label="j == j"];

  0 -- a [label="return"],
  a >> b [label="a >> b"],
  b << c [label="b << c"],
  c <<>> d [label="c <<>> d"],
  e <<>> d [label="e <<>> d"],
  e .. f [label="e .. f"],
  g .. f [label="g .. g"],
  g >> g [label="g >> g"],
  h << h [label="h << h"],
  i <<>> i [label="i <<>> i"],
  j .. j [label="j .. j"];
  
  0 -- a [label="callback"],
  a =>> b [label="a =>> b"],
  b <<= c [label="b <<= c"],
  c <<=>> d [label="c <<=>> d"],
  e <<=>> d [label="e <<=>> d"],
  g =>> g [label="g =>> g"],
  h <<= h [label="g <<= g"],
  i <<=>> i [label="i <<=>>i "];
  
  0 -- a [label="lost"],
  a -x b [label="a -x b"],
  b x- c [label="b x- c"],
  g -x g [label="g -x g"],
  h x- h [label="h x- h"];
  
  0 -- a [label="emphasised"],
  a :> b [label="a :> b"],
  b <: c [label="b <: c"],
  c <:> d [label="c <:> d"],
  e <:> d [label="e <:> d"],
  e :: f [label="e :: f"],
  g :: f [label="g :: f"],
  g :> g [label="g :> g"],
  h <: h [label="h <: h"],
  i <:> i [label="i <:> i"],
  j :: j [label="j :: j"];
  
  0 -- a [label="note"],
  b note c [label="b note c"],
  e note d [label="e note d"],
  g note g [label="g note g"];
  
  0 -- a [label="box"],
  b box c [label="b box c"],
  e box d [label="e box d"],
  g box g [label="g box g"];
  
  0 -- a [label="rbox"],
  b rbox c [label="b rbox c"],
  e rbox d [label="e rbox d"],
  g rbox g [label="g rbox g"];
  
  0 -- a [label="abox"],
  b abox c [label="b abox c"],
  e abox d [label="e abox d"],
  g abox g [label="g abox g"];
  
  
  0 -- a [label="empty row"],
  ||| [label="|||"];
  
  ... [label="...\n(omitted row)"];
  
  0 -- a [label="comment"],
  --- [label="---"];
  
  0 -- a  [label="broadcasts"];
  a -> *      [label="a -> *"];
  * <- c      [label="* <- c"];
  b <-> "*"   [label="b <-> *"];
  d => *      [label="d => *"];
  * <= e      [label="* <= e"];
  d <=> "*"   [label="d <=> *"];
  f >> *      [label="f >> *"];
  * << g      [label="* << g"];
  f <<>> "*"  [label="f <<>> *"];
  h =>> *     [label="h =>> *"];
  * <<= i     [label="* <<= i"];
  h <<=>> "*" [label="h <<=>> *"];
  j -x *      [label="j -x *"];
  * x- k      [label="* x- k"];
  a :> *      [label="a :> *"];
  * <: c      [label="* <: c"];
  b <:> "*"   [label="b <:> *"];

# not supported by mscgen (and not by xù either):
#  "*" <-> b, "*" <=> e, "*" <<>> g, "*" <<=>> i, "*" <:> b
#
  ---;
  0 -- a [label="inline\nexpressions"];
 
  b alt k [label="b alt k"] {
    c else j [label="c else j"] {
      d opt i [label="d opt i"] {
        e break h [label="e break k"] {
          f critical g [label="f critical g"] {
            ---;
          };
        };
      };
    };
  };
  b neg k [label="b neg k"] {
    b strict j [label="b strict j"] {
      b seq i [label="b seq i"] {
        b assert h [label="b assert h"] {
          b exc g [label="b exc g"] {
            ---;
          };
        };
      };
    };
  };
  b ref k [label="b ref k"] {
    c consider k [label="c consider k"] {
      k ignore d [label="k ignore d"] {
        e loop k  [label="e loop k"]{
          k par f [label="k par f"] {
            ---;
          };
        };
      };
    };
  };


  ||| [label="options used: hscale=\"0.6\", arcgradient=\"18\""];
}

/*
    This file is part of mscgen_js.

    mscgen_js is free software: you can redistribute ift and/or
    modify it under the terms of the GNU General Public License as
    published by the Free Software Foundation, either version 3 of
    the License, or (at your option) any later version.

    mscgen_js is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public
    License along with mscgen_js. If not, see 
    <http://www.gnu.org/licenses/>.
*/