xquery/XQuery__XQTSForExprWithoutTests.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 02 Jul 2018 08:46:01 +0200
changeset 305 bad21c4f64bf
parent 296 ea3dbc023c80
permissions -rw-r--r--
Tagged Smalltalk/X 8.0.0

"{ Package: 'stx:goodies/xmlsuite/xquery' }"

"{ NameSpace: XQuery }"

XQTSTestCase subclass:#XQTSForExprWithoutTests
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'XQuery-Tests-XQTS'
!


!XQTSForExprWithoutTests methodsFor:'tests'!

test_ForExpr001

    | query result |

    query := ' 
        (: Name: ForExpr001 :)
(: Description: For+Return - to iterate a constant sequence :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $a in ("test", "test1", "test2")
return $a




      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr001.txt')

!

test_ForExpr002

    | query result |

    query := ' 
        (: Name: ForExpr002 :)
(: Description: For+Return - error, undefined variable in "IN" Expr :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $folder in $folder/File 
return <file name="{$folder/File/FileName}"/>


      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_ForExpr003

    | query result |

    query := ' 
        (: Name: ForExpr003 :)
(: Description: For+Return - use predicate in "IN" Expr :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $f in $input-context/MyComputer/Drive4/Folder[@id="128"]
return <FolderName>{$f/@name}</FolderName>



      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr003.xml')

!

test_ForExpr004

    | query result |

    query := ' 
        (: Name: ForExpr004 :)
(: Description: For+Return - use more than one predicates in "IN" Expr :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $f in $input-context/MyComputer/Drive1/Folder[@creator="Mani"]/File[@creation_date="08/06/00"]
return  <file>{$f/../@creator}{$f/@creation_date}</file>



      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr004.xml')

!

test_ForExpr005

    | query result |

    query := ' 
        (: Name: ForExpr005 :)
(: Description: For+Return - use sequence(security/right) as the predicate :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $f in $input-context/MyComputer//File[@creation_date="08/06/00"]/SecurityObject/Denies/Deny[security/right]
 return $f

      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr005.xml')

!

test_ForExpr006

    | query result |

    query := ' 
        (: Name: ForExpr006 :)
(: Description: For+Return - 2 For will generate two iterations :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

<fragment-result>{
	for $folder in $input-context/MyComputer/Drive3/Folder
	   ,$file in $input-context/MyComputer/Drive3/Folder/File
	return 
	<Folder>{ $folder/@name, $folder/@id }<file>{ $file/@idref }{ data($file/@name) }</file>
	</Folder>
}</fragment-result>


      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr006.xml')

!

test_ForExpr007

    | query result |

    query := ' 
        (: Name: ForExpr007 :)
(: Description: For+Return - use special character in variable name :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $AaBbCc.-_Dd in $input-context/MyComputer/Drive1/Folder
return $AaBbCc.-_Dd/FolderName

      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr007.xml')

!

test_ForExpr008

    | query result |

    query := ' 
        (: Name: ForExpr008 :)
(: Description: For+Where+Return - use special characters in variable name :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $AaBbCc.-_Dd in $input-context/MyComputer/Drive1/Folder
where $AaBbCc.-_Dd/@creator = "Mani"
return $AaBbCc.-_Dd/FolderName

      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr008.xml')

!

test_ForExpr009

    | query result |

    query := ' 
        (: Name: ForExpr009 :)
(: Description: For+Return - error, use variable in it"s own declaration  :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $a in $a/*
return $a

      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_ForExpr010

    | query result |

    query := ' 
        (: Name: ForExpr010 :)
(: Description: FLWOR expression with multiple, interdependent variables :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $folder in $input-context//Folder
	for $file in $folder//File
return 
<File folder="{$folder/FolderName}">{string($file/FileName[1])}</File>

      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr010.xml')

!

test_ForExpr011

    | query result |

    query := ' 
        (: Name: ForExpr011 :)
(: Description: FLWOR expression with multiple, interdependent variables :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $folder in $input-context//Folder, $file in $folder//File
return 
<File folder="{$folder/FolderName}">{string($file/FileName[1])}</File>

      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr011.xml')

!

test_ForExpr012

    | query result |

    query := ' 
        (: Name: ForExpr012 :)
(: Description: Nested FLWOR expressions :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $fileName in 
	for $file in $input-context//Folder/File
	return $file/FileName
return string( $fileName )
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr012.txt')

!

test_ForExpr013

    | query result |
    self halt: 'should be fixed'.
    query := ' 
        (: Name: ForExpr013 :)
(: Description: Multiple variables based off the same input context :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $fileName in $input-context//File/FileName, 
        $folderName in $input-context//Folder/FolderName
return ($folderName, $fileName)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr013.xml')

    "Modified: / 30-12-2009 / 12:58:45 / Jan Kurs <kursj1@fel.cvut.cz>"
!

test_ForExpr014

    | query result |

    query := ' 
        (: Name: ForExpr014 :)
(: Description: Incorrect syntax for nested loop. Multiple return statements at the same level :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $fileName in $input-context//File/FileName
	for $folderName in $input-context//Folder/FolderName
	return $folderName
return $fileName
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_ForExpr015

    | query result |

    query := ' 
        (: Name: ForExpr015 :)
(: Description: Return expression contains nested for expression :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $folder in $input-context//Folder
return 
	for $file in $folder/File
	return string( $file/FileName[1] )
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr015.txt')

!

test_ForExpr016

    | query result |

    query := ' 
        (: Name: ForExpr016 :)
(: Description: Interate over nodes in document and constant sequence. Return value based on both :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $folder in $input-context//Folder, 
	$index in (1, 2, 3)
return $folder/File[$index]/FileName
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr016.xml')

!

test_ForExpr017

    | query result |

    query := ' 
        (: Name: ForExpr017 :)
(: Description: Multiple return statements from single for expression :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $folder in $input-context//Folder
return $folder
return $folder
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_ForExpr018

    | query result |

    query := ' 
        (: Name: ForExpr018 :)
(: Description: Multiple in statements for single variable binding :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $folder in in $input-context//Folder
return $folder

      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_ForExpr019

    | query result |

    query := ' 
        (: Name: ForExpr019 :)
(: Description: Multiple for statements for single variable binding :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for for $folder in $input-context//Folder
return $folder

      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_ForExpr020

    | query result |

    query := ' 
        (: Name: ForExpr020 :)
(: Description: Multiple variable bindings followed by a trailing , :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $folder in $input-context//Folder, 
	$file in $folder/File,
return $file/FileName

      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_ForExpr021

    | query result |

    query := ' 
        (: Name: ForExpr021 :)
(: Description: Test order of iteration between two variables in the same "for" statement :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $i in (1, 2), $j in (3, 4)
return ($i, $j)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr021.txt')

!

test_ForExpr022

    | query result |

    query := ' 
        (: Name: ForExpr022 :)
(: Description: FLWOR expressions with positional variable :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $file at $pos in ($input-context//Folder)[1]/File
return (string($file/FileName[1]), $pos)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr022.txt')

!

test_ForExpr023

    | query result |

    query := ' 
        (: Name: ForExpr023 :)
(: Description: Use positional variable in binding for new variable :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $file at $pos in ($input-context//Folder)[1]/File, $pos2 in $pos+1
return (string($file/FileName[1]), $pos, $pos2)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr023.txt')

!

test_ForExpr024

    | query result |

    query := ' 
        (: Name: ForExpr024 :)
(: Description: Reuse existing variable name for positional variable :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $file at $file in ($input-context//Folder)[1]/File
return (string($file/FileName[1]), $file)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_ForExpr025

    | query result |

    query := ' 
        (: Name: ForExpr025 :)
(: Description: Redefine existing bound variable. Second binding overrides first :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $file in ($input-context//Folder)[1]/File, $file in ($input-context//Folder)[2]/File
return $file/FileName
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr025.xml')

!

test_ForExpr026

    | query result |

    query := ' 
        (: Name: ForExpr026 :)
(: Description: Missing "in" :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $file ($input-context//Folder)[1]/File
return $file/FileName
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_ForExpr027

    | query result |

    query := ' 
        (: Name: ForExpr027 :)
(: Description: Wrong order for positional variable :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $file in ($input-context//Folder)[1]/File at $pos
return (string($file/FileName[1]), $pos)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_ForExpr028

    | query result |

    query := ' 
        (: Name: ForExpr028 :)
(: Description: FLWOR expression iterating over constructed XML :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $num in ( <one/>, <two/>, <three/> )
return $num
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'fsx'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr028.xml')

!

test_ForExpr029

    | query result |

    query := ' 
        (: Name: ForExpr029 :)
(: Description: Embedded FLOWR expression that binds same variable on boths expressions (two for clauses) :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $var in (1,2) for $var in (2,2) return $var * $var
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr029.txt')

!

test_ForExpr030

    | query result |

    query := ' 
        (: Name: ForExpr030 :)
(: Description: Embedded FLOWR expression that binds same variable on boths expressions (use commas) :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)

for $var in (1,2), $var in (2,2) return $var * $var
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWORExpr/ForExpr/ForExpr030.txt')

!

test_ForExpr031

    | query result |

    query := ' 
        (: Name: ForExpr031 :)
(: Description: FLOWR expression that binds same variable on both ends of "at" :)

(: insert-start :)
declare variable $input-context external;
(: insert-end :)


for $var at $var in (1, 2) return $var * $var
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_1

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-1                              :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Syntactically invalid for-expression.        :)
(:*******************************************************:)
for $foo in 1, $bar in 2, $moo in 3, return 4
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_10

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-10                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A test whose essence is: `deep-equal((for $var in (1, 2, 3) return $var), (1, 2, 3))`. :)
(:*******************************************************:)
deep-equal((for $var in (1, 2, 3) return $var),
					  (1, 2, 3))
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-10.txt')

!

test_K_ForExprWithout_11

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-11                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A test whose essence is: `deep-equal((2, 2), (for $foo in (1, 1) return 1 + $foo))`. :)
(:*******************************************************:)
deep-equal((2, 2), (for $foo in (1, 1) return 1 + $foo))
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-11.txt')

!

test_K_ForExprWithout_12

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-12                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A test whose essence is: `4 eq (for $foo in 1, $bar in 2, $moo in 3 return 4)`. :)
(:*******************************************************:)
4 eq (for $foo in 1, $bar in 2, $moo in 3 return 4)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-12.txt')

!

test_K_ForExprWithout_13

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-13                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A test whose essence is: `3 eq (for $foo in 1 return for $bar in 2 return $bar + $foo)`. :)
(:*******************************************************:)
3 eq (for $foo in 1 return for $bar in 2 return $bar + $foo)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-13.txt')

!

test_K_ForExprWithout_14

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-14                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A test whose essence is: `3 eq (for $foo in 1 return for $bar in 2 return $bar + $foo)`. :)
(:*******************************************************:)
3 eq (for $foo in 1 return for $bar in 2 return $bar + $foo)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-14.txt')

!

test_K_ForExprWithout_15

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-15                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A test whose essence is: `3 eq (for $foo in 1, $foo in 3 return $foo)`. :)
(:*******************************************************:)
3 eq (for $foo in 1, $foo in 3 return $foo)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-15.txt')

!

test_K_ForExprWithout_16

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-16                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A test whose essence is: `8 eq (for $foo in 1, $foo in 3, $moo in 5 return $moo + $foo)`. :)
(:*******************************************************:)
8 eq (for $foo in 1, $foo in 3, $moo in 5 return $moo + $foo)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-16.txt')

!

test_K_ForExprWithout_17

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-17                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A test whose essence is: `6 eq (for $foo in 1, $foo in 3 return $foo + $foo)`. :)
(:*******************************************************:)
6 eq (for $foo in 1, $foo in 3 return $foo + $foo)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-17.txt')

!

test_K_ForExprWithout_18

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-18                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A for variable binding to the empty sequence. :)
(:*******************************************************:)
empty(for $var in () return current-time())
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-18.txt')

!

test_K_ForExprWithout_19

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-19                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A for variable binding to the empty sequence. :)
(:*******************************************************:)
empty(for $var in () return 1)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-19.txt')

!

test_K_ForExprWithout_2

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-2                              :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Syntactically invalid for-expression.        :)
(:*******************************************************:)
for in 1 return 4
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_20

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-20                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A for variable binding to the empty sequence, combined with value comparison. :)
(:*******************************************************:)
empty((for $var in () return current-time()))
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-20.txt')

!

test_K_ForExprWithout_21

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-21                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A for variable binding to the empty sequence, combined with value comparison. :)
(:*******************************************************:)
empty((for $var in () return 1) eq 1)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-21.txt')

!

test_K_ForExprWithout_22

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-22                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A for variable binding to the empty sequence, combined with value comparison. :)
(:*******************************************************:)
empty(for $var in subsequence((current-time(), 1), 4) return 1)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-22.txt')

!

test_K_ForExprWithout_23

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-23                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: An for-return expression which only is the binding variable. :)
(:*******************************************************:)
deep-equal(remove(for $var in (current-time(), 2, 3, 4) return $var, 1), (2, 3, 4))
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-23.txt')

!

test_K_ForExprWithout_24

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-24                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A test whose essence is: `(for $fn:name in (1, 1) return $fn:name) instance of xs:integer+`. :)
(:*******************************************************:)
(for $fn:name in (1, 1) return $fn:name) instance of xs:integer+
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-24.txt')

!

test_K_ForExprWithout_25

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-25                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A test whose essence is: `(for $xs:name in (1, 1) return $xs:name) instance of xs:integer+`. :)
(:*******************************************************:)
(for $xs:name in (1, 1) return $xs:name) instance of xs:integer+
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-25.txt')

!

test_K_ForExprWithout_26

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-26                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
$NOTEXIST
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_27

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-27                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
$PREFIXNOTEXIST:NOTEXIST
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_28

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-28                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
$xs:NOTEXIST
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_29

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-29                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
1 + $NOTEXIST
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_3

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-3                              :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Syntactically invalid for-expression.        :)
(:*******************************************************:)
for return 4
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_30

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-30                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
1 + $prefix:NOTEXIST
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_31

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-31                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
1 + $xs:NOTEXIST
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_32

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-32                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
$NOTEXIST + 1
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_33

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-33                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
$PREFIXNOTEXIST:NOTEXIST + 1
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_34

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-34                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
$xs:NOTEXIST + 1
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_35

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-35                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
for $foo in 1 return $NOTEXIST
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_36

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-36                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
for $foo in (1, 2, $foo) return 1
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_37

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-37                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
for $foo in (1, $foo, 3) return 1
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_38

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-38                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
for $foo in ($foo, 2, 3) return 1
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_39

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-39                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
for $foo in $foo return 1
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_4

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-4                              :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Syntactically invalid for-expression.        :)
(:*******************************************************:)
for $a in 1 satisfies 4
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_40

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-40                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
for $foo in 1 return 
						$bar + (for $bar in 2 return $bar)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_41

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-41                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
for $a in (1, 2, 3), $b in (1, 2, 3, $b)
return $a, $b
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_42

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-42                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
for $a in (1, 2), $b in (1, 2), $c in (1, 2) return 1, $a
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_43

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-43                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
for $a in (1, 2) return 1, $a
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_44

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-44                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
for $a in (1, 2), $b in (1, 2), $c in (1, 2) return 1, $b
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_45

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-45                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Variable which is not in scope.              :)
(:*******************************************************:)
for $a in (1, 2), $b in (1, 2), $c in (1, 2) return 1, $c
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_46

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-46                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Type check: $foo is of type xs:string, which cannot be added to xs:integer 1. :)
(:*******************************************************:)
for $foo in "foo" return 1 + $foo
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_47

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-47                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A variable"s for expression causes type error in a value comparison. :)
(:*******************************************************:)
for $foo in ("a string", "another one") return
							1 + subsequence($foo, 1, 1)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_ForExprWithout_48

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-48                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Parser test: variable names in a for expression that only exist of one character are valid. :)
(:*******************************************************:)
1 eq (for $a in 1 return $a)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-48.txt')

!

test_K_ForExprWithout_49

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-49                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: For-expression involving a simple return statement that in some implementations trigger optimization paths. :)
(:*******************************************************:)
deep-equal((for $fo in trace((1, 2, 3), "msg") return $fo), (1, 2, 3))
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-49.txt')

!

test_K_ForExprWithout_5

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-5                              :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A test whose essence is: `deep-equal(1 to 5, (for $i in (1,2,3,4,5) return $i))`. :)
(:*******************************************************:)
deep-equal(1 to 5, (for $i in (1,2,3,4,5) return $i))
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-5.txt')

!

test_K_ForExprWithout_50

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-50                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Ensure scanners/parsers accept small QNames in for-expressions. :)
(:*******************************************************:)
1 eq (for $a in 1 return $a)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-50.txt')

!

test_K_ForExprWithout_51

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-51                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Ensure scanners/parsers accept small QNames in for-expressions(#2). :)
(:*******************************************************:)
1 eq (for $xs:a in 1 return $xs:a)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-51.txt')

!

test_K_ForExprWithout_52

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-52                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A binding in a for-expression shadows global variables. :)
(:*******************************************************:)
declare variable $i := false();
declare variable $t := false();
deep-equal(
for $i in (true(), true()), $t in (true(), true()) return ($i, $t),
(true(), true(), true(), true(), true(), true(), true(), true()))
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-52.txt')

!

test_K_ForExprWithout_53

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-53                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Ensure the correct variable is used in an for-expression whose return sequence is only a variable reference. :)
(:*******************************************************:)

		   declare variable $my := 3;

		   (for $i in 1 return $my) eq 3
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-53.txt')

!

test_K_ForExprWithout_54

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-54                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Ensure the correct variable is used in an for-expression whose return sequence is only a variable reference(#2). :)
(:*******************************************************:)

		   declare variable $i := 3;

		   (for $i in 1 return $i) eq 1
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-54.txt')

!

test_K_ForExprWithout_55

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-55                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Apply fn:count() to a for-expression.        :)
(:*******************************************************:)
count(for $i in (1, 2, current-time()) return ($i, $i)) eq 6
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-55.txt')

!

test_K_ForExprWithout_56

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-56                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: Apply fn:count() to a for-expression(#2).    :)
(:*******************************************************:)
count(for $i in (1, 2, timezone-from-time(current-time())) return ($i, $i)) eq 6
or
count(for $i in (1, 2, timezone-from-time(current-time())) return ($i, $i)) eq 4

      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-56.txt')

!

test_K_ForExprWithout_6

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-6                              :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A test whose essence is: `3 eq (for $foo in 1 return 3)`. :)
(:*******************************************************:)
3 eq (for $foo in 1 return 3)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-6.txt')

!

test_K_ForExprWithout_7

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-7                              :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A test whose essence is: `1 eq (for $foo in 1 return $foo)`. :)
(:*******************************************************:)
1 eq (for $foo in 1 return $foo)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-7.txt')

!

test_K_ForExprWithout_8

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-8                              :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A test whose essence is: `2 eq (for $foo in 1 return $foo + 1)`. :)
(:*******************************************************:)
2 eq (for $foo in 1 return $foo + 1)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-8.txt')

!

test_K_ForExprWithout_9

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-ForExprWithout-9                              :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A test whose essence is: `3 eq (for $foo in 1 return for $foo in 3 return $foo)`. :)
(:*******************************************************:)
3 eq (for $foo in 1 return
					for $foo in 3 return $foo)
      
'.

    self xqtsBind: 'input-context' toContentsOf: 'emptydoc'.

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/ForExpr/ForExprWithout/K-ForExprWithout-9.txt')

! !

!XQTSForExprWithoutTests class methodsFor:'documentation'!

version_SVN
    ^ '$Id$'
! !