<?xml version="1.0"?>
<!DOCTYPE dataset SYSTEM "dataset.dtd">
<!--
   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.
-->

<!-- dbunit DataSet for the TestDatabaseConfiguration test -->
<dataset>

    <table name="configuration">
        <column>key</column>
        <column>value</column>
        <row>
            <value>key1</value>
            <value>value1</value>
        </row>
        <row>
            <value>key2</value>
            <value>value2</value>
        </row>
        <row>
            <value>keyMulti</value>
            <value>a;b;c</value>
        </row>
    </table>

    <table name="configurations">
        <column>name</column>
        <column>key</column>
        <column>value</column>
        <row>
            <value>test</value>
            <value>key1</value>
            <value>value1</value>
        </row>
        <row>
            <value>test</value>
            <value>key2</value>
            <value>value2</value>
        </row>
    </table>
    <table name="configurationList">
		<column>id</column>
        <column>key</column>
        <column>value</column>
        <row>
			<value>1</value>
            <value>key3</value>
            <value>value1</value>
        </row>		
        <row>
			<value>2</value>
            <value>key3</value>
            <value>value2</value>
        </row>			
        <row>
			<value>3</value>			
            <value>key3</value>
            <value>value3</value>
        </row>			
    </table>	

</dataset>
