<?xml version="1.0"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<test:suite xmlns:j="jelly:core" xmlns:test="jelly:junit" xmlns:sql="jelly:sql">

    <test:case name="testResultSet">
    
      <sql:resultSet var="results">
        <sql:row id="abc" name="James"/>
        <sql:row id="def" name="Joe"/>
      </sql:resultSet>
    
        <test:assert test="${results != null}">created a results object</test:assert>        
        
        <test:assert test="${results.rowCount == 2}">contains 2 rows</test:assert>

        <test:assertEquals expected="abc" actual="${results.rows[0].id}"/>
        <test:assertEquals expected="def" actual="${results.rows[1].id}"/>
        
        <test:assertEquals expected="James" actual="${results.rows[0].name}"/>
        <test:assertEquals expected="Joe" actual="${results.rows[1].name}"/>
        
    </test:case>

</test:suite>
