ycl

Artifact [ed73d8cf78]
Login

Artifact [ed73d8cf78]

Artifact ed73d8cf78f18bd1d872320fd58d5655f23a98c8:


#! /bin/env tclsh

proc suite_main {} {
	package require {ycl proc}
	[yclprefix] proc alias alias [yclprefix] proc alias
	alias aliases [yclprefix] proc aliases

	aliases {
		{ycl ns local} {
			rename
		}
	}

	package require {ycl test}
	[yclprefix] test init
	rename test {}

	aliases {
		{ycl list} {
			join
			sl
		}
		{ycl test} {
			test
			cleanup1
		}
	}

	lappend setup1 [list set auto_path $::auto_path]
	lappend setup1 {
		package require {ycl proc}
		[yclprefix] proc alias alias [yclprefix] proc alias
		alias aliases [yclprefix] proc aliases

		package require {ycl test data}
		aliases {
			{ycl ns} {
				nsjoin join
			}
		}
		alias [nsjoin [yclprefix] test data]
		package require {ycl dict}
		alias ydict [nsjoin [yclprefix] dict]
	}

	join setup1 \n

	lappend setup2 $setup1
	lappend setup2 {
		set d1 [data languages]
	}
	join setup2 \n


	test append {} -setup $setup1 -body {
		ydict append dict {one {two three}} üks
		ydict append dict {one {two three}} {kaks kolm} 
		lappend res [dict get $dict one {two three}]
	} -cleanup [cleanup1] -result [sl {
		{ükskaks kolm}
	}]


	test append_path {} -setup $setup2 -body {
		ydict append d1 {languages German} üks kaks
		ydict append d1 {languages German} {kolm neli} viis
		ydict append d1 German {kolm neli} 
		ydict get res1 d1 languages German
		lappend res $res1 
		return $res
	} -cleanup [cleanup1] -result [sl {
		{ükskakskolm neliviis}
	}]


	test keys {} -setup $setup1 -body {
		set dict [data languages] 
		ydict keys keys dict languages
		lappend res $keys
		return $res
	} -cleanup [cleanup1] -result [sl {
		{English Estonian}
	}]


	test lappend {} -setup $setup1 -body {
		set dict [data languages] 
		ydict lappend dict {languages English countries x y} Morocco hello
		lappend res [dict get $dict languages English countries x y Morocco]
	} -cleanup [cleanup1] -result [sl {
		hello
	}]



	test merge {} -setup $setup1 -body {
		set dict [data languages] 
		ydict merge {dict languages} {English {countries Wales}} {German {countries Austria}}
		set languages [dict get $dict languages]
		lappend res [dict keys $languages]

		ydict get res1 dict languages English countries
		lappend res $res1
		return $res
	} -cleanup [cleanup1] -result [sl {
		{English Estonian German}
		Wales
	}]


	test remove {} -setup $setup1 -body {
		set dict [data languages] 
		ydict get languages dict languages 
		ydict remove languages Estonian
		ydict keys var1 languages
		lappend res $var1
		return $res
	} -cleanup [cleanup1] -result [sl {
		English
	}]


	test request {basic test of request} -setup $setup1 -body {
		set res [list]
		set dict {one uno two dos three tres}
		lappend res [ydict request $dict {res2 quatro} four]
		lappend res $res2
		ydict request $dict res2 two
		lappend res $res2
		lappend res [ydict request $dict res2 three]
		set res2 cinco
		ydict request $dict res2 five
		lappend res $res2
	} -cleanup [cleanup1] -result [sl {
		quatro quatro dos tres cinco
	}]


	test setl {} -setup $setup1 -body {
		set dict {a 1 b 1 a 2 b 2 c 1 c 2} 
		ydict setl dict c 3
	} -cleanup [cleanup1] -result [sl {
		a 1 b 1 a 2 b 2 c 3
	}]

	test setl_noexist {} -setup $setup1 -body {
		ydict setl dict c 3
	} -cleanup [cleanup1] -result [sl {
		c 3
	}]


	test setl_recursive {} -setup $setup1 -body {
		set dict {a 1 b 1 a 2 b {d 1 d 2 e 1 e 2} c 1 c 2} 
		ydict setl dict b d 3
	} -cleanup [cleanup1] -result [sl {
		a 1 a 2 b {d 3 e 1 e 2} c 1 c 2
	}]


	test var {} -setup $setup1 -body {
		set dict {a 1 b {c 3 d {e 5 f 6 g 7}}}
		ydict var v1 dict b d e
		set v1 7
		ydict var v2 dict b d g
		lappend res [dict exists $dict b d g]
		unset v2
		lappend res [dict exists $dict b d g]
		ydict hvar v3 dict b d g
		lappend res $v3
		unset v3
		lappend res [dict exists $dict b d g]
		lappend res $dict
		return $res
	} -cleanup [cleanup1] -result [sl {
		1 1 7 0
		{a 1 b {c 3 d {e 7 f 6}}}
	}]


	test unsetl {} -setup $setup1 -body {
		set dict {a 1 b 1 a 2 b {d 1 d 2 e 1 e 2} c 1 c 2} 
		ydict unsetl dict a
		return $dict
	} -cleanup [cleanup1] -result [sl {
		b 1 b {d 1 d 2 e 1 e 2} c 1 c 2
	}]


	cleanupTests
}