ycl

Artifact [09dea88692]
Login

Artifact [09dea88692]

Artifact 09dea88692828cf89a4cc6d1e7b9eaba3ac3f0eb:


#! /bin/env tclsh

package require csv

package require ycl::feeder::linefeeder
variable linefeeder [yclprefix]::feeder::linefeeder
package require ycl::yparse
variable yparse [yclprefix]::yparse
package require ycl::yparse::parser
variable yparser [yclprefix]::yparse::parser
package require ycl::yparse::parser::UsaaStatement
variable UsaaStatement [yclprefix]::yparse::parser::UsaaStatement
package require ycl::convert::usaa
variable usaa2csv [yclprefix]::convert::usaa::usaa2csv
package require ycl::test

proc suite1 {} {
	variable linefeeder
	variable yparse
	variable yparser
	variable test1_out
	variable usaa2csv
	variable UsaaStatement
	test first {} -body {
		set fh [open \
			[file join [file dirname [info script]] UsaaStatement1.data]]
		set parsers [dict create]
		namespace eval test1 {
			upvar usaa2csv usaa2csv 
			proc process args {
				variable fields
				variable results
				variable usaa2csv
				dict with args {}
				if [info exists done] {
					variable done 1
				}
				lappend results {*}[$usaa2csv fields $fields input $input]
			}
			variable done 0
			variable results [list]
			set fields {date reference amount description}
			lappend results [::csv::join $fields]
		}
		set parser1 [${yparser}::new start start states \
			${yparser}::UsaaStatement callbacks \
				[list [namespace current]::test1::process]]
		dict set parsers $parser1 [dict create]

		#todo: shouldn't this be $yobj::object rather than ${yparse}::new?
		set parseit [${yparse}::new $parsers]
		set feeder [${linefeeder}::new $fh $parseit]
		$feeder configure infilter ${UsaaStatement}::infilter
		set ::results [list]
		$feeder go
		vwait [namespace current]::test1::done
		return $test1::results 
	} -result $test1_out
}

proc go {} {
	ycl::test::init
	suite1
	cleanupTests
}

variable test1_out {date,reference,amount,description {2010-01-09,,12100.00,LOC TRANSFER-USAA.COM} {2010-01-10,,0.25,ACH CREDIT 042420 TD AMERITRADE ACH MICRO * * * * * * * * * * * D B B D} {2010-04-16,,0.16,ACH CREDIT 042310 BLOOMFIELD CORP ACH MICRO * * * * * * * * * * * D B B D} {2010-01-12,,1100.00,ACH CREDIT 021211 BFJ HOME CLOUD PMT REFUND * * * * * * * * * * * 2 1 3 2} {2010-01-17,,3200.00,OD CC ADVANCE} {2010-01-19,,0.22,INTEREST PAID} 2010-01-22,211,-7000.00, 2010-01-20,313*,-4000.00, 2010-01-23,214,-153.70, 2010-01-17,198213*,-1232.37, {2010-12-29,,-500.00,USAA FUNDS TRANSFER DB} {2010-01-25,,-5250.00,ACH DEBIT 022470 USAA.COM PAYMNT CREDIT CRD * * * * * * * * * * * 1 7 1 4} {2010-01-29,,-9000.00,ACH PAYMENT 053213 USAA.COM PAYMNT LOAN ***********3848} {2010-01-01,,-1000.00,USAA FUNDS TRANSFER DB} {2010-01-05,,-40.00,PHOTOCOPY/RESEARCH FEE} {2010-01-13,,-200.00,USAA FUNDS TRANSFER DB} {2010-01-11,,-700.00,USAA FUNDS TRANSFER DB} {2010-01-19,,-1300.00,ACH DEBIT 021310 H MOTFIELD ONLINE PMT * * * * * * * * * * * 7 P O S} {2010-01-22,,-0.17,ACH DEBIT 041570 WILSON ACCUPOINT ACH RECAPT * * * * * * * * * * * D A T P}}