module
	kind jsfile

	$ var SCHEMA = schema.wzId;
	$ var ROOTELEMENT = schema.rootElement.wzId;

    var util = require('util');
    var path = require('path');
	+
	var wizzi = require('wizzi-core').wizzi
	+
	var stringify = require('json-stringify-safe')
    var file = wizzi.file
    var ittf = wizzi.ittf
	$if request.toPrettify
		var HtmlBuilder = wizzi.HtmlBuilder
	$if request.toXml
		var XMLWriter = require('xml-writer')
    var ${SCHEMA}WizziModel = require('../../models/${SCHEMA}-model.g');
            
    var ittfContext
		{
			@ s1 'alpha'
			@ s2 'beta'
			@ a1 ['gamma 1', 'gamma 2', 'gamma 3']
			@ a2 ['omega 10', 'omega 20', 'omega 30']
            
    var filepath = path.join(__dirname, 'ittf', 'test.${SCHEMA}.ittf');

	_ ittf.loadModel
		@ filepath
		@ ittfContext
		function
			param err
			param ittfModel
			if err
				throw new Error(err)
			
			var rootNode = ittfModel.nodes[0]
			
			var ${ROOTELEMENT}modelType = ${SCHEMA}WizziModel[rootNode.n];
			if !${ROOTELEMENT}modelType
				var maptag = ${SCHEMA}WizziModel.__tagElementMapping[rootNode.n]
				if typeof maptag === 'string'
					set ${ROOTELEMENT}modelType = ${SCHEMA}WizziModel[maptag]
				if !${ROOTELEMENT}modelType
					throw new Error('Cannot map root node ' + rootNode.n + ' to any entity of schema + ${SCHEMA}, filepath: ' + filepath);
    
			var ${ROOTELEMENT}model = new ${ROOTELEMENT}modelType(rootNode.v);
			set ${ROOTELEMENT}model.loadHistory = ittfModel.loadHistory

			try
				_ ${ROOTELEMENT}model.loadFromNode(rootNode)
			catch ex
				throw new Error('Error loading wmt model for ${schema.wzId} model ' + filepath + '.\n' + ex.message + '\n' + ex.stack)

			var ctx = new ${SCHEMA}WizziModel.${SCHEMA}Context();
			_ ${ROOTELEMENT}model.wzInitialize(ctx);
			_ ${ROOTELEMENT}model.wzVerify(ctx);

			var filepathdump = path.join(__dirname, 'ittf', 'test.${SCHEMA}.ittf.dump.json')
			var filepathdumpxml = path.join(__dirname, 'ittf', 'test.${SCHEMA}.ittf.dump.xml')
			var filepathdumpprettify = path.join(__dirname, 'ittf', 'test.${SCHEMA}.ittf.dump.prettify.html')
			if ${ROOTELEMENT}model.toJson
				# Export to json for test
				# console.log('${ROOTELEMENT}model.toJson', util.inspect(${ROOTELEMENT}model.toJson(), { depth: null }));
				_ file.write
					@ filepathdump
					_ stringify
								@ ${ROOTELEMENT}model.toJson()
								@ null
								@ 2
			else
				# Dump moduel using json-stringify-safe
				_ file.write
					@ filepathdump
					_ stringify
						@ ${ROOTELEMENT}model
						@ null
						@ 2
			
			$if request.toXml
				if ${ROOTELEMENT}model.toXml
					# Export to xml for test
					var xw = new XMLWriter(2)
					_ ${ROOTELEMENT}model.toXml(xw)
					_ file.write
						@ filepathdumpxml
						_ xw.toString()

			$if request.toPrettify
				if ${ROOTELEMENT}model.toPrettify
					# Export to prettify for test
					var ctx
						{
							@ hb new HtmlBuilder()
					_ ${ROOTELEMENT}model.toPrettify(ctx)
					_ file.write
						@ filepathdumpprettify
						_ ctx.hb.toText()


