xquery/XQuery__XQTSLetExprWithoutTests.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 25 Jan 2016 16:35:43 +0000
changeset 298 9696f76605bd
parent 296 ea3dbc023c80
permissions -rw-r--r--
Added C:\MINGW\MSYS\1.0\bin to PATH when building expat. Some systems have it installed there (such as SWING Jenkins servers)

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

"{ NameSpace: XQuery }"

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


!XQTSLetExprWithoutTests methodsFor:'tests'!

test_K2_LetExprWithout_1

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K2-LetExprWithout-1                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-08-04T17:13:26Z                            :)
(: Purpose: A test whose essence is: `deep-equal((<b/>, <b/>, <b/>, <b/>), (for $v1 in (1, 2, 3, 4) let $v2 := <b/> return ($v2))/.)`. :)
(:*******************************************************:)
deep-equal((<b/>, <b/>, <b/>, <b/>),
           (for $v1 in (1, 2, 3, 4)
            let $v2 := <b/>
            return ($v2))/.)
      
'.

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

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/LetExpr/LetExprWithout/K2-LetExprWithout-1.txt')

!

test_K2_LetExprWithout_2

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K2-LetExprWithout-2                             :)
(: Written by: Frans Englich                             :)
(: Date: 2006-08-04T17:13:26Z                            :)
(: Purpose: A test whose essence is: `deep-equal((<b/>, <b/>, <b/>, <b/>), (for $v1 in (1, 2, 3, 4) let $v2 := <b/> return ($v2)))`. :)
(:*******************************************************:)
deep-equal((<b/>, <b/>, <b/>, <b/>),
            (for $v1 in (1, 2, 3, 4)
             let $v2 := <b/>
             return ($v2)))
      
'.

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

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/LetExpr/LetExprWithout/K2-LetExprWithout-2.txt')

!

test_K_LetExprWithout_1

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-LetExprWithout-1                              :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A "let" variable is out-of-scope due to FLWOR has higher precendence than the comma operator. :)
(:*******************************************************:)
let $i := 5, $j := 20 * $i
return $i, $j
      
'.

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

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_LetExprWithout_2

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-LetExprWithout-2                              :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A value in a "let" variable cannot be assigned to with "=", it must be ":=". :)
(:*******************************************************:)
let $i = 5 return 3
      
'.

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

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_LetExprWithout_3

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: K-LetExprWithout-3                              :)
(: Written by: Frans Englich                             :)
(: Date: 2006-10-05T18:29:37+02:00                       :)
(: Purpose: A value in a "let" variable cannot be assigned to with "in", it must be ":=". :)
(:*******************************************************:)
let $i in 5 return 3
      
'.

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

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_K_LetExprWithout_4

    | query result |

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

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

    
    result  := interpreter evaluate: query.
    self
        assert: (self xqtsResultTextFromResult: result)
               = (self xqtsResultTextFromFile:
'Expressions/FLWOR/LetExpr/LetExprWithout/K-LetExprWithout-4.txt')

!

test_LetExpr001

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr001.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : Assign a simple string using let :)
(:*******************************************************:)
let $x := "92233720368547758"
return $x

      
'.

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

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

!

test_LetExpr002

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr002.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : Assign a simple integer using let :)
(:*******************************************************:)
let $x := 92233720368547758
return $x

      
'.

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

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

!

test_LetExpr003

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr003.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : Use an arithmetic operator with let :)
(:*******************************************************:)
let $x := 92233720368547758+1
return $x

      
'.

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

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

!

test_LetExpr004

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr004.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : Use xs:long(upper bound) :)
(:*******************************************************:)
let $x := xs:long("92233720368547758")
return $x

      
'.

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

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

!

test_LetExpr005

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr005.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : Use xs:long(lower bound) +1  :)
(:*******************************************************:)
let $x := xs:long("-92233720368547758")+1
return $x

      
'.

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

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

!

test_LetExpr006

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr006.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : Use xs:double(upper bound) :)
(:*******************************************************:)
let $x := xs:double("1.7976931348623157E308")
return $x

      
'.

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

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

!

test_LetExpr007

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr007.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : A node with an expression in curly braces :)
(:*******************************************************:)
let $x:=<a>{1+1}</a>
return $x

      
'.

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

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

!

test_LetExpr008

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr008.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : More than one variable cross referencing compatible values :)
(:*******************************************************:)
let $x:=1, $y:=$x+1
return $x

      
'.

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

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

!

test_LetExpr009

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr009.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : More than one variable cross referencing compatible values :)
(:*******************************************************:)
let $x:=1, $y:=<a>{$x+1}</a>
return $y

      
'.

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

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

!

test_LetExpr010

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr010.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : More than one variable cross referencing incompatible values :)
(:*******************************************************:)
let $x:=(1,2,3), $y:=$x+1
return $y

      
'.

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

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_LetExpr011

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr011.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : Use sequences with filter expressions :)
(:*******************************************************:)
let $x :=(1 to 100)[. mod 5 eq 0]
return $x

      
'.

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

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

!

test_LetExpr012

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr012.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : Use sequences with filter expressions with more than one variable :)
(:*******************************************************:)
let $x :=(1 to 100)[. mod 5 eq 0], $y := $x[. mod 10 eq 0]
return $y

      
'.

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

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

!

test_LetExpr013

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr013.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : Use a function in the let :)
(:*******************************************************:)
let $x:="hello", $y:=concat($x," there")
return $y

      
'.

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

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

!

test_LetExpr014

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr014.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : Use incompatible types in let :)
(:*******************************************************:)
let $x := "1", $y := $x+1
return $y

      
'.

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

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_LetExpr015

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr015.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : Use a sequence of different types of scalars :)
(:*******************************************************:)
let $x := (0,0.1e-1,2.0,"a","cat","",true())
return $x

      
'.

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

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

!

test_LetExpr016

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr016.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : Use a sequence of nodes :)
(:*******************************************************:)
let $a := (<elem1/>, <elem2/>, <elem3 att="test"/>)
return <root>{$a}</root>

      
'.

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

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

!

test_LetExpr017

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr017.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : Use a sequence with step :)
(:*******************************************************:)
let $x := (<a> <b> <c> 123 </c> </b> </a>)
return $x

      
'.

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

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

!

test_LetExpr018

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr018.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : Use a sequence of different values:)
(:*******************************************************:)
let $x := (0,0.1e-1,2.0,"a","cat","",true(), ("<a> <b> <c> 123 </c> </b> </a>")/a/b)
return $x

      
'.

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

     

    self shouldRaiseError: [interpreter evaluate: query].
!

test_LetExpr019

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr019.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : combine two "Let" exprs in one "Return" :)
(:*******************************************************:)
let $a := <elem/>
let $b := <elem2/>
return ($a,$b)

      
'.

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

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

!

test_LetExpr020

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr020.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : Use three variables  :)
(:*******************************************************:)
let $a := 1 
let $b := $a
let $c := $a+$b 
return ($c)

      
'.

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

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

!

test_LetExpr021

    | query result |

    query := ' 
        (:*******************************************************:)
(: Test: LetExpr021.xq          :)
(: Written By: Ravindranath Chennoju                     :)
(: Date: Wed May 11 13:55:57 2005                        :)
(: Purpose : Refer to an undefined variable  :)
(:*******************************************************:)
let $a := $b 
return ($a)

      
'.

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

     

    self shouldRaiseError: [interpreter evaluate: query].
! !

!XQTSLetExprWithoutTests class methodsFor:'documentation'!

version_SVN
    ^ '$Id$'
! !