Hi Erol,

For those who might not be familiar with Jacl:
Jacl is a 100% Java implementation of a subset of Tcl.
Tcl is a scripting language.

We use Jacl to write unit tests.  The combination of using
Jacl to create Unit tests and using models to create system tests
is very powerful.  Jacl can be used to easily test boundary and 
error conditions.

Information about the test harness can be found at
http://ptolemy.eecs.berkeley.edu/ptolemyII/ptIIlatest/ptII/doc/coding/testing.htm

A copy of the Jacl manual page is at
http://ptolemy.eecs.berkeley.edu/ptolemyII/ptIIlatest/ptII/doc/coding/tcljava.htm

The version of jacl we ship with Ptolemy is a little different
than the Jacl version elsewhere.  I've fixed a few bugs and made
some minor enhancements.

$PTII/util/testsuite/models.tcl includes some tcl procs that
create models.  
For example:

proc sdfModel {{iters 1}} {
    set e0 [java::new ptolemy.actor.TypedCompositeActor]
    createBasicModelErrorHandler $e0
    set manager [java::new ptolemy.actor.Manager]
    set director [java::new ptolemy.domains.sdf.kernel.SDFDirector]
    $e0 setDirector $director
    $e0 setName top
    $e0 setManager $manager

    set iterparam [getParameter $director iterations]
    $iterparam setToken [java::new ptolemy.data.IntToken $iters];

    return $e0
}


Then 
$PTII/ptolemy/domains/sdf/lib/test/Repeat.tcl
uses the test Tcl proc to create a test.
The test proc has four args
test Name {comment} {
  body
} {expected results}

The return value of the last command in the body
is compared with the expected results.

In the test below, we create a TypedCompositeActor
and add a Repeat actor to it:

######################################################################
####
#
test Repeat-1.1 {test constructor and clone} {
    set e0 [java::new ptolemy.actor.TypedCompositeActor]
    set repeatbase [java::new ptolemy.domains.sdf.lib.Repeat $e0 repeat]
    set repeat [java::cast ptolemy.domains.sdf.lib.Repeat \
                    [$repeatbase clone [$e0 workspace]]]
    # Success here is just not throwing an exception.
    list {}
} {{}}


Here, we create a model, add the actor created in the
above test, clone it so that we test clone (not necessary
for just running a model) and run it:

######################################################################
#### Test Repeat in an SDF model
#
test Repeat-2.1 {test with the default output values} {
    set e0 [sdfModel 2]
    set ramp [java::new ptolemy.actor.lib.Ramp $e0 ramp]
    set init [getParameter $ramp init]
    set step [getParameter $ramp step]
    $init setExpression {0.0}
    $step setExpression {1.0}

    # Use clone of repeat to make sure that is ok.
    set clone [java::cast ptolemy.domains.sdf.lib.SDFTransformer \
                   [$repeat clone [$e0 workspace]]]
    $repeat {setContainer ptolemy.kernel.CompositeEntity} [java::null]
    $clone setName clone
    $clone {setContainer ptolemy.kernel.CompositeEntity} $e0

    set blocksize [getParameter $clone blockSize]
    $blocksize setExpression { 3 }

    set rec [java::new ptolemy.actor.lib.Recorder $e0 rec]
    $e0 connect \
       [java::field [java::cast ptolemy.actor.lib.Source $ramp] output] \
       [java::field [java::cast ptolemy.domains.sdf.lib.SDFTransformer $clone] 
input]
    $e0 connect \
       [java::field \
       [java::cast ptolemy.domains.sdf.lib.SDFTransformer $clone] output] \
       [java::field [java::cast ptolemy.actor.lib.Sink $rec] input]
    [$e0 getManager] execute
    ptclose [enumToTokenValues [$rec getRecord 0]] \
            {0.0 1.0 2.0 0.0 1.0 2.0 3.0 4.0 5.0 3.0 4.0 5.0} \
            0.001
} {1}


You can also create models with Java, see
$PTII/ptolemy/domains/sdf/demo/Butterfly/Butterfly.java

_Christopher

--------

    Hi,
    
    I would like to see some models that was created by
    JACL.
    Could you point me into some in either ptolemy package
    or somewhere else?
    
    Best Regards
    
    Thanks
    
    Erol Akarsu
    
    __________________________________________________
    Do You Yahoo!?
    Tired of spam?  Yahoo! Mail has the best spam protection around 
    http://mail.yahoo.com 
    
    ---------------------------------------------------------------------------
   -
    Posted to the ptolemy-hackers mailing list.  Please send administrative
    mail for this list to: [EMAIL PROTECTED]
--------

----------------------------------------------------------------------------
Posted to the ptolemy-hackers mailing list.  Please send administrative
mail for this list to: [EMAIL PROTECTED]

Reply via email to