<?xml version="1.0" encoding="UTF-8"?>
<Mission xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="Tethys"
         xmlns:Units="Tethys/Units"
         xmlns:Universal="Tethys/Universal"
         xmlns:Guidance="Tethys/Guidance"
         xsi:schemaLocation="Tethys http://okeanids.mbari.org/tethys/Xml/Tethys.xsd
                             Tethys/Units http://okeanids.mbari.org/tethys/Xml/Units.xsd
                             Tethys/Universal http://okeanids.mbari.org/tethys/Xml/Universal.xsd
                             Tethys/Guidance http://okeanids.mbari.org/tethys/Xml/Guidance.xsd"
       Id="TestMission">

<!--
TEST_WITH_VALGRIND
TEST_CODE_START

passed = True

TEST_CODE_END
-->

    <DefineArg Name="Arr"><Units:count/><Value>[[1,2],[3,4]]</Value></DefineArg>

    <DefineArg Name="Count"><Units:count/><Value>0</Value></DefineArg>

    <DefineArg Name="Temperature"><Units:celsius/><Value>-40</Value></DefineArg>

    <Insert Filename="RegressionTests/InsertAssign.xml"/>

    <Syslog>Arr is <Arg Name="Arr"/><Units:count/></Syslog>

    <Syslog>Count is <Arg Name="Count"/><Units:count/></Syslog>

    <Assign><Sequence/><Arg Name="Count"/><Arg Name="Count"/><Add><Units:count/><Value>1</Value></Add></Assign>

    <Syslog>Count is <Arg Name="Count"/><Units:count/></Syslog>

    <Assign><Sequence/><Arg Name="Count"/><Arg Name="Count"/><Add><Units:count/><Value>1</Value></Add></Assign>

    <Syslog>Count is <Arg Name="Count"/><Units:count/></Syslog>

    <Aggregate Id="QuickDive">

        <Sequence/>

        <ReadData>
            <Universal:sea_water_temperature/>
        </ReadData>

        <Guidance:Pitch>
            <Sequence/>
            <Setting><Guidance:Pitch.depth/><Units:meter/><Value>5</Value></Setting>
        </Guidance:Pitch>

        <Assign><Sequence/><Arg Name="Temperature"/><Universal:sea_water_temperature/></Assign>

    </Aggregate>

    <Syslog>Temperature is <Arg Name="Temperature"/><Units:celsius/></Syslog>

    <Aggregate>

        <Sequence/>

        <Break><Arg Name="TestAssign:Count"/>
            <Eq><Units:count/><Value>5</Value></Eq>
        </Break>

        <Syslog Severity="Critical">TestAssign:Count is <Arg Name="TestAssign:Count"/><Units:count/>, not 5</Syslog>

    </Aggregate>

    <Assign><Sequence/><Arg Name="TestAssign:Count"/><Arg Name="TestAssign:Count"/><Add><Arg Name="Count"/></Add></Assign>

    <Aggregate>

        <Sequence/>

        <Break><Arg Name="TestAssign:Count"/>
            <Eq><Units:count/><Value>7</Value></Eq>
        </Break>

        <Syslog Severity="Critical">TestAssign:Count is <Arg Name="TestAssign:Count"/><Units:count/>, not 7</Syslog>

    </Aggregate>

    <Aggregate Id="TestAggregate">

        <Description>
            This aggregate declares an aggregate-level arg called Count. It
            hides the mission-level arg also called Count.
        </Description>

        <DefineArg Name="Count"><Units:count/><Value>8</Value></DefineArg>

        <Sequence Repeat="10"/>

        <Syslog>In TestAggregate, Count is <Arg Name="Count"/><Units:count/></Syslog>

        <Assign><Sequence/><Arg Name="Count"/><Arg Name="Count"/><Add><Arg Name="TestAssign:Count"/></Add></Assign>

        <Syslog>In TestAggregate, Count is <Arg Name="Count"/><Units:count/></Syslog>

    </Aggregate>

    <Syslog>Mission level Count is <Arg Name="Count"/><Units:count/></Syslog>

    <Syslog>TestAggregate:Count is <Arg Name="TestAggregate:Count"/><Units:count/></Syslog>

</Mission>
