File:  [parser3project] / parser3 / tests / 440.html
Revision 1.2: download - view: text, annotated - select for diffs - revision graph
Wed Dec 11 15:47:31 2024 UTC (18 months, 3 weeks ago) by moko
Branches: MAIN
CVS tags: release_3_5_1, release_3_5_0, HEAD
test for row is checked before accessing when table is modified during select (related to bug #1258)

@main[]

$t[^table::create{value1	value2
v11	v12
v21	v22	v23
v31	v32
v41	v42
}]

----------------------- table array tests

^json:string[^t.array[]]
^json:string[^t.array[value2]]
^json:string[^t.array{ $h[ $.v[$t.value1]] $h }]
^json:string[^t.array{$t.value1 - $t.value2}]

----------------------- table offset tests

^t.offset(1)
1. before: ^t.offset[]
^try{
	^t.menu{
		^if($t.value1 eq 'v21'){
			^throw[;exception]
		}
	}
}{
	$exception.handled(1)
}
1. after: ^t.offset[]

^t.offset(2)
2. before: ^t.offset[]

^t.menu{
	^t.delete[]
	^t.delete[]
	^break[]
}

2. after offset: ^t.offset[]
2. after count: ^t.count[]

----------------------- table select robust tests
$t[^table::create{value
^for[i](0;9){v$i
}}]

3. ^json:string[$t; $.table[compact] ]

4. ^json:string[^t.select(^test_insert[$t]); $.table[compact] ]

5. ^json:string[$t; $.table[compact] ]

6. ^json:string[^t.select(^test_delete[$t]); $.table[compact] ]

7. ^json:string[$t; $.table[compact] ]

$t1[^table::create[$t]]
^t1.offset(4) $t1.value[n0]

8. ^json:string[^t1.select(^test_delete[$t1])[ $.reverse(1) ]; $.table[compact] ]

9. ^json:string[$t1; $.table[compact] ]


----------------------- table hash robust tests

10. ^json:string[^t.hash{^hash_insert[$t]}]

11. ^json:string[$t; $.table[compact] ]

12. ^json:string[^t.hash{^hash_delete[$t]}]

13. ^json:string[$t; $.table[compact] ]

14. after offset: ^t.offset[]


@test_insert[t]
$result(1)
^if($t.value eq 'v5'){
	^for[i](0;9){^t.insert[n^eval(9-$i)]}
}

@test_delete[t]
$result(1)
^if($t.value eq 'n0'){
	^for[i](0;9){^t.delete[]}
}

@hash_insert[t]
$result[$t.value - ^t.offset[]]
^if(^t.offset[] eq '5'){
	^for[i](0;9){^t.insert[n^eval(9-$i)]}
}

@hash_delete[t]
$result[$t.value]
^if($t.value eq 'n0'){
	^for[i](0;9){^t.delete[]}
}

E-mail: