0.52
Released April 16., 2009The primary focus of this release is the way SeqZap integrates with ZapTools, and expansion of the data types supported by SeqZap. Of course we also found time to add a new tool and fix several bugs.
Array Data
One of the most often requested features missing in SeqZap is support for arrays. Although SeqZap is not a general purpose programming environment you still encounter situations where using an array is a great way to accomplish a particular task.
The new array support in SeqZap can be used with all the existing SeqZap types so you can make arrays of integers, strings, enums and so on. This means that you can use array types wherever normal types are used, for instance as parameters to a procedure.
Invocation Data
One of the things that we take very seriously is how SeqZap's interface to the rest of the world looks like. This is the interface you use when you extend SeqZap by writing your own tools, or when you modify one of the existing ones.
In release 0.52 we have changed the interface quite dramatically, this means that much of the tedious and error prone parts of writing ZapTools are now removed.
To give you an example of the simplifications involved, please consider the following example of pre 0.52 invocation data (invocation data is the data passed to ZapTool methods):
Old version:
namespace SeleniumTool.Data
{
public class DataEnsureTextVisible : StepDataSimpleBase
{
[Field( VariableType.String, DefaultValue = "" )]
[ParameterInfo( "text" )]
[AllowedReferenceTypes( ValueReferenceTypeChoises.Constant | ValueReferenceTypeChoises.Parameter )]
public ValueReference Text;
[Field( VariableType.Bool, DefaultValue = true )]
[ParameterInfo( "failIfNotFound" )]
[AllowedReferenceTypes( ValueReferenceTypeChoises.Constant | ValueReferenceTypeChoises.Parameter )]
public ValueReference FailIfNotFound;
[Field( VariableType.Bool )]
[ParameterInfo( "textFound", ParameterPropertyFlags.Return )]
[AllowedReferenceTypes( ValueReferenceTypeChoises.Parameter )]
public ValueReference TextFound;
public DataEnsureTextVisible()
: base( 0 )
{
Text = ValueReference.CreateAsConstant();
Text.Data = "";
FailIfNotFound = ValueReference.CreateAsConstant();
FailIfNotFound.Data = true;
TextFound = ValueReference.CreateAsParameter();
Initialize();
}
public DataEnsureTextVisible( DataEnsureTextVisible _rhs )
: base( 0 )
{
Text = _rhs.Text.Clone();
FailIfNotFound = _rhs.FailIfNotFound.Clone();
TextFound = _rhs.TextFound.Clone();
Initialize();
}
protected override StepDataSimpleBase MakeClone()
{
return new DataEnsureTextVisible( this );
}
}
}
As you can see much of this code is just copy-paste code, the constructors are just initialising/cloning the fields. This led us to the realisation that all of the code above could be reduced to a simple listing of the defined fields, SeqZap can then deal with providing saving/loading/cloning/notification and all the other tedious work.
The new version of the data defined above is the following:
New version:
namespace SeleniumTool.Data
{
public class DataEnsureTextVisible : StandardData
{
public Field<string> Text = new Field<string>();
[Field( DefaultValue = true )]
public Field<bool> FailIfNotFound = new Field<bool>();
public ReturnParameter<bool> TextFound = new ReturnParameter<bool>();
}
}
We are sure that you will agree that the latter example is much simpler, actually it is so simple that we now recommend moving the definition of invocation data inside the class defining the method that use the data. This makes finding the data related to a given method easier and also keeps the number of files needed to implement a method at a minimum.
Digital IO
In our ever growing arsenal of standard tools we have now added support for digital IO devices. So far we support National Instruments and BMC MessSysteme devices out of the box, but new devices are easy to add by writing a thin plug-in.
We do not intend for SeqZap to involve into a low-level programming interface for generating digital signals, since digital IO are often needed in system testing.
A tool for interfacing with Analog IO is logically also on the drawing board and should be ready around the time of our next release.
Bugfixes/improvements
| #364 | Unit and description in measurements are copied verbatim to ExecutionCode. |
|---|---|
| #371 | Ensure test report is always created / finished - even if the execution is stopped by the user. |
| #392 | Parameter assignments are lost when tool is changing number of parameters. |
| #590 | When adding a workbench tool without filling in the name the workbench tool is not created. |
| #591 | Report errors when trying to create a workbench tool, but the CreateInstance is not implemented. |
| #593 | Allow null as input parameter for Workbench ZapTools. |
| #597 | NullReferenceException thrown in EventManager when running minesweeper demo through console. |
| #598 | Remove errors and warnings from their view immediately after an action has been run. |
| #629 | Loop with a Continue step creates overflows Execution State. |
| #630 | Right clicking a line in the Active Tools view does not select the line. |
| #651 | The seqzap.com and sequanto.com links in the about box does not work. |
| #652 | The measurement value expression editor in the measurement step setup dialog should be marked as "single line". |
| #653 | Workbench parameter assignment expression editor does not show other workbench items as possible completions. |
| #655 | When opening parameter editor the new expression editor does not have focus. |
| #658 | Progress Overview does not use already shown list when running execution. |
| #668 | Enter should close the parameter editing dialog. |
| #676 | Remove runtimeStepData paremeter on IZapToolMethod.Invoke method. |
| #678 | It's not possible to paste on empty line at the end of procedure. |
| #697 | Expect step setup page's expression editor does not auto-complete local variable names. |
Contents
Older releases

