Skip to content

Add Unit and Functional Tests #34

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Feb 13, 2019
Merged

Add Unit and Functional Tests #34

merged 3 commits into from
Feb 13, 2019

Conversation

abmusse
Copy link
Member

@abmusse abmusse commented Feb 12, 2019

Changes made in these commits (git log):

Update package.json

- moved idb-connector to optional deps
- added idb-pconnector to optional deps
- added sinon - for (mocking/stubs) to dev deps

Fixed some issues found during unit testing

ixml.js
- line 293 changed const to let ran into reassignment error with const

- changed iXmlNodeSqlParmOpen set io attribute, incorrectly set name attribute before

xmlToJson
- When converting <sql> xmlOut stmt: property would return ']]>' from CDATA output

- Example: "stmt":"SELECT '' AS BLANK, STATE FROM QIWS.QCUSTCDT]]>"

- Not sure if every version of XMLSERVICE adds CDATA to returned statement.

- Added a check to see if the matched success string contains CDATA and replaced extra characters.

iConn.setTimeout()
- could not be set, if condition checked flag instead of seconds

iSql.rowCount()
- added check to allow optional options object

iSql.count()
- called iXmlNodeSqlRowCount instead of iXmlNodeSqlCount

iProd.getProductInfo
- Fixed issue that occured when calling with (productId, cb) signature

- the callback function definition was being appended to the options
  causing the pgm call to fail

Added unit and functional tests

Unit Tests added for
 - iSh, iQsh, iCmd function (commandsUnit.js)
 - iConn methods, stubbed out run method
 - iPgm methods
 - iSql methods
 - xmlToJson function

Functional tests added for
 - iDataQueue Class methods
 - iNetwork Class methods
 - iObj methods
 - iPgm methods
 - iProd methods
 - iSql methods
 - iUserSpace methods
 - iWork methods

Removed test.js
- Moved functional tests from test.js to the appropriate class test

Added utils.js
- contains helper function return transports
- returns iConn objects intialized to transports
- used to dynamically generate functional tests that only differ by iConn object used for transport

Added test/README.md
- provides instructions to setup and run tests
- lists available environment variables to configure tests

Adding functional and unit tests to version 0.1.6 to serve as a common base for future tests.

As we continue to make changes to reach v1.0 we can pull in and build on the tests started here and confirm we are keeping compatibility with this version.

Along the way found some issues some I was able to workaround and resolve (listed below)

Others are still present in the test suit and skipped for now.

For example, when using rest transport on getInstalledProducts test case in iProdFunctional.js it fails with Server response code 414 URI Too Long.

My thought is that the XML input encoded within the URL GET request is too large causing the test to fail.

The xml input is rather large:

I will open an issue addressing this.

<?xml version='1.0'?>
<myscript>
	<pgm name='QSZSLTPR' lib='QSYS' error='fast'>
		<parm io='out'>
			<ds>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
				<data type='2h'></data>
				<data type='7A'></data>
				<data type='10A'></data>
				<data type='10A'></data>
				<data type='1A'></data>
				<data type='1A'></data>
				<data type='2A'></data>
				<data type='14A'></data>
				<data type='132A'></data>
			</ds>
		</parm>
		<parm>
			<ds>
				<data type='10i0'>197</data>
				<data type='10A'>*ALL</data>
				<data type='1A'>1</data>
				<data type='1A'>1</data>
				<data type='10A'>*ALL</data>
				<data type='10A'>*INSTLD</data>
				<data type='10i0'>197</data>
			</ds>
		</parm>
		<parm>
			<data type='8A'>PRDS0200</data>
		</parm>
		<parm>
			<ds>
				<data type='7A'></data>
				<data type='5A'></data>
				<data type='6A'></data>
			</ds>
		</parm>
		<parm io='out'>
			<ds>
				<data type='10i0'>0</data>
				<data type='10i0'>0</data>
				<data type='10i0'>0</data>
			</ds>
		</parm>
		<parm io='both'>
			<ds len='rec2'>
				<data type='10i0'>0</data>
				<data type='10i0' setlen='rec2'>0</data>
				<data type='7A'></data>
				<data type='1A'></data>
			</ds>
		</parm>
	</pgm>
</myscript

Unit Tests added for
 - iSh, iQsh, iCmd function (commandsUnit.js)
 - iConn methods, stubbed out run method
 - iPgm methods
 - iSql methods
 - xmlToJson function

Functional tests added for
 - iDataQueue Class methods
 - iNetwork Class methods
 - iObj methods
 - iPgm methods
 - iProd methods
 - iSql methods
 - iUserSpace methods
 - iWork methods

Removed test.js
- Moved functional tests from test.js to the appropriate class test

Added utils.js
- contains helper function return transports
- returns iConn objects intialized to transports
- used to dynamically generate functional tests that only differ by iConn object used for transport

Added test/README.md
- provides instructions to setup and run tests
- lists available environment variables to configure tests
ixml.js
- line 293 changed const to let ran into reassignment error with const

- changed iXmlNodeSqlParmOpen set io attribute, incorrectly set name attribute before

xmlToJson
- When converting <sql> xmlOut stmt: property would return ']]>' from CDATA output

- Example: "stmt":"SELECT '' AS BLANK, STATE FROM QIWS.QCUSTCDT]]>"

- Not sure if every version of XMLSERVICE adds CDATA to returned statement.

- Added a check to see if the matched success string contains CDATA and replaced extra characters.

iConn.setTimeout()
- could not be set, if condition checked flag instead of seconds

iSql.rowCount()
- added check to allow optional options object

iSql.count()
- called iXmlNodeSqlRowCount instead of iXmlNodeSqlCount

iProd.getProductInfo
- Fixed issue that occured when calling with (productId, cb) signature

- the callback function definition was being appended to the options
  causing the pgm call to fail
- moved idb-connector to optional deps
- added idb-pconnector to optional deps
- added sinon - for (mocking/stubs) to dev deps
@markdirish
Copy link
Contributor

Why does the ds in the first parm need to have the same pattern of data types repeated 197 times? This looks good, I have a few comments I will add in the morning after I download and try on the IBM i.

@abmusse
Copy link
Member Author

abmusse commented Feb 12, 2019

I added a README in the test directly that should help you get it setup.

Why does the ds in the first parm need to have the same pattern of data types repeated 197 times?

I asked myself the same question

in the code I noticed for loop that adds to outBuf, you guessed it 197 times

    const maxProd = 197;
    let outBuf = [];
    for(let i = 0; i < maxProd; i++) {
      outBuf.push(["", "7A"]); // [0]Product ID
      outBuf.push(["", "5A"]); // [1]Product option
      outBuf.push(["", "6A"]); // [2]Release level
      outBuf.push(["", "2h"]); // [3]Skip
      outBuf.push(["", "7A"]); // [4]Description text message ID
      outBuf.push(["", "10A"]); // [5]Description text object name
      outBuf.push(["", "10A"]); // [6]Description text library name
      outBuf.push(["", "1A"]); // [7]Installed flag
      outBuf.push(["", "1A"]); // [8]Supported flag
      outBuf.push(["", "2A"]); // [9]Registration type
      outBuf.push(["", "14A"]); // [10]Registration value
      outBuf.push(["", "132A"]); // [11]Description text
    }

@markdirish
Copy link
Contributor

My thoughts:

  • Should add a test script to the package.json so that I can run npm test and it fires off. I got it to work with "test": "mocha ./test/**/*.js" so that it ignored the RPG tests. EDIT: I now see the instructions to run npm test <directory>. I don't know if I have opinions one way or the other on whether npm test should run all the tests, but users might expect it and its what I've seen in other packages.

  • A lot of the functional tests are failing on two different systems I tried. Some of the errors appear to by timeout errors, and I see your instructions to change the timeout limit. Other errors are ECONNREFUSED for 127.0.0.1:80. Is there additional setup that is needed other than npm install and the running the tests? The results from the two systems are below:

image
image

I followed the instructions to set up the config and start up the HTTP server, set up my environment variables, but I'm not having any luck getting any more tests to pass.

  • I think a lot of the functional tests just check whether the structure of the return object matches what we think, but what about the data returned from the system? Is that more of an Itoolkit test? We talked about mocking data, which obviously would take a lot of effort. But right now, they do little more than just checking that the rtValue object is the same as we dictated it should in the functions. Maybe this will require more thought...

Once I can get all of the functional tests running, these tests will be super helpful for making sure our 1.0 changes don't break anything! Also, great job finding and fixing bugs exposed through the tests.

@kadler
Copy link
Member

kadler commented Feb 12, 2019

It repeats 197 times because that's the max amount of structs declared in the second parameter.

Of course, the better way is to use an array:

<ds dim="197">
    <data type='7A'></data>
    <data type='5A'></data>
    <data type='6A'></data>
    <data type='2h'></data>
    <data type='7A'></data>
    <data type='10A'></data>
    <data type='10A'></data>
    <data type='1A'></data>
    <data type='1A'></data>
    <data type='2A'></data>
    <data type='14A'></data>
    <data type='132A'></data>
</ds>

@abmusse
Copy link
Member Author

abmusse commented Feb 12, 2019

I think a lot of the functional tests just check whether the structure of the return object matches what we think, but what about the data returned from the system?

@markdirish
Agreed,

For the functional tests we could and should add more verification ensure the data returned from the object property is is as expected.

Although many properties return values based on dynamic values: dates, job numbers, users, etc that could vary each run. Which make it difficult to assert the value of the property in the test.

For these cases how do we ensure the value is appropriate?

For example

        net.getTCPIPAttr((output) => {
          expect(output).to.be.an('Object');
          expect(output).to.have.a.property('TCP/IPv4_stack_status');
          expect(output).to.have.a.property('How_long_active');
          expect(output).to.have.a.property('When_last_started_-_date');
          expect(output).to.have.a.property('When_last_started_-_time');
          expect(output).to.have.a.property('When_last_ended_-_date');
          expect(output).to.have.a.property('When_last_ended_-_time');
          expect(output).to.have.a.property('Who_last_started_-_job_name');
          expect(output).to.have.a.property('Who_last_started_-_job_user_name');
          expect(output).to.have.a.property('Who_last_started_-_job_number');
          expect(output).to.have.a.property('Who_last_started_-_internal_job_identifier');
          expect(output).to.have.a.property('Who_last_ended_-_job_name');
          expect(output).to.have.a.property('Who_last_ended_-_job_user_name');
          expect(output).to.have.a.property('Who_last_ended_-_job_number');
          expect(output).to.have.a.property('Who_last_ended_-_internal_job_identifier');
          expect(output).to.have.a.property('Offset_to_additional_information');
          expect(output).to.have.a.property('Length_of_additional_information');
          expect(output).to.have.a.property('Limited_mode');
          expect(output).to.have.a.property('Offset_to_list_of_Internet_addresses');
          expect(output).to.have.a.property('Number_of_Internet_addresses');
          expect(output).to.have.a.property('Entry_length_for_list_of_Internet_addresses');
          expect(output).to.have.a.property('DNS_protocol');
          expect(output).to.have.a.property('Retries');
          expect(output).to.have.a.property('Time_interval');
          expect(output).to.have.a.property('Search_order');
          expect(output).to.have.a.property('Initial_domain_name_server');
          expect(output).to.have.a.property('DNS_listening_port');
          expect(output).to.have.a.property('Host_name');
          expect(output).to.have.a.property('Domain_name');
          expect(output).to.have.a.property('Reserved');
          expect(output).to.have.a.property('Domain_search_list');
          done();
        });

Copy link
Contributor

@markdirish markdirish left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might have to talk about whether file-level or class-level constants should be UPPERCASE or just standard case (with eslint suggesting everything should be const).

Also my previous comment about maybe getting more robust tests of the return values, maybe something like a regex to check that at least the pattern of the return value matches something sane if we can't test the actual value.

Other issues are mostly fixed in our v1.0-dev branch, and are focused on style over actual substance.

Going to approve this, because then we can ask others to write tests for changes that they want to merge in.

@markdirish markdirish merged commit 3df623d into IBM:master Feb 13, 2019
This was referenced Feb 27, 2019
@abmusse abmusse deleted the addTests branch May 8, 2020 02:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants