/** \file
 *
 *  Contains unit tests for the ElementURI class
 *
 *  Copyright (c) 2007,2008,2009 MBARI
 *  MBARI Proprietary Information.  All Rights Reserved
 */

#ifndef _ELEMENTURI_TEST_H_
#define _ELEMENTURI_TEST_H_


#include "ElementURI.h"
#include "io/StrIOStream.h"

#include <cxxtest/TestSuite.h>

/**
 *  Unit tests for ElementURI class
 *
 *  \ingroup data
 */
class ElementURI_Test : public CxxTest::TestSuite
{
public:

    /// Test ElementURI::Read
    void testRead( void )
    {
        Str str( " code=0006 elementURI=\"height_above_sea_floor\"\n" );
        StrIOStream strIOStream( str );

        ElementURI* elementURI = ElementURI::Read( strIOStream );
        TS_ASSERT( NULL != elementURI );
        if( NULL != elementURI )
        {
            TS_ASSERT_EQUALS( elementURI->getCode(), 0x0006 );
            TS_ASSERT_SAME_DATA( elementURI->cStr(), "height_above_sea_floor", 23 );
            TS_ASSERT( elementURI->isUniversal() );
            delete elementURI;
        }

        str = " code=01CE elementURI=\"Batt_Ocean_Server.BattTemp_7\"";
        strIOStream.rewind();

        elementURI = ElementURI::Read( strIOStream );
        TS_ASSERT( NULL != elementURI );
        if( NULL != elementURI )
        {
            TS_ASSERT_EQUALS( elementURI->getCode(), 0x01CE );
            TS_ASSERT_SAME_DATA( elementURI->cStr(), "Batt_Ocean_Server.BattTemp_7", 29 );
            TS_ASSERT( !elementURI->isUniversal() );
            delete elementURI;
        }

    }

};

#endif // _ELEMENTURI_TEST_H
